Skip to content

Commit 3dde4d8

Browse files
committed
Remove duplicate code when sending block responses
Signed-off-by: Jacinta Ferrant <jacinta.ferrant@gmail.com>
1 parent 7d7e414 commit 3dde4d8

File tree

1 file changed

+29
-84
lines changed

1 file changed

+29
-84
lines changed

stacks-signer/src/v0/signer.rs

Lines changed: 29 additions & 84 deletions
Original file line numberDiff line numberDiff line change
@@ -408,13 +408,8 @@ impl Signer {
408408
block_response,
409409
sortition_state,
410410
),
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),
418413
_ => {}
419414
}
420415
}
@@ -671,16 +666,30 @@ impl Signer {
671666
/// The actual `send_block_response` implementation. Declared so that we do
672667
/// not need to duplicate in testing.
673668
fn impl_send_block_response(&mut self, block_response: BlockResponse) {
674-
let res = self
669+
info!(
670+
"{self}: Broadcasting a block response to stacks node: {block_response:?}";
671+
);
672+
let accepted = matches!(block_response, BlockResponse::Accepted(..));
673+
let block_hash = block_response.get_signer_signature_hash();
674+
match self
675675
.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"),
676+
.send_message_with_retry::<SignerMessage>(block_response.into())
677+
{
678+
Ok(ack) => {
679+
if !ack.accepted {
680+
warn!(
681+
"{self}: Block response not accepted by stacker-db: {:?}",
682+
ack.reason
683+
);
684+
}
685+
crate::monitoring::actions::increment_block_responses_sent(accepted);
686+
if let Ok(Some(block_info)) = self.signer_db.block_lookup(&block_hash) {
687+
crate::monitoring::actions::record_block_response_latency(&block_info.block);
688+
}
689+
}
690+
Err(e) => {
691+
warn!("{self}: Failed to send block response to stacker-db: {e:?}",);
692+
}
684693
}
685694
}
686695

@@ -833,7 +842,6 @@ impl Signer {
833842

834843
if let Some(block_response) = block_response {
835844
// We know proposal is invalid. Send rejection message, do not do further validation and do not store it.
836-
debug!("{self}: Broadcasting a block response to stacks node: {block_response:?}");
837845
self.send_block_response(block_response);
838846
} else {
839847
// Just in case check if the last block validation submission timed out.
@@ -888,19 +896,7 @@ impl Signer {
888896
return;
889897
};
890898

891-
// Submit a proposal response to the .signers contract for miners
892-
debug!("{self}: Broadcasting a block response to stacks node: {block_response:?}");
893-
894-
let accepted = matches!(block_response, BlockResponse::Accepted(..));
895-
if let Err(e) = self
896-
.stackerdb
897-
.send_message_with_retry::<SignerMessage>(block_response.into())
898-
{
899-
warn!("{self}: Failed to send block response to stacker-db: {e:?}");
900-
} else {
901-
crate::monitoring::actions::increment_block_responses_sent(accepted);
902-
crate::monitoring::actions::record_block_response_latency(&block_info.block);
903-
}
899+
self.impl_send_block_response(block_response);
904900
}
905901

906902
/// Handle block response messages from a signer
@@ -1036,21 +1032,7 @@ impl Signer {
10361032
warn!("{self}: Failed to mark block as locally rejected: {e:?}");
10371033
}
10381034
};
1039-
debug!("{self}: Broadcasting a block response to stacks node: {block_response:?}");
1040-
let res = self
1041-
.stackerdb
1042-
.send_message_with_retry::<SignerMessage>(block_response.into());
1043-
1044-
crate::monitoring::actions::record_block_response_latency(&block_info.block);
1045-
1046-
match res {
1047-
Err(e) => warn!("{self}: Failed to send block rejection to stacker-db: {e:?}"),
1048-
Ok(ack) if !ack.accepted => warn!(
1049-
"{self}: Block rejection not accepted by stacker-db: {:?}",
1050-
ack.reason
1051-
),
1052-
Ok(_) => debug!("{self}: Block rejection accepted by stacker-db"),
1053-
}
1035+
self.impl_send_block_response(block_response);
10541036
self.signer_db
10551037
.insert_block(&block_info)
10561038
.unwrap_or_else(|e| self.handle_insert_block_error(e));
@@ -1157,30 +1139,7 @@ impl Signer {
11571139
.unwrap_or_else(|e| warn!("{self}: Failed to remove pending block validation: {e:?}"));
11581140

11591141
if let Some(response) = block_response {
1160-
// Submit a proposal response to the .signers contract for miners
1161-
info!(
1162-
"{self}: Broadcasting a block response to stacks node: {response:?}";
1163-
);
1164-
let accepted = matches!(response, BlockResponse::Accepted(..));
1165-
match self
1166-
.stackerdb
1167-
.send_message_with_retry::<SignerMessage>(response.into())
1168-
{
1169-
Ok(_) => {
1170-
crate::monitoring::actions::increment_block_responses_sent(accepted);
1171-
if let Ok(Some(block_info)) = self
1172-
.signer_db
1173-
.block_lookup(&block_validate_response.signer_signature_hash())
1174-
{
1175-
crate::monitoring::actions::record_block_response_latency(
1176-
&block_info.block,
1177-
);
1178-
}
1179-
}
1180-
Err(e) => {
1181-
warn!("{self}: Failed to send block rejection to stacker-db: {e:?}",);
1182-
}
1183-
}
1142+
self.impl_send_block_response(response);
11841143
};
11851144

11861145
// Check if there is a pending block validation that we need to submit to the node
@@ -1273,21 +1232,7 @@ impl Signer {
12731232
warn!("{self}: Failed to mark block as locally rejected: {e:?}");
12741233
}
12751234
};
1276-
debug!("{self}: Broadcasting a block response to stacks node: {rejection:?}");
1277-
let res = self
1278-
.stackerdb
1279-
.send_message_with_retry::<SignerMessage>(rejection.into());
1280-
1281-
crate::monitoring::actions::record_block_response_latency(&block_info.block);
1282-
1283-
match res {
1284-
Err(e) => warn!("{self}: Failed to send block rejection to stacker-db: {e:?}"),
1285-
Ok(ack) if !ack.accepted => warn!(
1286-
"{self}: Block rejection not accepted by stacker-db: {:?}",
1287-
ack.reason
1288-
),
1289-
Ok(_) => debug!("{self}: Block rejection accepted by stacker-db"),
1290-
}
1235+
self.impl_send_block_response(rejection);
12911236

12921237
self.signer_db
12931238
.insert_block(&block_info)

0 commit comments

Comments
 (0)