Skip to content

Commit 4d8accf

Browse files
committedMar 21, 2025
Handle persistence failure in event_handled from Node
1 parent f0338d1 commit 4d8accf

File tree

3 files changed

+14
-13
lines changed

3 files changed

+14
-13
lines changed
 

‎bindings/ldk_node.udl

+1
Original file line numberDiff line numberDiff line change
@@ -104,6 +104,7 @@ interface Node {
104104
Event wait_next_event();
105105
[Async]
106106
Event next_event_async();
107+
[Throws=NodeError]
107108
void event_handled();
108109
PublicKey node_id();
109110
sequence<SocketAddress>? listening_addresses();

‎src/lib.rs

+4-4
Original file line numberDiff line numberDiff line change
@@ -781,15 +781,15 @@ impl Node {
781781
/// Confirm the last retrieved event handled.
782782
///
783783
/// **Note:** This **MUST** be called after each event has been handled.
784-
pub fn event_handled(&self) {
785-
self.event_queue.event_handled().unwrap_or_else(|e| {
784+
pub fn event_handled(&self) -> Result<(), Error> {
785+
self.event_queue.event_handled().map_err(|e| {
786786
log_error!(
787787
self.logger,
788788
"Couldn't mark event handled due to persistence failure: {}",
789789
e
790790
);
791-
panic!("Couldn't mark event handled due to persistence failure");
792-
});
791+
e
792+
})
793793
}
794794

795795
/// Returns our own node id

‎tests/common/mod.rs

+9-9
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ macro_rules! expect_event {
5353
match $node.wait_next_event() {
5454
ref e @ Event::$event_type { .. } => {
5555
println!("{} got event {:?}", $node.node_id(), e);
56-
$node.event_handled();
56+
assert!($node.event_handled().is_ok());
5757
},
5858
ref e => {
5959
panic!("{} got unexpected event!: {:?}", std::stringify!($node), e);
@@ -70,7 +70,7 @@ macro_rules! expect_channel_pending_event {
7070
ref e @ Event::ChannelPending { funding_txo, counterparty_node_id, .. } => {
7171
println!("{} got event {:?}", $node.node_id(), e);
7272
assert_eq!(counterparty_node_id, $counterparty_node_id);
73-
$node.event_handled();
73+
$node.event_handled().unwrap();
7474
funding_txo
7575
},
7676
ref e => {
@@ -88,7 +88,7 @@ macro_rules! expect_channel_ready_event {
8888
ref e @ Event::ChannelReady { user_channel_id, counterparty_node_id, .. } => {
8989
println!("{} got event {:?}", $node.node_id(), e);
9090
assert_eq!(counterparty_node_id, Some($counterparty_node_id));
91-
$node.event_handled();
91+
$node.event_handled().unwrap();
9292
user_channel_id
9393
},
9494
ref e => {
@@ -110,7 +110,7 @@ macro_rules! expect_payment_received_event {
110110
if !matches!(payment.kind, PaymentKind::Onchain { .. }) {
111111
assert_eq!(payment.fee_paid_msat, None);
112112
}
113-
$node.event_handled();
113+
$node.event_handled().unwrap();
114114
payment_id
115115
},
116116
ref e => {
@@ -135,7 +135,7 @@ macro_rules! expect_payment_claimable_event {
135135
assert_eq!(payment_hash, $payment_hash);
136136
assert_eq!(payment_id, $payment_id);
137137
assert_eq!(claimable_amount_msat, $claimable_amount_msat);
138-
$node.event_handled();
138+
$node.event_handled().unwrap();
139139
claimable_amount_msat
140140
},
141141
ref e => {
@@ -158,7 +158,7 @@ macro_rules! expect_payment_successful_event {
158158
let payment = $node.payment(&$payment_id.unwrap()).unwrap();
159159
assert_eq!(payment.fee_paid_msat, fee_paid_msat);
160160
assert_eq!(payment_id, $payment_id);
161-
$node.event_handled();
161+
$node.event_handled().unwrap();
162162
},
163163
ref e => {
164164
panic!("{} got unexpected event!: {:?}", std::stringify!(node_b), e);
@@ -707,7 +707,7 @@ pub(crate) fn do_channel_full_cycle<E: ElectrumApi>(
707707
let received_amount = match node_b.wait_next_event() {
708708
ref e @ Event::PaymentReceived { amount_msat, .. } => {
709709
println!("{} got event {:?}", std::stringify!(node_b), e);
710-
node_b.event_handled();
710+
node_b.event_handled().unwrap();
711711
amount_msat
712712
},
713713
ref e => {
@@ -745,7 +745,7 @@ pub(crate) fn do_channel_full_cycle<E: ElectrumApi>(
745745
let received_amount = match node_b.wait_next_event() {
746746
ref e @ Event::PaymentReceived { amount_msat, .. } => {
747747
println!("{} got event {:?}", std::stringify!(node_b), e);
748-
node_b.event_handled();
748+
node_b.event_handled().unwrap();
749749
amount_msat
750750
},
751751
ref e => {
@@ -868,7 +868,7 @@ pub(crate) fn do_channel_full_cycle<E: ElectrumApi>(
868868
let (received_keysend_amount, received_custom_records) = match next_event {
869869
ref e @ Event::PaymentReceived { amount_msat, ref custom_records, .. } => {
870870
println!("{} got event {:?}", std::stringify!(node_b), e);
871-
node_b.event_handled();
871+
node_b.event_handled().unwrap();
872872
(amount_msat, custom_records)
873873
},
874874
ref e => {

0 commit comments

Comments
 (0)