#35480 doc: document ZMQ notification behavior during reorgs and evictions
| Reviewability | Reviews | Agreement | Size | ||||
|---|---|---|---|---|---|---|---|
| #35480 doc: document ZMQ notification behavior during reorgs and evictions | Waiting on author | 0 | Neutral | 15 + 59 tests | |||
|
|
|
|
| |||
Reviewability: ReadyStalePaused Agreement: StrongPositivePositive w/ caveatsNeutralMildDisputedBlockedCrickets Reviews: current code-review ACKs, then (+stale ACKs) and -NACKs; greener = more ACKs. Size: lines added or modified outside tests, then in tests; greener = smaller. | |||||||
Goal
Expands `doc/zmq.md` to document ZMQ notification behavior during chain reorganizations and mempool evictions, including re-publication on `rawtx`/`hashtx`, suppression under assumeutxo background validation, and mempool removal reasons under `sequence`. It also adds a functional test verifying the ordering of `D`, `R`, and `C` events on the `sequence` topic during a reorg.
Problem: ZMQ behavior during chain reorganizations and mempool evictions was implemented in the source code but undocumented, forcing external client developers to deduce notification guarantees directly from C++ internals.
Reviewability
Paused · Waiting on author
Open objections from sedited with no author reply for 23 days; review would repeat what has been asked.
Waiting on (from the thread read):
- author: respond to sedited's suggestion to drop the reorg test 2026-10-09
Agreement
Neutral
objections settled, nobody has spoken for the PR
Thread notes: sedited dropped the requirement for a reorg test upon reviewing it, noting existing sequence tests already verify that 'R' arrives before 'C', and suggested dropping the newly added test.
Objections, suggestions, and questions:
| Reviewer | Type | Harm, request, or question | Status | Must be | Author replied | Quote |
|---|---|---|---|---|---|---|
| sedited (member) | suggestion, style | collapse and condense the explanation of transaction removal notifications | open | answered | no | 2026-07-24: 'I would suggest collapsing this into:' |
| sedited (member) | objection, correctness | documenting notification ordering guarantees without automated test coverage to ensure the behavior holds | accepted · fix pushed · sedited dropped the requirement for a new reorg test, noting existing tests already check that 'R' arrives before 'C' | changed | no | 2026-07-24: 'I would only claim this in the docs, if there is a corresponding functional test exercising this.' Status from: 2026-10-09: sedited: 'I don't think this happening during a re-org is different enough to warrant a test. Maybe this should be dropped again?' |
| sedited (member) | suggestion, approach | drop the reorg functional test since existing sequence tests already check that 'R' arrives before 'C' | open | answered | no | 2026-10-09: 'I don't think this happening during a re-org is different enough to warrant a test. Maybe this should be dropped again?' |
Participants:
- sedited (member, objection, 3 statements 2026-07-24 to 2026-10-09): objected to documenting ordering without tests (later dropped); suggested simpler wording and dropping the reorg test
Files
59 lines under test/bench/ci.
- test/functional/interface_zmq.py +59/-0
- doc/zmq.md +15/-0
Card
The short text the ranking pass compares across PRs.
This PR expands doc/zmq.md to explain node notification behavior during chain reorgs and mempool evictions, and adds a functional test in test/functional/interface_zmq.py to verify reorg event ordering on the sequence topic. It clarifies that rawtx and hashtx re-publish transactions from disconnected blocks, suppresses them for assumeutxo background validation, and documents the D-R-C notification order. The documentation addresses part of open issue #14278. Review is ready, with the author having pushed the test requested by sedited.
Data
thread read through 2026-10-09 (3 statements), head 112a171179
labels: Docs
Categories
Documentation
P3 · cleanup
The PR documents previously undocumented ZMQ notification semantics during chain reorganizations and mempool evictions in doc/zmq.md and adds functional test verification. External client developers previously had to deduce notification guarantees directly from C++ source code, providing clear and worthwhile value for downstream integrations.
Membership: Labeled Docs and updates doc/zmq.md with documentation of ZMQ reorg and mempool eviction behavior.
Factors: security/stability 0, bug 0, performance 0, user value 1, leverage 0