Skip to content

Commit b8afa6a

Browse files
authored
Merge release-second-guess into main (#3603)
1 parent e44fa99 commit b8afa6a

File tree

5 files changed

+38
-21
lines changed

5 files changed

+38
-21
lines changed

crates/hotshot/task-impls/src/da.rs

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -436,12 +436,20 @@ impl<TYPES: NodeType, I: NodeImplementation<TYPES>, V: Versions> DaTaskState<TYP
436436
);
437437
return Ok(());
438438
}
439-
let epoch_transition_indicator =
440-
if self.consensus.read().await.is_high_qc_ge_root_block() {
441-
EpochTransitionIndicator::InTransition
442-
} else {
439+
let consensus_reader = self.consensus.read().await;
440+
let epoch_transition_indicator = if consensus_reader.is_high_qc_ge_root_block() {
441+
if self.upgrade_lock.upgraded_drb_and_header(view_number).await
442+
&& consensus_reader.is_high_qc_last_block()
443+
{
443444
EpochTransitionIndicator::NotInTransition
444-
};
445+
} else {
446+
EpochTransitionIndicator::InTransition
447+
}
448+
} else {
449+
EpochTransitionIndicator::NotInTransition
450+
};
451+
drop(consensus_reader);
452+
445453
let data: DaProposal2<TYPES> = DaProposal2 {
446454
encoded_transactions: Arc::clone(encoded_transactions),
447455
metadata: metadata.clone(),

crates/hotshot/task-impls/src/view_sync.rs

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -546,19 +546,6 @@ impl<TYPES: NodeType, V: Versions> ViewSyncTaskState<TYPES, V> {
546546
);
547547

548548
self.num_timeouts_tracked += 1;
549-
let leader = self
550-
.membership_coordinator
551-
.membership_for_epoch(self.cur_epoch)
552-
.await?
553-
.leader(view_number)
554-
.await?;
555-
tracing::warn!(
556-
%leader,
557-
leader_mnemonic = hotshot_types::utils::mnemonic(&leader),
558-
view_number = *view_number,
559-
num_timeouts_tracked = self.num_timeouts_tracked,
560-
"view timed out",
561-
);
562549

563550
if self.num_timeouts_tracked >= 3 {
564551
tracing::error!("Too many consecutive timeouts! This shouldn't happen");
@@ -585,6 +572,19 @@ impl<TYPES: NodeType, V: Versions> ViewSyncTaskState<TYPES, V> {
585572
)
586573
.await;
587574
}
575+
let leader = self
576+
.membership_coordinator
577+
.membership_for_epoch(self.cur_epoch)
578+
.await?
579+
.leader(view_number)
580+
.await?;
581+
tracing::warn!(
582+
%leader,
583+
leader_mnemonic = hotshot_types::utils::mnemonic(&leader),
584+
view_number = *view_number,
585+
num_timeouts_tracked = self.num_timeouts_tracked,
586+
"view timed out",
587+
);
588588
},
589589
HotShotEvent::SetFirstEpoch(view, epoch) => {
590590
self.first_epoch = Some((*view, *epoch));

crates/hotshot/types/src/consensus.rs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1394,6 +1394,14 @@ impl<TYPES: NodeType> Consensus<TYPES> {
13941394
let block_height = leaf.height();
13951395
is_ge_epoch_root(block_height, self.epoch_height)
13961396
}
1397+
1398+
pub fn is_high_qc_last_block(&self) -> bool {
1399+
let Some(block_height) = self.high_qc().data.block_number else {
1400+
tracing::warn!("We don't have a block number for the high QC");
1401+
return false;
1402+
};
1403+
is_last_block(block_height, self.epoch_height)
1404+
}
13971405
}
13981406

13991407
/// Alias for the block payload commitment and the associated metadata. The primary data

data/genesis/decaf.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,4 +44,4 @@ base_fee = "1 wei"
4444
max_block_size = "10mb"
4545
fee_recipient = "0x0000000000000000000000000000000000000000"
4646
fee_contract = "0x42835083fd1d3fc5d799b5f6815ae4bf2623e6d0"
47-
stake_table_contract = "0x40304fbe94d5e7d1492dd90c53a2d63e8506a037"
47+
stake_table_contract = "0x40304fbe94d5e7d1492dd90c53a2d63e8506a037"

sequencer/src/request_response/recipient_source.rs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -52,11 +52,12 @@ impl<I: NodeImplementation<SeqTypes>, V: Versions> RecipientSourceTrait<Request,
5252
Ok(membership) => membership,
5353
Err(e) => {
5454
warn!(
55-
"Failed to get membership for epoch {}: {e:#}. Failing over to genesis",
55+
"Failed to get membership for epoch {}: {e:#}. Failing over to previous epoch",
5656
epoch_number
5757
);
58+
let prev_epoch = epoch_number.saturating_sub(1);
5859
self.memberships
59-
.stake_table_for_epoch(Some(EpochNumber::genesis()))
60+
.stake_table_for_epoch(Some(EpochNumber::new(prev_epoch)))
6061
.await
6162
.with_context(|| "failed to get stake table for epoch")?
6263
},

0 commit comments

Comments
 (0)