Commit Graph

13 Commits

Author SHA1 Message Date
Kelvin Mwinuka
4bc1f44e1d Added Apache 2.0 license header to all go files in src folder 2024-03-24 18:30:17 +08:00
Kelvin Mwinuka
f27a0dda79 Implemented eviction algorithm that samples a configurable number of keys with TTLs (default 20) at a configurable interval (default 100ms) and deletes the keys that are expired. 2024-03-12 02:12:55 +08:00
Kelvin Mwinuka
52b39d5b0f Re-enabled cluster nodes in docker-compose.yml.
Created flow to forward key deletion command from non-leader node to leader node.
Created flow for propagating key deletion accross the entire cluster to maintain consistency of the deleted keys.
2024-03-11 20:39:57 +08:00
Kelvin Mwinuka
8000cef72d Added RWMutex to keysWithExpiry in order to improve thread safety 2024-03-11 02:10:23 +08:00
Kelvin Clement Mwinuka
f9ae87862c Implemented multiple server cert/key pairs. Implemented mTLS for verifying client using multiple pem files. 2024-02-03 00:24:59 +08:00
Kelvin Clement Mwinuka
d31acfbbdd Updated Raft snapshot to also persist last saved unix timestamp in milliseconds. This timestamp is re-loaded when the server is re-started.
Created standalone snapshot flow including manifest file that is used to determine whether another snapshot should be taken based on the hashed contents of the snapshot.
2024-01-28 03:36:09 +08:00
Kelvin Clement Mwinuka
7e59de20a2 Implement checking wether snapshot is in progress before continuing 2024-01-27 01:46:16 +08:00
Kelvin Clement Mwinuka
3c5d6fef2c Created basic handling for taking snapshots. Will implemented error when snapshot in progress and propagation of snapshot command to the rest of the cluster 2024-01-26 00:58:43 +08:00
Kelvin Clement Mwinuka
97f0f142a6 Added configuration options for snapshot threshold and snapshot interval 2024-01-25 18:59:04 +08:00
Kelvin Clement Mwinuka
bdebdea7ad Added snapshot interval value to raft configuration 2024-01-25 18:04:02 +08:00
Kelvin Clement Mwinuka
4e12064ce8 Implemented snapshot persistence on raft layer 2024-01-25 17:52:22 +08:00
Kelvin Clement Mwinuka
1c00706f88 Updated module name to echovault 2024-01-24 22:32:05 +08:00
Kelvin Clement Mwinuka
78aa9a82c6 Renamed memebrlist_layer directory to memberlist.
Renamed raft_layer directory to raft.
Created snapshot and aof packages to handle snapshots in standalone mode and aof package to handle append-only function.
Created server package that will contain the server logic.
2024-01-21 15:03:36 +08:00