Skip to content

Commit

Permalink
Set pending_sync when last-minute check fails in Esplora
Browse files Browse the repository at this point in the history
  • Loading branch information
tnull committed Nov 16, 2023
1 parent 3c232a6 commit 5634cc1
Showing 1 changed file with 51 additions and 19 deletions.
70 changes: 51 additions & 19 deletions lightning-transaction-sync/src/esplora.rs
Original file line number Diff line number Diff line change
Expand Up @@ -114,16 +114,32 @@ where
Ok(unconfirmed_txs) => {
// Double-check the tip hash. If it changed, a reorg happened since
// we started syncing and we need to restart last-minute.
let check_tip_hash = maybe_await!(self.client.get_tip_hash())?;
if check_tip_hash != tip_hash {
tip_hash = check_tip_hash;

log_debug!(self.logger, "Encountered inconsistency during transaction sync, restarting.");
sync_state.pending_sync = true;
continue;
match maybe_await!(self.client.get_tip_hash()) {
Ok(check_tip_hash) => {
if check_tip_hash != tip_hash {
tip_hash = check_tip_hash;

log_debug!(self.logger, "Encountered inconsistency during transaction sync, restarting.");
sync_state.pending_sync = true;
continue;
}
num_unconfirmed += unconfirmed_txs.len();
sync_state.sync_unconfirmed_transactions(
&confirmables,
unconfirmed_txs
);
}
Err(err) => {
// (Semi-)permanent failure, retry later.
log_error!(self.logger,
"Failed during transaction sync, aborting. Synced so far: {} confirmed, {} unconfirmed.",
num_confirmed,
num_unconfirmed
);
sync_state.pending_sync = true;
return Err(TxSyncError::from(err));
}
}
num_unconfirmed += unconfirmed_txs.len();
sync_state.sync_unconfirmed_transactions(&confirmables, unconfirmed_txs);
},
Err(err) => {
// (Semi-)permanent failure, retry later.
Expand Down Expand Up @@ -162,17 +178,33 @@ where
Ok(confirmed_txs) => {
// Double-check the tip hash. If it changed, a reorg happened since
// we started syncing and we need to restart last-minute.
let check_tip_hash = maybe_await!(self.client.get_tip_hash())?;
if check_tip_hash != tip_hash {
tip_hash = check_tip_hash;
continue;
match maybe_await!(self.client.get_tip_hash()) {
Ok(check_tip_hash) => {
if check_tip_hash != tip_hash {
tip_hash = check_tip_hash;

log_debug!(self.logger,
"Encountered inconsistency during transaction sync, restarting.");
sync_state.pending_sync = true;
continue;
}
num_confirmed += confirmed_txs.len();
sync_state.sync_confirmed_transactions(
&confirmables,
confirmed_txs
);
}
Err(err) => {
// (Semi-)permanent failure, retry later.
log_error!(self.logger,
"Failed during transaction sync, aborting. Synced so far: {} confirmed, {} unconfirmed.",
num_confirmed,
num_unconfirmed
);
sync_state.pending_sync = true;
return Err(TxSyncError::from(err));
}
}

num_confirmed += confirmed_txs.len();
sync_state.sync_confirmed_transactions(
&confirmables,
confirmed_txs,
);
}
Err(InternalError::Inconsistency) => {
// Immediately restart syncing when we encounter any inconsistencies.
Expand Down

0 comments on commit 5634cc1

Please sign in to comment.