- Client SDK will connect to a node, get node information and decide if
it needs to connect to a primary for writes, or pick a replica to
connect to for reads
- Updated service with a GetNodeInfo rpc call which returns information
about the node to enable the smart selection code in the sdks
- Primary nodes will connect to the WAL for observations, start a gRPC
server for replication, and shutdown properly
- Replica nodes will connect to the primary, apply received entries to
local storage, and enforce read-only mode for consistency
- Integrates the decision primary/replica/standalone into the kevo cli
- Created state handlers for all replication states
- Implemented transitions based on received data
- Added a WAL entry applier with validation
- Implemented connection/reconnection management
- Implemented ACK/NACK tracking and verification
- Created the WAL observer for the primary
- Implements session management and connection tracking
- Implemented the WAL streaming service over gRPC
- Connected WAL retrention to acknowledgements
- WAL package now can notify observers when it writes entries
- WAL can retrieve entries by sequence number
- WAL implements file retention management
- Add replication protocol defined using protobufs
- Implemented compression support for zstd and snappy
- State machine for replication added
- Batch management for streaming from the WAL