chain: remove redundant Add(tx)
in zmq event
#877
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This commit removes adding tx to mempool when received from
rawtx
zmq to prevent the same tx gets to be added multiple times since it will be notified multiple times. This also means we need to send the new tx inmempoolPoller
to make sure the subscriber won't miss the event.In details, when we subscribe to an input spend via
NotifySpent
, we do two things,rescanUpdate
,Meanwhile,
filterTx
has two relevant logic steps that,rescanUpdate
.In our second good case, if the tx is received via
rawtx
, then it will be sent tofilterTx
, but not registered viarescanUpdate
. However, as long as the mempool poller also receives it and saves it to the local mempool, by the time we subscribe it, it will be found via step 2 inNotifySpent
.As in our bad case, when the tx is processed by
filterTx
, it won't be notified due to it's not registered, so not relevant. Then we subscribe, which registers it. However, by the time the mempool sees the tx and sends it tofilterTx
again, it will be ignored becausefilterTx
has already seen it.