Documentation
¶
Overview ¶
Package NoKV provides the embedded database API and engine wiring.
Index ¶
- type CacheStatsSnapshot
- type ColumnFamilySnapshot
- type CompactionStatsSnapshot
- type CoreAPI
- type DB
- func (db *DB) Close() error
- func (db *DB) Del(key []byte) error
- func (db *DB) DelCF(cf kv.ColumnFamily, key []byte) error
- func (db *DB) DeleteVersionedEntry(cf kv.ColumnFamily, key []byte, version uint64) error
- func (db *DB) Get(key []byte) (*kv.Entry, error)
- func (db *DB) GetCF(cf kv.ColumnFamily, key []byte) (*kv.Entry, error)
- func (db *DB) GetVersionedEntry(cf kv.ColumnFamily, key []byte, version uint64) (*kv.Entry, error)
- func (db *DB) Info() *Stats
- func (db *DB) IsClosed() bool
- func (db *DB) Manifest() *manifest.Manager
- func (db *DB) NewInternalIterator(opt *utils.Options) utils.Iterator
- func (db *DB) NewIterator(opt *utils.Options) utils.Iterator
- func (db *DB) RunValueLogGC(discardRatio float64) error
- func (db *DB) Set(key, value []byte) error
- func (db *DB) SetCF(cf kv.ColumnFamily, key, value []byte) error
- func (db *DB) SetRegionMetrics(rm *metrics.RegionMetrics)
- func (db *DB) SetVersionedEntry(cf kv.ColumnFamily, key []byte, version uint64, value []byte, meta byte) error
- func (db *DB) SetWithTTL(key, value []byte, expiresAt uint64) error
- func (db *DB) WAL() *wal.Manager
- type DBIterator
- type FlushStatsSnapshot
- type HotKeyStat
- type HotStatsSnapshot
- type Item
- type LSMLevelStats
- type LSMStatsSnapshot
- type MemTableEngine
- type Options
- type RaftStatsSnapshot
- type RegionStatsSnapshot
- type Stats
- type StatsSnapshot
- type ValueLogStatsSnapshot
- type WALStatsSnapshot
- type WriteStatsSnapshot
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type CacheStatsSnapshot ¶ added in v0.6.0
type CacheStatsSnapshot struct {
BlockL0HitRate float64 `json:"block_l0_hit_rate"`
BlockL1HitRate float64 `json:"block_l1_hit_rate"`
BloomHitRate float64 `json:"bloom_hit_rate"`
IndexHitRate float64 `json:"index_hit_rate"`
IteratorReused uint64 `json:"iterator_reused"`
}
CacheStatsSnapshot captures block/index/bloom hit-rate indicators.
type ColumnFamilySnapshot ¶
ColumnFamilySnapshot aggregates read/write counters for a single column family.
type CompactionStatsSnapshot ¶ added in v0.6.0
type CompactionStatsSnapshot struct {
Backlog int64 `json:"backlog"`
MaxScore float64 `json:"max_score"`
LastDurationMs float64 `json:"last_duration_ms"`
MaxDurationMs float64 `json:"max_duration_ms"`
Runs uint64 `json:"runs"`
IngestRuns int64 `json:"ingest_runs"`
MergeRuns int64 `json:"ingest_merge_runs"`
IngestMs float64 `json:"ingest_ms"`
MergeMs float64 `json:"ingest_merge_ms"`
IngestTables int64 `json:"ingest_tables"`
MergeTables int64 `json:"ingest_merge_tables"`
ValueWeight float64 `json:"value_weight"`
ValueWeightSuggested float64 `json:"value_weight_suggested,omitempty"`
}
CompactionStatsSnapshot summarizes compaction backlog, runtime, and ingest behavior.
type CoreAPI ¶
type CoreAPI interface {
Set(key, value []byte) error
SetWithTTL(key, value []byte, expiresAt uint64) error
Get(key []byte) (*kv.Entry, error)
Del(key []byte) error
SetCF(cf kv.ColumnFamily, key, value []byte) error
GetCF(cf kv.ColumnFamily, key []byte) (*kv.Entry, error)
DelCF(cf kv.ColumnFamily, key []byte) error
NewIterator(opt *utils.Options) utils.Iterator
Info() *Stats
Close() error
}
CoreAPI describes the externally exposed NoKV operations.
type DB ¶
DB is the global handle for the engine and owns shared resources.
func (*DB) Close ¶
Close stops background workers and flushes in-memory state before releasing all resources.
func (*DB) DelCF ¶
func (db *DB) DelCF(cf kv.ColumnFamily, key []byte) error
DelCF deletes a key from the specified column family.
func (*DB) DeleteVersionedEntry ¶ added in v0.2.0
DeleteVersionedEntry marks the specified version as deleted by writing a tombstone record.
func (*DB) GetCF ¶
GetCF reads a key from the specified column family. The returned entry is detached from internal pools. Callers must not call DecrRef.
func (*DB) GetVersionedEntry ¶ added in v0.2.0
GetVersionedEntry retrieves the value stored at the provided MVCC version. The returned entry is detached from internal pools. Callers must not call DecrRef.
func (*DB) IsClosed ¶
IsClosed reports whether Close has finished and the DB no longer accepts work.
func (*DB) NewInternalIterator ¶ added in v0.5.0
NewInternalIterator returns an iterator over internal keys (CF marker + user key + timestamp). Callers must interpret kv.Entry.Key using kv.SplitInternalKey.
func (*DB) NewIterator ¶
NewIterator creates a DB-level iterator over user keys in the default column family.
func (*DB) RunValueLogGC ¶
RunValueLogGC triggers a value log garbage collection.
func (*DB) SetCF ¶
func (db *DB) SetCF(cf kv.ColumnFamily, key, value []byte) error
SetCF writes a key/value pair into the specified column family.
func (*DB) SetRegionMetrics ¶
func (db *DB) SetRegionMetrics(rm *metrics.RegionMetrics)
SetRegionMetrics attaches region metrics recorder so Stats snapshot and expvar include region state counts.
func (*DB) SetVersionedEntry ¶ added in v0.2.0
func (db *DB) SetVersionedEntry(cf kv.ColumnFamily, key []byte, version uint64, value []byte, meta byte) error
SetVersionedEntry writes a value to the specified column family using the provided version. It mirrors SetCF but allows callers to control the MVCC timestamp embedded in the internal key.
func (*DB) SetWithTTL ¶ added in v0.7.0
SetWithTTL writes a key/value pair into the default column family with an explicit expiry timestamp.
type DBIterator ¶
type DBIterator struct {
// contains filtered or unexported fields
}
DBIterator wraps the merged LSM iterators and optionally resolves value-log pointers.
func (*DBIterator) Close ¶
func (iter *DBIterator) Close() error
Close releases underlying iterators and returns pooled iterator context.
func (*DBIterator) Item ¶
func (iter *DBIterator) Item() utils.Item
Item returns the currently materialized item, or nil when iterator is invalid.
func (*DBIterator) Next ¶
func (iter *DBIterator) Next()
Next advances to the next visible key/value pair.
func (*DBIterator) Rewind ¶
func (iter *DBIterator) Rewind()
Rewind positions the iterator at the first or last key based on scan direction.
func (*DBIterator) Seek ¶
func (iter *DBIterator) Seek(key []byte)
Seek positions the iterator at the first key >= key in default column family order.
func (*DBIterator) Valid ¶
func (iter *DBIterator) Valid() bool
Valid reports whether the iterator currently points at a valid item.
type FlushStatsSnapshot ¶ added in v0.6.0
type FlushStatsSnapshot struct {
Pending int64 `json:"pending"`
QueueLength int64 `json:"queue_length"`
Active int64 `json:"active"`
WaitMs float64 `json:"wait_ms"`
LastWaitMs float64 `json:"last_wait_ms"`
MaxWaitMs float64 `json:"max_wait_ms"`
BuildMs float64 `json:"build_ms"`
LastBuildMs float64 `json:"last_build_ms"`
MaxBuildMs float64 `json:"max_build_ms"`
ReleaseMs float64 `json:"release_ms"`
LastReleaseMs float64 `json:"last_release_ms"`
MaxReleaseMs float64 `json:"max_release_ms"`
Completed int64 `json:"completed"`
}
FlushStatsSnapshot summarizes flush queue depth and stage timing.
type HotKeyStat ¶
HotKeyStat represents one hot key and its observed touch count.
type HotStatsSnapshot ¶ added in v0.6.0
type HotStatsSnapshot struct {
ReadKeys []HotKeyStat `json:"read_keys,omitempty"`
ReadRing *hotring.Stats `json:"read_ring,omitempty"`
WriteKeys []HotKeyStat `json:"write_keys,omitempty"`
WriteRing *hotring.Stats `json:"write_ring,omitempty"`
}
HotStatsSnapshot contains top read/write keys and optional ring internals.
type Item ¶
type Item struct {
// contains filtered or unexported fields
}
Item is the user-facing iterator item backed by an entry and optional vlog reader.
type LSMLevelStats ¶ added in v0.4.0
type LSMLevelStats struct {
Level int `json:"level"`
TableCount int `json:"tables"`
SizeBytes int64 `json:"size_bytes"`
ValueBytes int64 `json:"value_bytes"`
StaleBytes int64 `json:"stale_bytes"`
IngestTables int `json:"ingest_tables"`
IngestSizeBytes int64 `json:"ingest_size_bytes"`
IngestValueBytes int64 `json:"ingest_value_bytes"`
ValueDensity float64 `json:"value_density"`
IngestValueDensity float64 `json:"ingest_value_density"`
IngestRuns int64 `json:"ingest_runs"`
IngestMs float64 `json:"ingest_ms"`
IngestTablesCount int64 `json:"ingest_tables_compacted"`
MergeRuns int64 `json:"ingest_merge_runs"`
MergeMs float64 `json:"ingest_merge_ms"`
MergeTables int64 `json:"ingest_merge_tables"`
}
LSMLevelStats captures aggregated metrics per LSM level.
type LSMStatsSnapshot ¶ added in v0.6.0
type LSMStatsSnapshot struct {
Levels []LSMLevelStats `json:"levels,omitempty"`
ValueBytesTotal int64 `json:"value_bytes_total"`
ValueDensityMax float64 `json:"value_density_max"`
ValueDensityAlert bool `json:"value_density_alert"`
ColumnFamilies map[string]ColumnFamilySnapshot `json:"column_families,omitempty"`
}
LSMStatsSnapshot summarizes per-level storage shape and value-density signals.
type MemTableEngine ¶ added in v0.4.2
type MemTableEngine string
MemTableEngine selects the in-memory index implementation used by memtables.
const ( MemTableEngineSkiplist MemTableEngine = "skiplist" MemTableEngineART MemTableEngine = "art" )
type Options ¶
type Options struct {
// FS provides the filesystem implementation used by DB runtime components.
// Nil defaults to vfs.OSFS.
FS vfs.FS
ValueThreshold int64
WorkDir string
MemTableSize int64
MemTableEngine MemTableEngine
SSTableMaxSz int64
MaxBatchCount int64
MaxBatchSize int64 // max batch size in bytes
ValueLogFileSize int
ValueLogMaxEntries uint32
// ValueLogBucketCount controls how many hash buckets the value log uses.
// Values <= 1 disable bucketization.
ValueLogBucketCount int
// ValueLogHotBucketCount reserves this many buckets for hot keys when
// HotRing-based routing is enabled. Values <= 0 disable hot/cold splitting.
ValueLogHotBucketCount int
// ValueLogHotKeyThreshold marks a key as hot once its HotRing counter reaches
// this value. Values <= 0 disable HotRing-based routing.
ValueLogHotKeyThreshold int32
// ValueLogGCInterval specifies how frequently to trigger a check for value
// log garbage collection. Zero or negative values disable automatic GC.
ValueLogGCInterval time.Duration
// ValueLogGCDiscardRatio is the discard ratio for a value log file to be
// considered for garbage collection. It must be in the range (0.0, 1.0).
ValueLogGCDiscardRatio float64
// ValueLogGCParallelism controls how many value-log GC tasks can run in
// parallel. Values <= 0 auto-tune based on compaction workers.
ValueLogGCParallelism int
// ValueLogGCReduceScore lowers GC parallelism when compaction max score meets
// or exceeds this threshold. Values <= 0 use defaults.
ValueLogGCReduceScore float64
// ValueLogGCSkipScore skips GC when compaction max score meets or exceeds this
// threshold. Values <= 0 use defaults.
ValueLogGCSkipScore float64
// ValueLogGCReduceBacklog lowers GC parallelism when compaction backlog meets
// or exceeds this threshold. Values <= 0 use defaults.
ValueLogGCReduceBacklog int
// ValueLogGCSkipBacklog skips GC when compaction backlog meets or exceeds this
// threshold. Values <= 0 use defaults.
ValueLogGCSkipBacklog int
// Value log GC sampling parameters. Ratios <= 0 fall back to defaults.
ValueLogGCSampleSizeRatio float64
ValueLogGCSampleCountRatio float64
ValueLogGCSampleFromHead bool
// ValueLogVerbose enables verbose logging across value-log operations.
ValueLogVerbose bool
WriteBatchMaxCount int
WriteBatchMaxSize int64
DetectConflicts bool
HotRingEnabled bool
HotRingBits uint8
HotRingTopK int
// HotRingRotationInterval enables dual-ring rotation for hotness tracking.
// Zero disables rotation.
HotRingRotationInterval time.Duration
// HotRingNodeCap caps the number of tracked keys per ring. Zero disables the cap.
HotRingNodeCap uint64
// HotRingNodeSampleBits controls stable sampling once the cap is reached.
// A value of 0 enforces a strict cap; larger values sample 1/2^N keys.
HotRingNodeSampleBits uint8
// HotRingDecayInterval controls how often HotRing halves its global counters.
// Zero disables periodic decay.
HotRingDecayInterval time.Duration
// HotRingDecayShift determines how aggressively counters decay (count >>= shift).
HotRingDecayShift uint32
// HotRingWindowSlots controls the number of sliding-window buckets tracked per key.
// Zero disables the sliding window.
HotRingWindowSlots int
// HotRingWindowSlotDuration sets the duration of each sliding-window bucket.
HotRingWindowSlotDuration time.Duration
// ValueLogHotRingOverride uses the dedicated ValueLogHotRing* settings instead
// of the global HotRing configuration when routing hot value-log keys.
ValueLogHotRingOverride bool
// ValueLogHotRingBits controls the hash bucket count for the value-log ring.
// Zero uses the default HotRing bucket count.
ValueLogHotRingBits uint8
// ValueLogHotRingRotationInterval enables rotation for the value-log ring.
// Zero disables rotation.
ValueLogHotRingRotationInterval time.Duration
// ValueLogHotRingNodeCap caps the number of tracked keys per value-log ring.
ValueLogHotRingNodeCap uint64
// ValueLogHotRingNodeSampleBits controls stable sampling for value-log keys.
// A value of 0 enforces a strict cap; larger values sample 1/2^N keys.
ValueLogHotRingNodeSampleBits uint8
// ValueLogHotRingDecayInterval controls how often the value-log ring decays counters.
ValueLogHotRingDecayInterval time.Duration
// ValueLogHotRingDecayShift determines decay aggressiveness for the value-log ring.
ValueLogHotRingDecayShift uint32
// ValueLogHotRingWindowSlots controls the number of sliding-window buckets for the value-log ring.
ValueLogHotRingWindowSlots int
// ValueLogHotRingWindowSlotDuration sets the duration of each value-log window bucket.
ValueLogHotRingWindowSlotDuration time.Duration
SyncWrites bool
ManifestSync bool
// ManifestRewriteThreshold triggers a manifest rewrite when the active
// MANIFEST file grows beyond this size (bytes). Values <= 0 disable rewrites.
ManifestRewriteThreshold int64
// WriteHotKeyLimit caps how many consecutive writes a single key can issue
// before the DB returns utils.ErrHotKeyWriteThrottle. Zero disables write-path
// throttling.
WriteHotKeyLimit int32
// HotWriteBurstThreshold marks a key as "hot" for batching when its write
// frequency exceeds this count; zero disables hot write batching.
HotWriteBurstThreshold int32
// HotWriteBatchMultiplier scales write batch limits when a hot key is
// detected, allowing short-term coalescing of repeated writes.
HotWriteBatchMultiplier int
// WriteBatchWait adds an optional coalescing delay when the commit queue is
// momentarily empty, letting small bursts share one WAL fsync/apply pass.
// Zero disables the delay.
WriteBatchWait time.Duration
// Block cache configuration for read path optimization. Cached blocks
// target L0/L1; colder data relies on the OS page cache.
BlockCacheSize int
BloomCacheSize int
// RaftLagWarnSegments determines how many WAL segments a follower can lag
// behind the active segment before stats surfaces a warning. Zero disables
// the alert.
RaftLagWarnSegments int64
// EnableWALWatchdog enables the background WAL backlog watchdog which
// surfaces typed-record warnings and optionally runs automated segment GC.
EnableWALWatchdog bool
// WALAutoGCInterval controls how frequently the watchdog evaluates WAL
// backlog for automated garbage collection.
WALAutoGCInterval time.Duration
// WALAutoGCMinRemovable is the minimum number of removable WAL segments
// required before an automated GC pass will run.
WALAutoGCMinRemovable int
// WALAutoGCMaxBatch bounds how many WAL segments are removed during a single
// automated GC pass.
WALAutoGCMaxBatch int
// WALTypedRecordWarnRatio triggers a typed-record warning when raft records
// constitute at least this fraction of WAL writes. Zero disables ratio-based
// warnings.
WALTypedRecordWarnRatio float64
// WALTypedRecordWarnSegments triggers a typed-record warning when the number
// of WAL segments containing raft records exceeds this threshold. Zero
// disables segment-count warnings.
WALTypedRecordWarnSegments int64
// DiscardStatsFlushThreshold controls how many discard-stat updates must be
// accumulated before they are flushed back into the LSM. Zero keeps the
// default threshold.
DiscardStatsFlushThreshold int
// NumCompactors controls how many background compaction workers are spawned.
// Zero uses an auto value derived from the host CPU count.
NumCompactors int
// NumLevelZeroTables controls when write throttling kicks in and feeds into
// the compaction priority calculation. Zero falls back to the legacy default.
NumLevelZeroTables int
// IngestCompactBatchSize decides how many L0 tables to promote into the
// ingest buffer per compaction cycle. Zero falls back to the legacy default.
IngestCompactBatchSize int
// IngestBacklogMergeScore triggers an ingest-merge task when the ingest
// backlog score exceeds this threshold. Zero keeps the default (2.0).
IngestBacklogMergeScore float64
// CompactionValueWeight adjusts how aggressively the scheduler prioritises
// levels whose entries reference large value log payloads. Higher values
// make the compaction picker favour levels with high ValuePtr density.
CompactionValueWeight float64
// CompactionValueAlertThreshold triggers stats alerts when a level's
// value-density (value bytes / total bytes) exceeds this ratio.
CompactionValueAlertThreshold float64
// IngestShardParallelism caps how many ingest shards can be compacted in a
// single ingest-only pass. A value <= 0 falls back to 1 (sequential).
IngestShardParallelism int
}
Options holds the top-level database configuration.
func NewDefaultOptions ¶
func NewDefaultOptions() *Options
NewDefaultOptions returns the default option set.
type RaftStatsSnapshot ¶ added in v0.6.0
type RaftStatsSnapshot struct {
GroupCount int `json:"group_count"`
LaggingGroups int `json:"lagging_groups"`
MinLogSegment uint32 `json:"min_log_segment"`
MaxLogSegment uint32 `json:"max_log_segment"`
MaxLagSegments int64 `json:"max_lag_segments"`
LagWarnThreshold int64 `json:"lag_warn_threshold"`
LagWarning bool `json:"lag_warning"`
}
RaftStatsSnapshot summarizes raft log lag across tracked groups.
type RegionStatsSnapshot ¶ added in v0.6.0
type RegionStatsSnapshot struct {
Total int64 `json:"total"`
New int64 `json:"new"`
Running int64 `json:"running"`
Removing int64 `json:"removing"`
Tombstone int64 `json:"tombstone"`
Other int64 `json:"other"`
}
RegionStatsSnapshot reports region counts grouped by region state.
type Stats ¶
type Stats struct {
// contains filtered or unexported fields
}
Stats owns periodic runtime metric collection and snapshot publication.
func (*Stats) SetRegionMetrics ¶
func (s *Stats) SetRegionMetrics(rm *metrics.RegionMetrics)
SetRegionMetrics attaches region metrics recorder used in snapshots.
func (*Stats) Snapshot ¶
func (s *Stats) Snapshot() StatsSnapshot
Snapshot returns a point-in-time metrics snapshot without mutating state.
func (*Stats) StartStats ¶
func (s *Stats) StartStats()
StartStats runs periodic collection of internal backlog metrics.
type StatsSnapshot ¶
type StatsSnapshot struct {
Entries int64 `json:"entries"`
Flush FlushStatsSnapshot `json:"flush"`
Compaction CompactionStatsSnapshot `json:"compaction"`
ValueLog ValueLogStatsSnapshot `json:"value_log"`
WAL WALStatsSnapshot `json:"wal"`
Raft RaftStatsSnapshot `json:"raft"`
Write WriteStatsSnapshot `json:"write"`
Region RegionStatsSnapshot `json:"region"`
Hot HotStatsSnapshot `json:"hot"`
Cache CacheStatsSnapshot `json:"cache"`
LSM LSMStatsSnapshot `json:"lsm"`
Transport transportpkg.GRPCTransportMetrics `json:"transport"`
Redis metrics.RedisSnapshot `json:"redis"`
}
StatsSnapshot captures a point-in-time view of internal backlog metrics.
type ValueLogStatsSnapshot ¶ added in v0.6.0
type ValueLogStatsSnapshot struct {
Segments int `json:"segments"`
PendingDeletes int `json:"pending_deletes"`
DiscardQueue int `json:"discard_queue"`
Heads map[uint32]kv.ValuePtr `json:"heads,omitempty"`
GC metrics.ValueLogGCSnapshot `json:"gc"`
}
ValueLogStatsSnapshot reports value-log segment status and GC counters.
type WALStatsSnapshot ¶ added in v0.6.0
type WALStatsSnapshot struct {
ActiveSegment int64 `json:"active_segment"`
SegmentCount int64 `json:"segment_count"`
ActiveSize int64 `json:"active_size"`
SegmentsRemoved uint64 `json:"segments_removed"`
RecordCounts wal.RecordMetrics `json:"record_counts"`
SegmentsWithRaftRecords int `json:"segments_with_raft_records"`
RemovableRaftSegments int `json:"removable_raft_segments"`
TypedRecordRatio float64 `json:"typed_record_ratio"`
TypedRecordWarning bool `json:"typed_record_warning"`
TypedRecordReason string `json:"typed_record_reason,omitempty"`
AutoGCRuns uint64 `json:"auto_gc_runs"`
AutoGCRemoved uint64 `json:"auto_gc_removed"`
AutoGCLastUnix int64 `json:"auto_gc_last_unix"`
}
WALStatsSnapshot captures WAL head position, record mix, and watchdog status.
type WriteStatsSnapshot ¶ added in v0.6.0
type WriteStatsSnapshot struct {
QueueDepth int64 `json:"queue_depth"`
QueueEntries int64 `json:"queue_entries"`
QueueBytes int64 `json:"queue_bytes"`
AvgBatchEntries float64 `json:"avg_batch_entries"`
AvgBatchBytes float64 `json:"avg_batch_bytes"`
AvgRequestWaitMs float64 `json:"avg_request_wait_ms"`
AvgValueLogMs float64 `json:"avg_vlog_ms"`
AvgApplyMs float64 `json:"avg_apply_ms"`
BatchesTotal int64 `json:"batches_total"`
ThrottleActive bool `json:"throttle_active"`
HotKeyLimited uint64 `json:"hot_key_limited"`
}
WriteStatsSnapshot tracks write-path queue pressure, latency, and throttling.
Source Files
¶
Directories
¶
| Path | Synopsis |
|---|---|
|
cmd
|
|
|
nokv
command
|
|
|
nokv-config
command
|
|
|
nokv-redis
command
|
|
|
Package file provides low-level file and mmap primitives shared by WAL, vlog, and SST layers.
|
Package file provides low-level file and mmap primitives shared by WAL, vlog, and SST layers. |
|
Package manifest persists SST, WAL checkpoint, vlog, and raft metadata.
|
Package manifest persists SST, WAL checkpoint, vlog, and raft metadata. |
|
pd
|
|
|
Package vfs provides a tiny filesystem abstraction and fault-injection wrapper.
|
Package vfs provides a tiny filesystem abstraction and fault-injection wrapper. |
|
Package vlog implements the value-log segment manager and IO helpers.
|
Package vlog implements the value-log segment manager and IO helpers. |
|
Package wal implements the write-ahead log manager and replay logic.
|
Package wal implements the write-ahead log manager and replay logic. |