Skip to content

Commit aa29ee4

Browse files
Remove all_paths_failed from PaymentPathFailed
This field was previous useful in manual retries for users to know when all paths of a payment have failed and it is safe to retry. Now that we support automatic retries in ChannelManager and no longer support manual retries, the field is no longer useful. We can delete the field from deserialization because it's optional.
1 parent 04dbd3f commit aa29ee4

File tree

7 files changed

+11
-28
lines changed

7 files changed

+11
-28
lines changed

lightning-background-processor/src/lib.rs

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1365,7 +1365,6 @@ mod tests {
13651365
payment_hash: PaymentHash([42; 32]),
13661366
payment_failed_permanently: false,
13671367
network_update: None,
1368-
all_paths_failed: true,
13691368
path: path.clone(),
13701369
short_channel_id: Some(scored_scid),
13711370
retry: None,
@@ -1386,7 +1385,6 @@ mod tests {
13861385
payment_hash: PaymentHash([42; 32]),
13871386
payment_failed_permanently: true,
13881387
network_update: None,
1389-
all_paths_failed: true,
13901388
path: path.clone(),
13911389
short_channel_id: None,
13921390
retry: None,

lightning/src/ln/functional_test_utils.rs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2225,10 +2225,9 @@ pub fn pass_failed_payment_back<'a, 'b, 'c>(origin_node: &Node<'a, 'b, 'c>, expe
22252225
if i == expected_paths.len() - 1 { assert_eq!(events.len(), 2); } else { assert_eq!(events.len(), 1); }
22262226

22272227
let expected_payment_id = match events[0] {
2228-
Event::PaymentPathFailed { payment_hash, payment_failed_permanently, all_paths_failed, ref path, ref payment_id, .. } => {
2228+
Event::PaymentPathFailed { payment_hash, payment_failed_permanently, ref path, ref payment_id, .. } => {
22292229
assert_eq!(payment_hash, our_payment_hash);
22302230
assert!(payment_failed_permanently);
2231-
assert_eq!(all_paths_failed, i == expected_paths.len() - 1);
22322231
for (idx, hop) in expected_route.iter().enumerate() {
22332232
assert_eq!(hop.node.get_our_node_id(), path[idx].pubkey);
22342233
}

lightning/src/ln/functional_tests.rs

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5693,11 +5693,10 @@ fn test_fail_holding_cell_htlc_upon_free() {
56935693
let events = nodes[0].node.get_and_clear_pending_events();
56945694
assert_eq!(events.len(), 2);
56955695
match &events[0] {
5696-
&Event::PaymentPathFailed { ref payment_id, ref payment_hash, ref payment_failed_permanently, ref network_update, ref all_paths_failed, ref short_channel_id, .. } => {
5696+
&Event::PaymentPathFailed { ref payment_id, ref payment_hash, ref payment_failed_permanently, ref network_update, ref short_channel_id, .. } => {
56975697
assert_eq!(PaymentId(our_payment_hash.0), *payment_id.as_ref().unwrap());
56985698
assert_eq!(our_payment_hash.clone(), *payment_hash);
56995699
assert_eq!(*payment_failed_permanently, false);
5700-
assert_eq!(*all_paths_failed, true);
57015700
assert_eq!(*network_update, None);
57025701
assert_eq!(*short_channel_id, Some(route.paths[0][0].short_channel_id));
57035702
},
@@ -5784,11 +5783,10 @@ fn test_free_and_fail_holding_cell_htlcs() {
57845783
let events = nodes[0].node.get_and_clear_pending_events();
57855784
assert_eq!(events.len(), 2);
57865785
match &events[0] {
5787-
&Event::PaymentPathFailed { ref payment_id, ref payment_hash, ref payment_failed_permanently, ref network_update, ref all_paths_failed, ref short_channel_id, .. } => {
5786+
&Event::PaymentPathFailed { ref payment_id, ref payment_hash, ref payment_failed_permanently, ref network_update, ref short_channel_id, .. } => {
57885787
assert_eq!(payment_id_2, *payment_id.as_ref().unwrap());
57895788
assert_eq!(payment_hash_2.clone(), *payment_hash);
57905789
assert_eq!(*payment_failed_permanently, false);
5791-
assert_eq!(*all_paths_failed, true);
57925790
assert_eq!(*network_update, None);
57935791
assert_eq!(*short_channel_id, Some(route_2.paths[0][0].short_channel_id));
57945792
},

lightning/src/ln/onion_route_tests.rs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -167,9 +167,8 @@ fn run_onion_failure_test_with_fail_intercept<F1,F2,F3>(_name: &str, test_case:
167167

168168
let events = nodes[0].node.get_and_clear_pending_events();
169169
assert_eq!(events.len(), 2);
170-
if let &Event::PaymentPathFailed { ref payment_failed_permanently, ref network_update, ref all_paths_failed, ref short_channel_id, ref error_code, .. } = &events[0] {
170+
if let &Event::PaymentPathFailed { ref payment_failed_permanently, ref network_update, ref short_channel_id, ref error_code, .. } = &events[0] {
171171
assert_eq!(*payment_failed_permanently, !expected_retryable);
172-
assert_eq!(*all_paths_failed, true);
173172
assert_eq!(*error_code, expected_error_code);
174173
if expected_channel_update.is_some() {
175174
match network_update {

lightning/src/ln/outbound_payment.rs

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1072,7 +1072,6 @@ impl OutboundPayments {
10721072
let mut session_priv_bytes = [0; 32];
10731073
session_priv_bytes.copy_from_slice(&session_priv[..]);
10741074
let mut outbounds = self.pending_outbound_payments.lock().unwrap();
1075-
let mut all_paths_failed = false;
10761075
let mut full_failure_ev = None;
10771076
let mut pending_retry_ev = None;
10781077
let mut retry = None;
@@ -1121,7 +1120,6 @@ impl OutboundPayments {
11211120
is_retryable_now = false;
11221121
}
11231122
if payment.get().remaining_parts() == 0 {
1124-
all_paths_failed = true;
11251123
if payment.get().abandoned() {
11261124
full_failure_ev = Some(events::Event::PaymentFailed {
11271125
payment_id: *payment_id,
@@ -1174,7 +1172,6 @@ impl OutboundPayments {
11741172
payment_hash: payment_hash.clone(),
11751173
payment_failed_permanently: !payment_retryable,
11761174
network_update,
1177-
all_paths_failed,
11781175
path: path.clone(),
11791176
short_channel_id,
11801177
retry,
@@ -1232,7 +1229,6 @@ fn push_payment_path_failed_evs<I: Iterator<Item = Result<(), APIError>>>(
12321229
payment_hash,
12331230
payment_failed_permanently: false,
12341231
network_update: None,
1235-
all_paths_failed: false,
12361232
path,
12371233
short_channel_id: Some(scid),
12381234
retry: None,

lightning/src/ln/payment_tests.rs

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2055,7 +2055,7 @@ fn retry_multi_path_single_failed_payment() {
20552055
assert_eq!(events.len(), 1);
20562056
match events[0] {
20572057
Event::PaymentPathFailed { payment_hash: ev_payment_hash, payment_failed_permanently: false,
2058-
network_update: None, all_paths_failed: false, short_channel_id: Some(expected_scid), .. } => {
2058+
network_update: None, short_channel_id: Some(expected_scid), .. } => {
20592059
assert_eq!(payment_hash, ev_payment_hash);
20602060
assert_eq!(expected_scid, route.paths[1][0].short_channel_id);
20612061
},
@@ -2126,7 +2126,7 @@ fn immediate_retry_on_failure() {
21262126
assert_eq!(events.len(), 1);
21272127
match events[0] {
21282128
Event::PaymentPathFailed { payment_hash: ev_payment_hash, payment_failed_permanently: false,
2129-
network_update: None, all_paths_failed: false, short_channel_id: Some(expected_scid), .. } => {
2129+
network_update: None, short_channel_id: Some(expected_scid), .. } => {
21302130
assert_eq!(payment_hash, ev_payment_hash);
21312131
assert_eq!(expected_scid, route.paths[1][0].short_channel_id);
21322132
},
@@ -2140,7 +2140,8 @@ fn immediate_retry_on_failure() {
21402140
#[test]
21412141
fn no_extra_retries_on_back_to_back_fail() {
21422142
// In a previous release, we had a race where we may exceed the payment retry count if we
2143-
// get two failures in a row with the second having `all_paths_failed` set.
2143+
// get two failures in a row with the second indicating that all paths had failed (this field,
2144+
// `all_paths_failed`, has since been removed).
21442145
// Generally, when we give up trying to retry a payment, we don't know for sure what the
21452146
// current state of the ChannelManager event queue is. Specifically, we cannot be sure that
21462147
// there are not multiple additional `PaymentPathFailed` or even `PaymentSent` events

lightning/src/util/events.rs

Lines changed: 3 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -631,13 +631,12 @@ pub enum Event {
631631
/// handle the HTLC.
632632
///
633633
/// Note that this does *not* indicate that all paths for an MPP payment have failed, see
634-
/// [`Event::PaymentFailed`] and [`all_paths_failed`].
634+
/// [`Event::PaymentFailed`].
635635
///
636636
/// See [`ChannelManager::abandon_payment`] for giving up on this payment before its retries have
637637
/// been exhausted.
638638
///
639639
/// [`ChannelManager::abandon_payment`]: crate::ln::channelmanager::ChannelManager::abandon_payment
640-
/// [`all_paths_failed`]: Self::PaymentPathFailed::all_paths_failed
641640
PaymentPathFailed {
642641
/// The id returned by [`ChannelManager::send_payment`] and used with
643642
/// [`ChannelManager::abandon_payment`].
@@ -661,10 +660,6 @@ pub enum Event {
661660
///
662661
/// [`NetworkGraph`]: crate::routing::gossip::NetworkGraph
663662
network_update: Option<NetworkUpdate>,
664-
/// For both single-path and multi-path payments, this is set if all paths of the payment have
665-
/// failed. This will be set to false if (1) this is an MPP payment and (2) other parts of the
666-
/// larger MPP payment were still in flight when this event was generated.
667-
all_paths_failed: bool,
668663
/// The payment path that failed.
669664
path: Vec<RouteHop>,
670665
/// The channel responsible for the failed payment path.
@@ -967,7 +962,7 @@ impl Writeable for Event {
967962
},
968963
&Event::PaymentPathFailed {
969964
ref payment_id, ref payment_hash, ref payment_failed_permanently, ref network_update,
970-
ref all_paths_failed, ref path, ref short_channel_id, ref retry,
965+
ref path, ref short_channel_id, ref retry,
971966
#[cfg(test)]
972967
ref error_code,
973968
#[cfg(test)]
@@ -982,7 +977,7 @@ impl Writeable for Event {
982977
(0, payment_hash, required),
983978
(1, network_update, option),
984979
(2, payment_failed_permanently, required),
985-
(3, all_paths_failed, required),
980+
(3, None::<bool>, option), // all_paths_failed in LDK versions prior to 0.0.114
986981
(5, *path, vec_type),
987982
(7, short_channel_id, option),
988983
(9, retry, option),
@@ -1199,7 +1194,6 @@ impl MaybeReadable for Event {
11991194
let mut payment_hash = PaymentHash([0; 32]);
12001195
let mut payment_failed_permanently = false;
12011196
let mut network_update = None;
1202-
let mut all_paths_failed = Some(true);
12031197
let mut path: Option<Vec<RouteHop>> = Some(vec![]);
12041198
let mut short_channel_id = None;
12051199
let mut retry = None;
@@ -1208,7 +1202,6 @@ impl MaybeReadable for Event {
12081202
(0, payment_hash, required),
12091203
(1, network_update, ignorable),
12101204
(2, payment_failed_permanently, required),
1211-
(3, all_paths_failed, option),
12121205
(5, path, vec_type),
12131206
(7, short_channel_id, option),
12141207
(9, retry, option),
@@ -1219,7 +1212,6 @@ impl MaybeReadable for Event {
12191212
payment_hash,
12201213
payment_failed_permanently,
12211214
network_update,
1222-
all_paths_failed: all_paths_failed.unwrap(),
12231215
path: path.unwrap(),
12241216
short_channel_id,
12251217
retry,

0 commit comments

Comments
 (0)