This PR adds a new integration test (~ 2 seconds running time) that starts a single quorum composed of three cooperating general replication services, and verifies they are able to elect a leader, and then replicate data submitted to that leader.
It also tweaks the GeneralizedReplicator interface so that a sequence number may be returned by the implementation sooner than the commit. (This is a feature necessary, for example, if implementing a distributed log that wants to return a sequence number from an append call, rather than from the following sync call.)
Finally, it fixes various nits in ReplicatorService and BeaconService, especially related to exception reporting and logging.
Btw, there will be a later PR that does some superficial readability improvements for this multi-node test. It isn't included here because it depends on some other stuff down the line.
This PR adds a new integration test (~ 2 seconds running time) that starts a single quorum composed of three cooperating general replication services, and verifies they are able to elect a leader, and then replicate data submitted to that leader.
It also tweaks the GeneralizedReplicator interface so that a sequence number may be returned by the implementation sooner than the commit. (This is a feature necessary, for example, if implementing a distributed log that wants to return a sequence number from an append call, rather than from the following sync call.)
Finally, it fixes various nits in ReplicatorService and BeaconService, especially related to exception reporting and logging.