Log GC occurs during a commit when both an entry has been committed and it has been accepted by all
nodes.
Additionally, add significant test enhancements for quickcheck tests.
Scheduler logs are now output to a file instead of stdout
State and Message output is much easier to read in scheduler logs which makes debugging failure
traces much easier
Panics are now caught during QC runs and the scheduler history can be output even after a panic.
Previously this would result in lost history for the run and a single line stating where the panic
occurred.
Also, accept PrepareOk msgs after view change
PrepareOk messages get sent for uncommitted operations from backups to the new primary so that the
primary can commit those operations. The primary was ignoring them because it wasn't the one to send
the prepare. Now the primary accepts them and can commit operations. Note that this was neither a
safety nor a liveness issue, but simply an optimization, albeit one that the VRR paper specifies.
Log GC occurs during a commit when both an entry has been committed and it has been accepted by all nodes.
Additionally, add significant test enhancements for quickcheck tests.
Also, accept PrepareOk msgs after view change
PrepareOk messages get sent for uncommitted operations from backups to the new primary so that the primary can commit those operations. The primary was ignoring them because it wasn't the one to send the prepare. Now the primary accepts them and can commit operations. Note that this was neither a safety nor a liveness issue, but simply an optimization, albeit one that the VRR paper specifies.
Fix the model to reflect this change.