@@ -408,13 +408,8 @@ impl Signer {
408
408
block_response,
409
409
sortition_state,
410
410
) ,
411
- SignerMessage :: StateMachineUpdate ( update) => {
412
- self . handle_state_machine_update (
413
- signer_public_key,
414
- update,
415
- received_time,
416
- ) ;
417
- }
411
+ SignerMessage :: StateMachineUpdate ( update) => self
412
+ . handle_state_machine_update ( signer_public_key, update, received_time) ,
418
413
_ => { }
419
414
}
420
415
}
@@ -670,22 +665,43 @@ impl Signer {
670
665
671
666
/// The actual `send_block_response` implementation. Declared so that we do
672
667
/// not need to duplicate in testing.
673
- fn impl_send_block_response ( & mut self , block_response : BlockResponse ) {
674
- let res = self
668
+ fn impl_send_block_response (
669
+ & mut self ,
670
+ block : Option < & NakamotoBlock > ,
671
+ block_response : BlockResponse ,
672
+ ) {
673
+ info ! (
674
+ "{self}: Broadcasting a block response to stacks node: {block_response:?}" ;
675
+ ) ;
676
+ let accepted = matches ! ( block_response, BlockResponse :: Accepted ( ..) ) ;
677
+ match self
675
678
. stackerdb
676
- . send_message_with_retry :: < SignerMessage > ( block_response. clone ( ) . into ( ) ) ;
677
- match res {
678
- Err ( e) => warn ! ( "{self}: Failed to send block rejection to stacker-db: {e:?}" ) ,
679
- Ok ( ack) if !ack. accepted => warn ! (
680
- "{self}: Block rejection not accepted by stacker-db: {:?}" ,
681
- ack. reason
682
- ) ,
683
- Ok ( _) => debug ! ( "{self}: Block rejection accepted by stacker-db" ) ,
679
+ . send_message_with_retry :: < SignerMessage > ( block_response. into ( ) )
680
+ {
681
+ Ok ( ack) => {
682
+ if !ack. accepted {
683
+ warn ! (
684
+ "{self}: Block response not accepted by stacker-db: {:?}" ,
685
+ ack. reason
686
+ ) ;
687
+ }
688
+ crate :: monitoring:: actions:: increment_block_responses_sent ( accepted) ;
689
+ if let Some ( block) = block {
690
+ crate :: monitoring:: actions:: record_block_response_latency ( block) ;
691
+ }
692
+ }
693
+ Err ( e) => {
694
+ warn ! ( "{self}: Failed to send block response to stacker-db: {e:?}" , ) ;
695
+ }
684
696
}
685
697
}
686
698
687
699
#[ cfg( any( test, feature = "testing" ) ) ]
688
- fn send_block_response ( & mut self , block_response : BlockResponse ) {
700
+ fn send_block_response (
701
+ & mut self ,
702
+ block : Option < & NakamotoBlock > ,
703
+ block_response : BlockResponse ,
704
+ ) {
689
705
const NUM_REPEATS : usize = 1 ;
690
706
let mut count = 0 ;
691
707
let public_keys = TEST_REPEAT_PROPOSAL_RESPONSE . get ( ) ;
@@ -695,16 +711,20 @@ impl Signer {
695
711
count = NUM_REPEATS ;
696
712
}
697
713
while count <= NUM_REPEATS {
698
- self . impl_send_block_response ( block_response. clone ( ) ) ;
714
+ self . impl_send_block_response ( block , block_response. clone ( ) ) ;
699
715
700
716
count += 1 ;
701
717
sleep_ms ( 1000 ) ;
702
718
}
703
719
}
704
720
705
721
#[ cfg( not( any( test, feature = "testing" ) ) ) ]
706
- fn send_block_response ( & mut self , block_response : BlockResponse ) {
707
- self . impl_send_block_response ( block_response)
722
+ fn send_block_response (
723
+ & mut self ,
724
+ block : Option < & NakamotoBlock > ,
725
+ block_response : BlockResponse ,
726
+ ) {
727
+ self . impl_send_block_response ( block, block_response)
708
728
}
709
729
710
730
/// Handle signer state update message
@@ -834,8 +854,7 @@ impl Signer {
834
854
835
855
if let Some ( block_response) = block_response {
836
856
// We know proposal is invalid. Send rejection message, do not do further validation and do not store it.
837
- debug ! ( "{self}: Broadcasting a block response to stacks node: {block_response:?}" ) ;
838
- self . send_block_response ( block_response) ;
857
+ self . send_block_response ( Some ( & block_info. block ) , block_response) ;
839
858
} else {
840
859
// Just in case check if the last block validation submission timed out.
841
860
self . check_submitted_block_proposal ( ) ;
@@ -889,19 +908,7 @@ impl Signer {
889
908
return ;
890
909
} ;
891
910
892
- // Submit a proposal response to the .signers contract for miners
893
- debug ! ( "{self}: Broadcasting a block response to stacks node: {block_response:?}" ) ;
894
-
895
- let accepted = matches ! ( block_response, BlockResponse :: Accepted ( ..) ) ;
896
- if let Err ( e) = self
897
- . stackerdb
898
- . send_message_with_retry :: < SignerMessage > ( block_response. into ( ) )
899
- {
900
- warn ! ( "{self}: Failed to send block response to stacker-db: {e:?}" ) ;
901
- } else {
902
- crate :: monitoring:: actions:: increment_block_responses_sent ( accepted) ;
903
- crate :: monitoring:: actions:: record_block_response_latency ( & block_info. block ) ;
904
- }
911
+ self . impl_send_block_response ( Some ( & block_info. block ) , block_response) ;
905
912
}
906
913
907
914
/// Handle block response messages from a signer
@@ -1037,21 +1044,7 @@ impl Signer {
1037
1044
warn ! ( "{self}: Failed to mark block as locally rejected: {e:?}" ) ;
1038
1045
}
1039
1046
} ;
1040
- debug ! ( "{self}: Broadcasting a block response to stacks node: {block_response:?}" ) ;
1041
- let res = self
1042
- . stackerdb
1043
- . send_message_with_retry :: < SignerMessage > ( block_response. into ( ) ) ;
1044
-
1045
- crate :: monitoring:: actions:: record_block_response_latency ( & block_info. block ) ;
1046
-
1047
- match res {
1048
- Err ( e) => warn ! ( "{self}: Failed to send block rejection to stacker-db: {e:?}" ) ,
1049
- Ok ( ack) if !ack. accepted => warn ! (
1050
- "{self}: Block rejection not accepted by stacker-db: {:?}" ,
1051
- ack. reason
1052
- ) ,
1053
- Ok ( _) => debug ! ( "{self}: Block rejection accepted by stacker-db" ) ,
1054
- }
1047
+ self . impl_send_block_response ( Some ( & block_info. block ) , block_response) ;
1055
1048
self . signer_db
1056
1049
. insert_block ( & block_info)
1057
1050
. unwrap_or_else ( |e| self . handle_insert_block_error ( e) ) ;
@@ -1158,30 +1151,12 @@ impl Signer {
1158
1151
. unwrap_or_else ( |e| warn ! ( "{self}: Failed to remove pending block validation: {e:?}" ) ) ;
1159
1152
1160
1153
if let Some ( response) = block_response {
1161
- // Submit a proposal response to the .signers contract for miners
1162
- info ! (
1163
- "{self}: Broadcasting a block response to stacks node: {response:?}" ;
1164
- ) ;
1165
- let accepted = matches ! ( response, BlockResponse :: Accepted ( ..) ) ;
1166
- match self
1167
- . stackerdb
1168
- . send_message_with_retry :: < SignerMessage > ( response. into ( ) )
1169
- {
1170
- Ok ( _) => {
1171
- crate :: monitoring:: actions:: increment_block_responses_sent ( accepted) ;
1172
- if let Ok ( Some ( block_info) ) = self
1173
- . signer_db
1174
- . block_lookup ( & block_validate_response. signer_signature_hash ( ) )
1175
- {
1176
- crate :: monitoring:: actions:: record_block_response_latency (
1177
- & block_info. block ,
1178
- ) ;
1179
- }
1180
- }
1181
- Err ( e) => {
1182
- warn ! ( "{self}: Failed to send block rejection to stacker-db: {e:?}" , ) ;
1183
- }
1184
- }
1154
+ let block = self
1155
+ . signer_db
1156
+ . block_lookup ( & signer_sig_hash)
1157
+ . unwrap_or_default ( )
1158
+ . map ( |info| info. block ) ;
1159
+ self . impl_send_block_response ( block. as_ref ( ) , response) ;
1185
1160
} ;
1186
1161
1187
1162
// Check if there is a pending block validation that we need to submit to the node
@@ -1274,21 +1249,7 @@ impl Signer {
1274
1249
warn ! ( "{self}: Failed to mark block as locally rejected: {e:?}" ) ;
1275
1250
}
1276
1251
} ;
1277
- debug ! ( "{self}: Broadcasting a block response to stacks node: {rejection:?}" ) ;
1278
- let res = self
1279
- . stackerdb
1280
- . send_message_with_retry :: < SignerMessage > ( rejection. into ( ) ) ;
1281
-
1282
- crate :: monitoring:: actions:: record_block_response_latency ( & block_info. block ) ;
1283
-
1284
- match res {
1285
- Err ( e) => warn ! ( "{self}: Failed to send block rejection to stacker-db: {e:?}" ) ,
1286
- Ok ( ack) if !ack. accepted => warn ! (
1287
- "{self}: Block rejection not accepted by stacker-db: {:?}" ,
1288
- ack. reason
1289
- ) ,
1290
- Ok ( _) => debug ! ( "{self}: Block rejection accepted by stacker-db" ) ,
1291
- }
1252
+ self . impl_send_block_response ( Some ( & block_info. block ) , rejection) ;
1292
1253
1293
1254
self . signer_db
1294
1255
. insert_block ( & block_info)
0 commit comments