Skip to content

Commit dbfd363

Browse files
authored
Merge pull request #5475 from stacks-network/fix/better-signerdb-error-logging
fix: better error logging with signerdb insert error
2 parents bac1b07 + 1117c3d commit dbfd363

File tree

1 file changed

+12
-5
lines changed

1 file changed

+12
-5
lines changed

stacks-signer/src/v0/signer.rs

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ use blockstack_lib::chainstate::nakamoto::{NakamotoBlock, NakamotoBlockHeader};
2121
use blockstack_lib::net::api::postblock_proposal::{
2222
BlockValidateOk, BlockValidateReject, BlockValidateResponse,
2323
};
24+
use blockstack_lib::util_lib::db::Error as DBError;
2425
use clarity::types::chainstate::StacksPrivateKey;
2526
use clarity::types::{PrivateKey, StacksEpochId};
2627
use clarity::util::hash::MerkleHashFunc;
@@ -496,7 +497,7 @@ impl Signer {
496497
// Do not store KNOWN invalid blocks as this could DOS the signer. We only store blocks that are valid or unknown.
497498
self.signer_db
498499
.insert_block(&block_info)
499-
.unwrap_or_else(|_| panic!("{self}: Failed to insert block in DB"));
500+
.unwrap_or_else(|e| self.handle_insert_block_error(e));
500501
}
501502
}
502503

@@ -568,7 +569,7 @@ impl Signer {
568569

569570
self.signer_db
570571
.insert_block(&block_info)
571-
.unwrap_or_else(|_| panic!("{self}: Failed to insert block in DB"));
572+
.unwrap_or_else(|e| self.handle_insert_block_error(e));
572573
let accepted = BlockAccepted::new(block_info.signer_signature_hash(), signature);
573574
// have to save the signature _after_ the block info
574575
self.handle_block_signature(stacks_client, &accepted);
@@ -626,7 +627,7 @@ impl Signer {
626627
);
627628
self.signer_db
628629
.insert_block(&block_info)
629-
.unwrap_or_else(|_| panic!("{self}: Failed to insert block in DB"));
630+
.unwrap_or_else(|e| self.handle_insert_block_error(e));
630631
self.handle_block_rejection(&block_rejection);
631632
Some(BlockResponse::Rejected(block_rejection))
632633
}
@@ -739,7 +740,7 @@ impl Signer {
739740
}
740741
self.signer_db
741742
.insert_block(&block_info)
742-
.unwrap_or_else(|_| panic!("{self}: Failed to insert block in DB"));
743+
.unwrap_or_else(|e| self.handle_insert_block_error(e));
743744
}
744745

745746
/// Compute the signing weight, given a list of signatures
@@ -1095,7 +1096,7 @@ impl Signer {
10951096
// in case this is the first time we saw this block. Safe to do since this is testing case only.
10961097
self.signer_db
10971098
.insert_block(block_info)
1098-
.unwrap_or_else(|_| panic!("{self}: Failed to insert block in DB"));
1099+
.unwrap_or_else(|e| self.handle_insert_block_error(e));
10991100
Some(BlockResponse::rejected(
11001101
block_proposal.block.header.signer_signature_hash(),
11011102
RejectCode::TestingDirective,
@@ -1119,4 +1120,10 @@ impl Signer {
11191120
warn!("{self}: Failed to send mock signature to stacker-db: {e:?}",);
11201121
}
11211122
}
1123+
1124+
/// Helper for logging insert_block error
1125+
fn handle_insert_block_error(&self, e: DBError) {
1126+
error!("{self}: Failed to insert block into signer-db: {e:?}");
1127+
panic!("{self} Failed to write block to signerdb: {e}");
1128+
}
11221129
}

0 commit comments

Comments
 (0)