@@ -409,13 +409,8 @@ impl Signer {
409
409
block_response,
410
410
sortition_state,
411
411
) ,
412
- SignerMessage :: StateMachineUpdate ( update) => {
413
- self . handle_state_machine_update (
414
- signer_public_key,
415
- update,
416
- received_time,
417
- ) ;
418
- }
412
+ SignerMessage :: StateMachineUpdate ( update) => self
413
+ . handle_state_machine_update ( signer_public_key, update, received_time) ,
419
414
_ => { }
420
415
}
421
416
}
@@ -676,22 +671,43 @@ impl Signer {
676
671
677
672
/// The actual `send_block_response` implementation. Declared so that we do
678
673
/// not need to duplicate in testing.
679
- fn impl_send_block_response ( & mut self , block_response : BlockResponse ) {
680
- let res = self
674
+ fn impl_send_block_response (
675
+ & mut self ,
676
+ block : Option < & NakamotoBlock > ,
677
+ block_response : BlockResponse ,
678
+ ) {
679
+ info ! (
680
+ "{self}: Broadcasting a block response to stacks node: {block_response:?}" ;
681
+ ) ;
682
+ let accepted = matches ! ( block_response, BlockResponse :: Accepted ( ..) ) ;
683
+ match self
681
684
. stackerdb
682
- . send_message_with_retry :: < SignerMessage > ( block_response. clone ( ) . into ( ) ) ;
683
- match res {
684
- Err ( e) => warn ! ( "{self}: Failed to send block rejection to stacker-db: {e:?}" ) ,
685
- Ok ( ack) if !ack. accepted => warn ! (
686
- "{self}: Block rejection not accepted by stacker-db: {:?}" ,
687
- ack. reason
688
- ) ,
689
- Ok ( _) => debug ! ( "{self}: Block rejection accepted by stacker-db" ) ,
685
+ . send_message_with_retry :: < SignerMessage > ( block_response. into ( ) )
686
+ {
687
+ Ok ( ack) => {
688
+ if !ack. accepted {
689
+ warn ! (
690
+ "{self}: Block response not accepted by stacker-db: {:?}" ,
691
+ ack. reason
692
+ ) ;
693
+ }
694
+ crate :: monitoring:: actions:: increment_block_responses_sent ( accepted) ;
695
+ if let Some ( block) = block {
696
+ crate :: monitoring:: actions:: record_block_response_latency ( block) ;
697
+ }
698
+ }
699
+ Err ( e) => {
700
+ warn ! ( "{self}: Failed to send block response to stacker-db: {e:?}" , ) ;
701
+ }
690
702
}
691
703
}
692
704
693
705
#[ cfg( any( test, feature = "testing" ) ) ]
694
- fn send_block_response ( & mut self , block_response : BlockResponse ) {
706
+ fn send_block_response (
707
+ & mut self ,
708
+ block : Option < & NakamotoBlock > ,
709
+ block_response : BlockResponse ,
710
+ ) {
695
711
const NUM_REPEATS : usize = 1 ;
696
712
let mut count = 0 ;
697
713
let public_keys = TEST_REPEAT_PROPOSAL_RESPONSE . get ( ) ;
@@ -701,16 +717,20 @@ impl Signer {
701
717
count = NUM_REPEATS ;
702
718
}
703
719
while count <= NUM_REPEATS {
704
- self . impl_send_block_response ( block_response. clone ( ) ) ;
720
+ self . impl_send_block_response ( block , block_response. clone ( ) ) ;
705
721
706
722
count += 1 ;
707
723
sleep_ms ( 1000 ) ;
708
724
}
709
725
}
710
726
711
727
#[ cfg( not( any( test, feature = "testing" ) ) ) ]
712
- fn send_block_response ( & mut self , block_response : BlockResponse ) {
713
- self . impl_send_block_response ( block_response)
728
+ fn send_block_response (
729
+ & mut self ,
730
+ block : Option < & NakamotoBlock > ,
731
+ block_response : BlockResponse ,
732
+ ) {
733
+ self . impl_send_block_response ( block, block_response)
714
734
}
715
735
716
736
/// Handle signer state update message
@@ -840,8 +860,7 @@ impl Signer {
840
860
841
861
if let Some ( block_response) = block_response {
842
862
// We know proposal is invalid. Send rejection message, do not do further validation and do not store it.
843
- debug ! ( "{self}: Broadcasting a block response to stacks node: {block_response:?}" ) ;
844
- self . send_block_response ( block_response) ;
863
+ self . send_block_response ( Some ( & block_info. block ) , block_response) ;
845
864
} else {
846
865
// Just in case check if the last block validation submission timed out.
847
866
self . check_submitted_block_proposal ( ) ;
@@ -895,19 +914,7 @@ impl Signer {
895
914
return ;
896
915
} ;
897
916
898
- // Submit a proposal response to the .signers contract for miners
899
- debug ! ( "{self}: Broadcasting a block response to stacks node: {block_response:?}" ) ;
900
-
901
- let accepted = matches ! ( block_response, BlockResponse :: Accepted ( ..) ) ;
902
- if let Err ( e) = self
903
- . stackerdb
904
- . send_message_with_retry :: < SignerMessage > ( block_response. into ( ) )
905
- {
906
- warn ! ( "{self}: Failed to send block response to stacker-db: {e:?}" ) ;
907
- } else {
908
- crate :: monitoring:: actions:: increment_block_responses_sent ( accepted) ;
909
- crate :: monitoring:: actions:: record_block_response_latency ( & block_info. block ) ;
910
- }
917
+ self . impl_send_block_response ( Some ( & block_info. block ) , block_response) ;
911
918
}
912
919
913
920
/// Handle block response messages from a signer
@@ -1043,21 +1050,7 @@ impl Signer {
1043
1050
warn ! ( "{self}: Failed to mark block as locally rejected: {e:?}" ) ;
1044
1051
}
1045
1052
} ;
1046
- debug ! ( "{self}: Broadcasting a block response to stacks node: {block_response:?}" ) ;
1047
- let res = self
1048
- . stackerdb
1049
- . send_message_with_retry :: < SignerMessage > ( block_response. into ( ) ) ;
1050
-
1051
- crate :: monitoring:: actions:: record_block_response_latency ( & block_info. block ) ;
1052
-
1053
- match res {
1054
- Err ( e) => warn ! ( "{self}: Failed to send block rejection to stacker-db: {e:?}" ) ,
1055
- Ok ( ack) if !ack. accepted => warn ! (
1056
- "{self}: Block rejection not accepted by stacker-db: {:?}" ,
1057
- ack. reason
1058
- ) ,
1059
- Ok ( _) => debug ! ( "{self}: Block rejection accepted by stacker-db" ) ,
1060
- }
1053
+ self . impl_send_block_response ( Some ( & block_info. block ) , block_response) ;
1061
1054
self . signer_db
1062
1055
. insert_block ( & block_info)
1063
1056
. unwrap_or_else ( |e| self . handle_insert_block_error ( e) ) ;
@@ -1164,30 +1157,12 @@ impl Signer {
1164
1157
. unwrap_or_else ( |e| warn ! ( "{self}: Failed to remove pending block validation: {e:?}" ) ) ;
1165
1158
1166
1159
if let Some ( response) = block_response {
1167
- // Submit a proposal response to the .signers contract for miners
1168
- info ! (
1169
- "{self}: Broadcasting a block response to stacks node: {response:?}" ;
1170
- ) ;
1171
- let accepted = matches ! ( response, BlockResponse :: Accepted ( ..) ) ;
1172
- match self
1173
- . stackerdb
1174
- . send_message_with_retry :: < SignerMessage > ( response. into ( ) )
1175
- {
1176
- Ok ( _) => {
1177
- crate :: monitoring:: actions:: increment_block_responses_sent ( accepted) ;
1178
- if let Ok ( Some ( block_info) ) = self
1179
- . signer_db
1180
- . block_lookup ( & block_validate_response. signer_signature_hash ( ) )
1181
- {
1182
- crate :: monitoring:: actions:: record_block_response_latency (
1183
- & block_info. block ,
1184
- ) ;
1185
- }
1186
- }
1187
- Err ( e) => {
1188
- warn ! ( "{self}: Failed to send block rejection to stacker-db: {e:?}" , ) ;
1189
- }
1190
- }
1160
+ let block = self
1161
+ . signer_db
1162
+ . block_lookup ( & signer_sig_hash)
1163
+ . unwrap_or_default ( )
1164
+ . map ( |info| info. block ) ;
1165
+ self . impl_send_block_response ( block. as_ref ( ) , response) ;
1191
1166
} ;
1192
1167
1193
1168
// Check if there is a pending block validation that we need to submit to the node
@@ -1280,21 +1255,7 @@ impl Signer {
1280
1255
warn ! ( "{self}: Failed to mark block as locally rejected: {e:?}" ) ;
1281
1256
}
1282
1257
} ;
1283
- debug ! ( "{self}: Broadcasting a block response to stacks node: {rejection:?}" ) ;
1284
- let res = self
1285
- . stackerdb
1286
- . send_message_with_retry :: < SignerMessage > ( rejection. into ( ) ) ;
1287
-
1288
- crate :: monitoring:: actions:: record_block_response_latency ( & block_info. block ) ;
1289
-
1290
- match res {
1291
- Err ( e) => warn ! ( "{self}: Failed to send block rejection to stacker-db: {e:?}" ) ,
1292
- Ok ( ack) if !ack. accepted => warn ! (
1293
- "{self}: Block rejection not accepted by stacker-db: {:?}" ,
1294
- ack. reason
1295
- ) ,
1296
- Ok ( _) => debug ! ( "{self}: Block rejection accepted by stacker-db" ) ,
1297
- }
1258
+ self . impl_send_block_response ( Some ( & block_info. block ) , rejection) ;
1298
1259
1299
1260
self . signer_db
1300
1261
. insert_block ( & block_info)
0 commit comments