Conversation
This comment was marked as resolved.
This comment was marked as resolved.
This comment was marked as resolved.
This comment was marked as resolved.
This comment was marked as resolved.
This comment was marked as resolved.
3b1f49f to
2f6d7c8
Compare
2f6d7c8 to
0bc67a9
Compare
0bc67a9 to
8e707af
Compare
|
I found three issues that should be addressed before merge:
|
|
I addressed all three findings in
The initial, RBF, Bitcoind, and inactive-lineage regression sources are included. No public API or generated binding changed. |
ben-kaufman
left a comment
There was a problem hiding this comment.
The earlier outcome-retention finding remains unresolved: #113 (comment).
| confirmation_time, | ||
| details, | ||
| }; | ||
| event_queue.add_event_with_idempotency_key(event, txid).await.map_err(|e| { |
There was a problem hiding this comment.
This uses the same txid key as received events. If a received event is queued but its delivery-marker write fails, the key survives acknowledgement. If the transaction confirms before that marker is retried, this call suppresses the confirmation and then retires the marker, so the confirmation is lost. Could we key deduplication by the event transition and cover received-marker failure followed by confirmation?
| ) | ||
| .unwrap(); | ||
| node.wallet.finish_pending_sync(false).unwrap(); | ||
| concrete_store.fail_next_write_in(crate::io::ONCHAIN_BROADCAST_EVENT_PRIMARY_NAMESPACE); |
There was a problem hiding this comment.
This arms a write failure, but apply_mempool_txs has already removed the single-transaction intent and no dispatch lease is held. Delivery therefore removes the marker, so the test gets Ok(()) instead of Err(PersistenceFailed) and fails before its restart assertions. Could we inject a remove failure here, or hold a dispatch lease to exercise the write path?
| confirmation_time, | ||
| details, | ||
| }; | ||
| event_queue.add_event_with_idempotency_key(event, txid).await.map_err(|e| { |
There was a problem hiding this comment.
This removes the last production call to add_event_if_absent, leaving a dead-code warning at src/event.rs:1022. Compilation fails with -D warnings, which the stable Rust workflow uses. Could we remove the unused helper or make it test-only?
Closes #112
Summary
Pending,Accepted, andAbandonedbroadcast outcomes by any tracked lineage transaction ID.0.7.0-rc.67.Preview
N/A — no user-visible changes.
QA Notes
rebroadcast_transactionfor that exact ID; they must not create a second payment.broadcast_outcomeaccepts any lineage transaction ID and returns the canonical active or terminal transaction ID plus the complete lineage.BroadcastOutcomeStatus::Acceptedproves backend acceptance.Pending, an unknown result, and a query failure remain unresolved.acknowledge_broadcast_outcomeremoves one root-keyed terminal record and every lineage alias after downstream handling is durable. It fails while the lineage remains active and is idempotent after removal.list_pending_broadcastsreturns every unresolved transaction and its full RBF lineage.abandon_pending_broadcastis valid only after an independent source proves every lineage member absent from mempool and chain and no other process can rebroadcast it.NodeErrorcases no longer carry the legacy generatedmessagevalue. The four broadcast-result cases carrytxid.txid.Validation
c7c6ed9bd54f1e06308e11e5d1ac6b8e71ac6bb9; local HEAD, upstream, and PR head match.mainat26664614696e82dc10e10f5c2042cc9ac1bb8f5e; the branch is zero commits behind and GitHub reports it mergeable.cargo fmtcompleted before commit.6b60fe0binding generation produced the Swift, Kotlin Android, Kotlin JVM, and Python sources and artifacts. This Rust-only review fix does not change generated API source; its binary artifacts were not rebuilt.549f7a962f7b4262ef77b7e65abd6fe588be87801bee35da6295571c141f183b;Package.swiftcontains that value.c7c6ed9per owner direction.e1b0667and does not certify this outcome-API delta.Consumer contract
BroadcastOutcomeStatus.PENDING|ACCEPTED|ABANDONED,BroadcastOutcome(status, txid, lineage),broadcastOutcome(txid), andacknowledgeBroadcastOutcome(txid).BroadcastOutcomeStatus.pending|accepted|abandoned,BroadcastOutcome(status:txid:lineage:),broadcastOutcome(txid:), andacknowledgeBroadcastOutcome(txid:).com.synonym:ldk-node-android:0.7.0-rc.67.Release
07cf71e2a44ee901c0cb2c5d1062cc72fbb9fbbd56fb341a6ca1b531ec316219does not contain this API and is superseded.