Skip to content

Commit 539818e

Browse files
add more nullify checks
1 parent b38fed2 commit 539818e

1 file changed

Lines changed: 30 additions & 1 deletion

File tree

  • consensus/src/threshold_simplex

consensus/src/threshold_simplex/mod.rs

Lines changed: 30 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -447,6 +447,19 @@ mod tests {
447447
if finalizers.len() != n as usize {
448448
exceptions += 1;
449449
}
450+
451+
// Ensure no nullifies for any finalizers
452+
let nullifies = supervisor.nullifies.lock().unwrap();
453+
let Some(nullifies) = nullifies.get(view) else {
454+
continue;
455+
};
456+
for (_, finalizers) in payloads.iter() {
457+
for finalizer in finalizers.iter() {
458+
if nullifies.contains(finalizer) {
459+
panic!("should not nullify and finalize at same view");
460+
}
461+
}
462+
}
450463
}
451464
}
452465

@@ -1039,6 +1052,14 @@ mod tests {
10391052
}
10401053
}
10411054
}
1055+
{
1056+
let nullifies = supervisor.nullifies.lock().unwrap();
1057+
for (view, participants) in nullifies.iter() {
1058+
if participants.contains(offline) {
1059+
panic!("view: {}", view);
1060+
}
1061+
}
1062+
}
10421063
{
10431064
let finalizes = supervisor.finalizes.lock().unwrap();
10441065
for (view, payloads) in finalizes.iter() {
@@ -1195,7 +1216,7 @@ mod tests {
11951216
assert!(faults.is_empty());
11961217
}
11971218

1198-
// Ensure slow node is never active
1219+
// Ensure slow node is never active (will never process anything fast enough to nullify)
11991220
{
12001221
let notarizes = supervisor.notarizes.lock().unwrap();
12011222
for (view, payloads) in notarizes.iter() {
@@ -1206,6 +1227,14 @@ mod tests {
12061227
}
12071228
}
12081229
}
1230+
{
1231+
let nullifies = supervisor.nullifies.lock().unwrap();
1232+
for (view, participants) in nullifies.iter() {
1233+
if participants.contains(slow) {
1234+
panic!("view: {}", view);
1235+
}
1236+
}
1237+
}
12091238
{
12101239
let finalizes = supervisor.finalizes.lock().unwrap();
12111240
for (view, payloads) in finalizes.iter() {

0 commit comments

Comments
 (0)