Skip to content

Commit a7a8bfe

Browse files
author
Yehonatan Buchnik
authored
Don't assert if ike was not done after state transfer (#2740)
In case we have a VC before the initial KE, the replicas fill their active window with no-ops. Hence, a late replica may start state transfer. However, this replica will assert when state transfer is done because the initial key exchange has not been completed yet. The solution is not to assert if the initial key exchange has not been done yet. Testing Done CI
1 parent b20cfda commit a7a8bfe

File tree

1 file changed

+1
-1
lines changed

1 file changed

+1
-1
lines changed

bftengine/src/bftengine/KeyExchangeManager.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -134,7 +134,7 @@ void KeyExchangeManager::loadPublicKeys() {
134134
// after State Transfer public keys for all replicas are expected to exist
135135
auto num_loaded = publicKeys_.loadAllReplicasKeyStoresFromReservedPages();
136136
uint32_t liveQuorumSize = ReplicaConfig::instance().waitForFullCommOnStartup ? clusterSize_ : quorumSize_;
137-
if (ReplicaConfig::instance().getkeyExchangeOnStart()) {
137+
if (ReplicaConfig::instance().getkeyExchangeOnStart() && exchanged()) {
138138
ConcordAssertGE(num_loaded, liveQuorumSize);
139139
}
140140
LOG_INFO(KEY_EX_LOG, "building crypto system after state transfer");

0 commit comments

Comments
 (0)