feat(audit): implement composite record id
Summary
-
feat(audit): implement composite record id
Logically, the record id consists of 3 fields:
-
raft_id
-- raft id of the current node (ornull
if uninitialized); -
count
-- in-memory id which is auto incremented for each new record; -
gen
-- persistent id which is incremented each time node is started.
However, in practice they are stored inside a global
LogicalClock
.This is what the record looks like now:
{ "id": "1.0.3", "instance_id": "i1", "message": "a new instance `i1` joined the cluster", "raft_id": "1", "severity": "low", "time": "2023-11-29T17:07:36.524+0300", "title": "join_instance" }
Note how those fields are concatenated using
.
; the resulting unique id is represented by a json string type.Furthermore, since audit record logger now depends on the raft machine's state, we decided to move its initialization further into the init sequence (postjoin).
-
Part of #349 (closed)
Ensure that
-
New code is covered by tests (still tbd later) -
API is documented -
Changelog is up to date -
(if Lua API changed) Lua API version is bumped inluamod.rs
-
(if necessary) A follow-up doc issue: docs#134 (closed)
Edited by Yaroslav Dynnikov