Skip to content

Commit d7c3d17

Browse files
committed
On every pass of process_event attempt to update and check signer state
Signed-off-by: Jacinta Ferrant <jacinta.ferrant@gmail.com>
1 parent 756e5a5 commit d7c3d17

File tree

1 file changed

+16
-8
lines changed

1 file changed

+16
-8
lines changed

stacks-signer/src/v0/signer.rs

Lines changed: 16 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -255,6 +255,22 @@ impl SignerTrait<SignerMessage> for Signer {
255255
_res: &Sender<SignerResult>,
256256
current_reward_cycle: u64,
257257
) {
258+
self.check_submitted_block_proposal();
259+
self.check_pending_block_validations(stacks_client);
260+
261+
let mut prior_state = self.local_state_machine.clone();
262+
if self.reward_cycle <= current_reward_cycle {
263+
self.local_state_machine.handle_pending_update(&self.signer_db, stacks_client, &self.proposal_config)
264+
.unwrap_or_else(|e| error!("{self}: failed to update local state machine for pending update"; "err" => ?e));
265+
}
266+
267+
if prior_state != self.local_state_machine {
268+
let version = self.get_signer_protocol_version();
269+
self.local_state_machine
270+
.send_signer_update_message(&mut self.stackerdb, version);
271+
prior_state = self.local_state_machine.clone();
272+
}
273+
258274
let event_parity = match event {
259275
// Block proposal events do have reward cycles, but each proposal has its own cycle,
260276
// and the vec could be heterogeneous, so, don't differentiate.
@@ -272,8 +288,6 @@ impl SignerTrait<SignerMessage> for Signer {
272288
if event_parity == Some(other_signer_parity) {
273289
return;
274290
}
275-
self.check_submitted_block_proposal();
276-
self.check_pending_block_validations(stacks_client);
277291
debug!("{self}: Processing event: {event:?}");
278292
let Some(event) = event else {
279293
// No event. Do nothing.
@@ -292,12 +306,6 @@ impl SignerTrait<SignerMessage> for Signer {
292306
return;
293307
}
294308

295-
let prior_state = self.local_state_machine.clone();
296-
if self.reward_cycle <= current_reward_cycle {
297-
self.local_state_machine.handle_pending_update(&self.signer_db, stacks_client, &self.proposal_config)
298-
.unwrap_or_else(|e| error!("{self}: failed to update local state machine for pending update"; "err" => ?e));
299-
}
300-
301309
self.handle_event_match(stacks_client, sortition_state, event, current_reward_cycle);
302310

303311
self.check_submitted_block_proposal();

0 commit comments

Comments
 (0)