Restore UI notifications and -walletnotify behavior for block conflicted transactions#18325
issue
jnewbery
openend this issue on
March 11, 2020
jnewbery
commented at 10:46 pm on March 11, 2020:
member
UI notifications and the -walletnotify process should be triggered for wallet transactions that are conflicted out of the mempool by a newly connected block.
We broke this in #9240, reported it in #9479 and fixed it in #9371.
We inadvertently broke it again in #16624 (Sep 2019 commit 7e89994) by removing the call to SyncTransaction() for transactions that are conflicted out of the mempool when a block is connected.
I think the fix is just to restore the call to SyncTransaction() for transactions that are conflicted out of the mempool. Could we also call SyncTransaction() for any transaction that is removed from the mempool (and fires TransactionRemovedFromMempool)?
h/t to @ryanofsky for spotting this.
@ariard - any thoughts about just reverting 7e89994?
jnewbery added the label
Bug
on Mar 11, 2020
ryanofsky
commented at 9:20 pm on March 12, 2020:
member
@ariard - any thoughts about just reverting 7e89994?
I guess this isn’t possible if we merge #17477, but as the PR description suggests, “Now that we have a TransactionRemovedFromMempool callback”, maybe we would call SyncTransaction from there
jnewbery
commented at 9:32 pm on March 12, 2020:
member
maybe we would call SyncTransaction from there
Yes, but probably just for CONFLICT transactions, to match previous behavior. We’ve never notified for transactions removed from the mempool for expiry, replacement, etc.
ariard
commented at 1:22 am on March 16, 2020:
member
@jnewbery if I open a new PR to revert what do you think will get merged first between it and #17477+new commit calling SyncTransaction ? I’ll add the test long-time promised for this case :)
MarcoFalke added this to the milestone 0.20.0
on Mar 16, 2020
MarcoFalke
commented at 6:28 pm on March 16, 2020:
member
Instead of breaking this every 4 years, a test might be good to avoid it. If nobody beats me to it, I might write one.
Also, this seems like a bugfix that should go into 0.20.0?
jnewbery
commented at 6:36 pm on March 17, 2020:
member
I don’t know whether #17477 can go in now that we’re in feature freeze, but as @MarcoFalke says, fixing this bug could still get in for 0.20.
I’m happy to rebase 17477 on a fix for this.
Instead of breaking this every 4 years, a test might be good to avoid it. If nobody beats me to it, I might write one.
Concept ACK!
ryanofsky
commented at 4:46 pm on March 31, 2020:
member
We inadvertently broke it again in #16624 (Sep 2019 commit 7e89994)
In terms of releases, 0.19 was the first version to include that commit, so the behavior’s been broken since then and maybe gone unnoticed.
ariard
commented at 2:32 am on April 1, 2020:
member
Likely we need to pass the eviction reason in TransactionsRemovedFromMempool to dissociate between EXPIRY,REORG and CONFLICT on the wallet side.
UI notifications and the -walletnotify process should be triggered for wallet transactions that are conflicted out of the mempool by a newly connected block.
@jnewbery conflicts should already be notified when they concern a transaction or its children already tracked by the wallet (either spending from us, or paying us). The broken case IIRC is about a non-connected tx, unconfirmed txB is paying us from an unconfirmed txA which doesn’t involve us. If txA gets conflicted we won’t see it in BlockConnected. Or did you see another uncovered case by testing ?
ryanofsky
commented at 2:39 am on April 1, 2020:
member
conflicts should already be notified when they concern a transaction or its children already tracked by the wallet (either spending from us, or paying us)
Could you explain this more? Where would this happen if TransactionsRemovedFromMempool doesn’t call SyncTransaction?
ryanofsky
commented at 2:43 am on April 1, 2020:
member
I guess the MarkConflicted loop in AddToWalletIfInvolvingMe could trigger this, but it doesn’t seem to currently do external notifications.
jnewbery
commented at 2:01 pm on April 2, 2020:
member
conflicts should already be notified when they concern a transaction or its children already tracked by the wallet (either spending from us, or paying us)
ariard
commented at 11:52 pm on April 11, 2020:
member
@jnewbery Ah yes I meaned CWalletTx::Confirmation should be alright thanks to the MarkConflicted but we care about UI notifications here. See #18600 for further discussion :)
ryanofsky referenced this in commit
2c1c162cd5
on May 5, 2020
ryanofsky referenced this in commit
f963a68051
on May 13, 2020
laanwj referenced this in commit
99c03728c0
on May 13, 2020
sidhujag referenced this in commit
a84dd1fa2e
on May 14, 2020
fanquake referenced this in commit
9c193e4d0a
on May 14, 2020
MarcoFalke added the label
Wallet
on May 14, 2020
fanquake referenced this in commit
ed0afe8c1f
on May 15, 2020
MarcoFalke removed this from the milestone 0.20.0
on May 15, 2020
MarcoFalke added this to the milestone 0.20.1
on May 15, 2020
MarcoFalke
commented at 12:03 pm on May 15, 2020:
member
Sep 2019 commit 7e89994
So this is broken in all 0.19.* releases? Given that the bugfix is still “waiting for author”, I went ahead and moved this back to 0.20.1
ryanofsky referenced this in commit
261ccf730c
on May 15, 2020
ryanofsky
commented at 1:50 pm on May 15, 2020:
member
Yes, behavior’s been the same since #16624. I implemented a minimal fix in #18982 to just restore previous behavior while #18600 explores better approaches.
ryanofsky referenced this in commit
58ec22284e
on May 15, 2020
ryanofsky referenced this in commit
90118ec54f
on May 15, 2020
ryanofsky referenced this in commit
8242b093d3
on May 21, 2020
ryanofsky referenced this in commit
b604c5c8b5
on May 22, 2020
MarcoFalke closed this
on Jun 2, 2020
MarcoFalke referenced this in commit
3657aee2d2
on Jun 2, 2020
sidhujag referenced this in commit
6007f5d865
on Jun 3, 2020
ComputerCraftr referenced this in commit
6178216494
on Jun 5, 2020
fanquake referenced this in commit
654420d6df
on Jun 9, 2020
luke-jr referenced this in commit
32d773bfc1
on Jun 9, 2020
ComputerCraftr referenced this in commit
48245eb566
on Jun 10, 2020
ComputerCraftr referenced this in commit
077eb62f7f
on Jun 10, 2020
stackman27 referenced this in commit
447f036161
on Jun 26, 2020
metalicjames referenced this in commit
09af10dec5
on Aug 5, 2020
backpacker69 referenced this in commit
2463b02ccf
on Sep 8, 2020
Bushstar referenced this in commit
4770dc9d56
on Oct 21, 2020
Platinumwrist referenced this in commit
05e2740d92
on Oct 25, 2020
janus referenced this in commit
f690d20f65
on Nov 15, 2020
janus referenced this in commit
6fc95ef892
on Nov 15, 2020
backpacker69 referenced this in commit
364a2d33dd
on Mar 28, 2021
deadalnix referenced this in commit
250a0d5b25
on Aug 30, 2021
This is a metadata mirror of the GitHub repository
bitcoin/bitcoin.
This site is not affiliated with GitHub.
Content is generated from a GitHub metadata backup.
generated: 2024-12-18 12:12 UTC
This site is hosted by @0xB10C More mirrored repositories can be found on mirror.b10c.me