Skip to content

Commit 791dd0d

Browse files
committed
resolve conflicts
2 parents 9f32b6c + 8c1472b commit 791dd0d

File tree

13 files changed

+35
-29
lines changed

13 files changed

+35
-29
lines changed

crates/fiber-lib/src/fiber/channel.rs

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5701,7 +5701,12 @@ impl ChannelActorState {
57015701
let delay_epoch = EpochNumberWithFraction::from_full_value(self.commitment_delay_epoch);
57025702
let epoch_delay_milliseconds =
57035703
(delay_epoch.number() as f64 * MILLI_SECONDS_PER_EPOCH as f64 * 2.0 / 3.0) as u64;
5704-
let expect_expiry = current_time + epoch_delay_milliseconds;
5704+
let pending_tlc_count = self
5705+
.tlc_state
5706+
.all_tlcs()
5707+
.filter(|tlc| tlc.removed_confirmed_at.is_none())
5708+
.count() as u64;
5709+
let expect_expiry = current_time + epoch_delay_milliseconds * (pending_tlc_count + 1);
57055710
if expiry < expect_expiry {
57065711
error!(
57075712
"TLC expiry {} is too soon, current time + epoch delay: {}",

crates/fiber-lib/src/fiber/history.rs

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -175,6 +175,8 @@ impl InternalResult {
175175
);
176176
}
177177
}
178+
179+
#[cfg(test)]
178180
pub fn fail_range_pairs(&mut self, nodes: &[SessionRouteNode], start: usize, end: usize) {
179181
for index in start.max(1)..=end {
180182
self.fail_pair(nodes, index);
@@ -242,6 +244,8 @@ impl InternalResult {
242244
self.succeed_range_pairs(nodes, 0, len - 1);
243245
}
244246
TlcErrorCode::ExpiryTooSoon | TlcErrorCode::ExpiryTooFar => {
247+
// these two error code will not be reported from last hop in theory
248+
// anyway, don't retry payment anymore
245249
need_retry = false;
246250
}
247251
_ => {
@@ -293,17 +297,12 @@ impl InternalResult {
293297
| TlcErrorCode::ChannelDisabled
294298
| TlcErrorCode::TemporaryNodeFailure
295299
| TlcErrorCode::RequiredNodeFeatureMissing
296-
| TlcErrorCode::AmountBelowMinimum => {
300+
| TlcErrorCode::AmountBelowMinimum
301+
| TlcErrorCode::ExpiryTooSoon
302+
| TlcErrorCode::ExpiryTooFar => {
297303
self.fail_pair_balanced(nodes, index + 1);
298304
self.succeed_range_pairs(nodes, 0, index);
299305
}
300-
TlcErrorCode::ExpiryTooSoon | TlcErrorCode::ExpiryTooFar => {
301-
if index == 1 {
302-
self.fail_node(nodes, 1);
303-
} else {
304-
self.fail_range_pairs(nodes, 0, index - 1);
305-
}
306-
}
307306
TlcErrorCode::IncorrectOrUnknownPaymentDetails => {
308307
need_retry = false;
309308
}

crates/fiber-lib/src/fiber/network.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2760,7 +2760,7 @@ where
27602760
}
27612761

27622762
fn set_amp_custom_records(&self, attempts: &mut [Attempt], payment_hash: Hash256) {
2763-
debug_assert!(attempts.len() > 0);
2763+
debug_assert!(!attempts.is_empty());
27642764

27652765
let root = AmpSecret::random();
27662766
let secrets = AmpSecret::gen_random_sequence(root, attempts.len() as u16);

crates/fiber-lib/src/store/.schema.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
"AmpPaymentData": "673a52cf08513b5dc5272c75f880337f9a8392d37e29ce0a6205f3f61e54a58b",
44
"AmpSecret": "a17107d5b43b69f1a75985fcee5eea56751e3b30a37f2e343e69885642800481",
55
"AnnouncedNodeName": "73035cf37b0bbc724336af8a5982ca40a37d6fdcb6f7b0fed98158b4afb51260",
6-
"Attempt": "f5ff2b3b64a2631633ddcf8f957feb21e8a863b02638a617157cb498ae641504",
6+
"Attempt": "81aa827fa414d50908f82bfa259019fa863b045f13de069e0b83d20fe7dd27f8",
77
"AttemptStatus": "b18d88f1743ca9a7b657daa273e3ec3cab475113c2b34704792f8ca7a382313a",
88
"Attribute": "bee9e44e53d7428c6881544b3859b5074d3ec016f45ba027fba7b92d1c9c2d4b",
99
"BroadcastMessage": "c15fb7747e489e3ace898276a811a61060f3913bf8d6143ed9ab895d97128469",

tests/bruno/e2e/watchtower/force-close-with-consecutive-settlement/10-node1-add-tlc2.bru

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,8 +37,9 @@ assert {
3737
}
3838

3939
script:pre-request {
40-
// 10 seconds expiry
41-
let expiry = "0x" + (Date.now() + 1000 * 10).toString(16);
40+
// default 2/3 commitment_delay_epoch is 6 * 2/3 * 2 = 8 seconds in test environment
41+
// requires (pending_tlc_count + 1 ) * 8 = 16 seconds for expiry, we use 17 as a safe margin
42+
let expiry = "0x" + (Date.now() + 1000 * 17).toString(16);
4243
bru.setVar("expiry", expiry);
4344
}
4445

tests/bruno/e2e/watchtower/force-close-with-consecutive-settlement/11-node1-add-tlc3.bru

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,8 +37,9 @@ assert {
3737
}
3838

3939
script:pre-request {
40-
// 10 seconds expiry
41-
let expiry = "0x" + (Date.now() + 1000 * 10).toString(16);
40+
// default 2/3 commitment_delay_epoch is 6 * 2/3 * 2 = 8 seconds in test environment
41+
// requires (pending_tlc_count + 1) * 8 = 24 seconds for expiry, we use 25 as a safe margin
42+
let expiry = "0x" + (Date.now() + 1000 * 25).toString(16);
4243
bru.setVar("expiry", expiry);
4344
}
4445

tests/bruno/e2e/watchtower/force-close-with-consecutive-settlement/16-generate-blocks-for-onchain-timestamp-updates.bru

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,8 @@ assert {
2929
}
3030

3131
script:pre-request {
32-
// wait 10 seconds for the onchain timestamp to be updated
33-
await new Promise(r => setTimeout(r, 10000));
32+
// wait 20 seconds for the onchain timestamp to be updated
33+
await new Promise(r => setTimeout(r, 30000));
3434
}
3535

3636
script:post-response {

tests/bruno/e2e/watchtower/force-close-with-pending-tlcs-and-stop-watchtower/10-node2-add-tlc2.bru

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,8 +37,8 @@ assert {
3737
}
3838

3939
script:pre-request {
40-
// 10 seconds expiry
41-
let expiry = "0x" + (Date.now() + 1000 * 10).toString(16);
40+
// 17 seconds expiry
41+
let expiry = "0x" + (Date.now() + 1000 * 17).toString(16);
4242
bru.setVar("expiry", expiry);
4343
}
4444

tests/bruno/e2e/watchtower/force-close-with-pending-tlcs-and-stop-watchtower/16-generate-blocks-for-onchain-timestamp-updates.bru

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,8 @@ assert {
2929
}
3030

3131
script:pre-request {
32-
// wait 10 seconds for the onchain timestamp to be updated
33-
await new Promise(r => setTimeout(r, 10000));
32+
// wait 20 seconds for the onchain timestamp to be updated
33+
await new Promise(r => setTimeout(r, 20000));
3434
}
3535

3636
script:post-response {

tests/bruno/e2e/watchtower/force-close-with-pending-tlcs-and-udt/11-node1-add-tlc2.bru

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,8 +37,8 @@ assert {
3737
}
3838

3939
script:pre-request {
40-
// 10 seconds expiry
41-
let expiry = "0x" + (Date.now() + 1000 * 10).toString(16);
40+
// 17 seconds expiry
41+
let expiry = "0x" + (Date.now() + 1000 * 17).toString(16);
4242
bru.setVar("expiry", expiry);
4343
}
4444

0 commit comments

Comments
 (0)