-
Notifications
You must be signed in to change notification settings - Fork 305
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
excludes node's pubkey from bloom filter of pruned origins #2990
Conversation
Bloom filter of pruned origins can return false positive for a node's own pubkey but a node should always be able to push its own values to other nodes in the cluster.
// Bloom filter can return false positive for origin == pubkey | ||
// but a node should always be able to push its own values. | ||
!bloom_filter.contains(origin) | ||
|| (pubkey_eq_origin && &pubkey != node) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
not sure I understand this check:
&pubkey != node
When would a node have its own pubkey as the value in the PushActiveSetEntry
index map?
Is it possible for a node to add itself to its PushActiveSet
? Even if it is, wouldn't we not want to send the message to ourselves if &pubkey == node
?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
When would a node have its own pubkey as the value in the PushActiveSetEntry index map?
The code here does not have any guarantees that pubkey != node
.
So we need to check here not to send our own messages back to ourselves.
Is it possible for a node to add itself to its PushActiveSet?
We exclude that here:
https://github.com/anza-xyz/agave/blob/ce158213f/gossip/src/crds_gossip.rs#L352
but nonetheless the code here does not need to rely on that presumption.
Even if it is, wouldn't we not want to send the message to ourselves if &pubkey == node?
not sure I understand this.
&& &pubkey != node
prevents sending messages to ourselves.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
ok that makes sense.
and ya you're right I screwed up what we wanted to return in the filter.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
lgtm!
Backports to the beta branch are to be avoided unless absolutely necessary for fixing bugs, security issues, and perf regressions. Changes intended for backport should be structured such that a minimum effective diff can be committed separately from any refactoring, plumbing, cleanup, etc that are not strictly necessary to achieve the goal. Any of the latter should go only into master and ride the normal stabilization schedule. Exceptions include CI/metrics changes, CLI improvements and documentation updates on a case by case basis. |
Bloom filter of pruned origins can return false positive for a node's own pubkey but a node should always be able to push its own values to other nodes in the cluster. (cherry picked from commit bce28c0)
Bloom filter of pruned origins can return false positive for a node's own pubkey but a node should always be able to push its own values to other nodes in the cluster. (cherry picked from commit bce28c0)
…kport of #2990) (#3015) excludes node's pubkey from bloom filter of pruned origins (#2990) Bloom filter of pruned origins can return false positive for a node's own pubkey but a node should always be able to push its own values to other nodes in the cluster. (cherry picked from commit bce28c0) Co-authored-by: behzad nouri <[email protected]>
…2990) Bloom filter of pruned origins can return false positive for a node's own pubkey but a node should always be able to push its own values to other nodes in the cluster.
Problem
Bloom filter of pruned origins can return false positive for a node's own pubkey but a node should always be able to push its own values to other nodes in the cluster.
Summary of Changes
Excludes node's pubkey from bloom filter of pruned origins