Idris2Doc : Data.LSMRRBVector.Types

Data.LSMRRBVector.Types

(source)
Log-Structured Merge RRB Vector Types

Definitions

dataRebuildRequest : Type
  Requests sent to the rebuild service.

Trigger:
- Indicates new buffered work exists.
- Marks rebuild work as pending.
- Does not initiate rebuild.

Totality: total
Visibility: public export
Constructor: 
Trigger : RebuildRequest

Hints:
EqRebuildRequest
ShowRebuildRequest
recordRebuildService : (0_ : Type) ->Type
Totality: total
Visibility: public export
Constructor: 
MkRebuildService : (RebuildRequest->Asynce [Errno] ()) ->RebuildServicee

Projection: 
.run : RebuildServicee->RebuildRequest->Asynce [Errno] ()
.run : RebuildServicee->RebuildRequest->Asynce [Errno] ()
Totality: total
Visibility: public export
run : RebuildServicee->RebuildRequest->Asynce [Errno] ()
Totality: total
Visibility: public export
rebuilder : (RebuildRequest->Asynce [Errno] ()) ->Asyncees (RebuildServicee)
Visibility: export
Generation : Type
  Snapshot generation identifier.

Represents the logical version of the currently published
immutable snapshot.

Properties:
- Monotonically increasing.
- Incremented only after successful publication.
- Readers may compare generations to detect snapshot changes.

Notes:
- Does not encode time.
- Exists purely for ordering and visibility.

Totality: total
Visibility: public export
ThreadId : Type
  A wrapper over Int for thread ids.

Totality: total
Visibility: public export
dataOperation : Type->Type
  Operation represents a deferred vector mutation.

Rather than mutating the underlying RRBVector immediately, all user
modifications are first converted into Operations and appended into
thread-indexed shared state.

Variants:
- Prepend a
Insert a value at the logical beginning.
- Append a
Insert a value at the logical end.
- Insert Nat a
Insert a value at a specified index.
- Delete Nat
Remove a value at a specified index.
- Update Nat a
Replace a value at a specified index.

Role in LSM design:
- Forms the deferred mutation layer.
- Enables batching.
- Prevents writers from mutating snapshots.

Notes:
Indices are interpreted relative to the visible snapshot together with preceding replayed operations.

Totality: total
Visibility: public export
Constructors:
Prepend : a->Operationa
Append : a->Operationa
Insert : Nat->a->Operationa
Delete : Nat->Operationa
Update : Nat->a->Operationa

Hints:
Eq{arg:5479}=>Eq (Operation{arg:5479})
Show{arg:5479}=>Show (Operation{arg:5479})
recordEntry : Type->Type
  Entry represents a deferred mutation event.

Every user write becomes an Entry before entering a thread buffer.

Fields:
- operation <-> Deferred mutation
- timestamp <-> Wall-clock ordering hint
- threadid <-> Originating thread
- sequence <-> Monotonic per-thread counter

Ordering:
- Entries are sorted using (timestamp, threadid, sequence).
- This guarantees deterministic replay even when timestamps collide.

Role in LSM design:
- Unit of deferred work.
- Supports deterministic rebuild.

Totality: total
Visibility: public export
Constructor: 
MkEntry : Operationa->IClockCLOCK_REALTIME->Int->Nat->Entrya

Projections:
.operation : Entrya->Operationa
.sequence : Entrya->Nat
.threadid : Entrya->Int
.timestamp : Entrya->IClockCLOCK_REALTIME

Hints:
Eqa=>Eq (Entrya)
Eq (Entrya) =>Ord (Entrya)
Showa=>Show (Entrya)
.operation : Entrya->Operationa
Totality: total
Visibility: public export
operation : Entrya->Operationa
Totality: total
Visibility: public export
.timestamp : Entrya->IClockCLOCK_REALTIME
Totality: total
Visibility: public export
timestamp : Entrya->IClockCLOCK_REALTIME
Totality: total
Visibility: public export
.threadid : Entrya->Int
Totality: total
Visibility: public export
threadid : Entrya->Int
Totality: total
Visibility: public export
.sequence : Entrya->Nat
Totality: total
Visibility: public export
sequence : Entrya->Nat
Totality: total
Visibility: public export
recordBuffer : Type->Type
  Single append-efficient mutation log.

Represents one physical mutation buffer.

Totality: total
Visibility: public export
Constructor: 
MkBuffer : SnocList (Entrya) ->Nat->Buffera

Projections:
.entries : Buffera->SnocList (Entrya)
.length : Buffera->Nat

Hints:
Eqa=>Eq (Buffera)
Showa=>Show (Buffera)
.entries : Buffera->SnocList (Entrya)
Totality: total
Visibility: public export
entries : Buffera->SnocList (Entrya)
Totality: total
Visibility: public export
.length : Buffera->Nat
Totality: total
Visibility: public export
length : Buffera->Nat
Totality: total
Visibility: public export
recordWriteBuffers : Type->Type
  Thread-local mutation state.

Writers append only to active.

During rebuild:
- Active buffers are extracted atomically.
- Ownership transfers to the rebuilder.
- Writers immediately continue on a fresh buffer.

Properties:
- O(1) amortized append.
- No stop-the-world pauses.
- No shared rebuild ownership.

Totality: total
Visibility: public export
Constructor: 
MkWriteBuffers : Buffera->WriteBuffersa

Projection: 
.active : WriteBuffersa->Buffera

Hints:
Eqa=>Eq (WriteBuffersa)
Showa=>Show (WriteBuffersa)
.active : WriteBuffersa->Buffera
Totality: total
Visibility: public export
active : WriteBuffersa->Buffera
Totality: total
Visibility: public export
recordThreadContext : Type->Type
  ThreadContext stores per-thread mutation state.

Ownership:
- One ThreadContext exists per registered thread.

Fields:
- threadid <-> Unique thread identifier
- sequence <-> Monotonically increasing local counter used for deterministic ordering
- buffers <-> Thread-owned double-buffer state

Properties:
- Per-thread logical ownership.
- Shared registry storage.
- Low-contention write path.

Totality: total
Visibility: public export
Constructor: 
MkThreadContext : Int->Nat->WriteBuffersa->ThreadContexta

Projections:
.buffers : ThreadContexta->WriteBuffersa
.sequence : ThreadContexta->Nat
.threadid : ThreadContexta->Int

Hints:
Eqa=>Eq (ThreadContexta)
Showa=>Show (ThreadContexta)
.threadid : ThreadContexta->Int
Totality: total
Visibility: public export
threadid : ThreadContexta->Int
Totality: total
Visibility: public export
.sequence : ThreadContexta->Nat
Totality: total
Visibility: public export
sequence : ThreadContexta->Nat
Totality: total
Visibility: public export
.buffers : ThreadContexta->WriteBuffersa
Totality: total
Visibility: public export
buffers : ThreadContexta->WriteBuffersa
Totality: total
Visibility: public export
dataRebuildState : Type
  RebuildState represents rebuild thread progress.

Lifecycle:

Sleeping

RotatingBuffers

CollectingEntries

SortingEntries

PublishingSnapshot

Sleeping

Totality: total
Visibility: public export
Constructors:
Sleeping : RebuildState
RotatingBuffers : RebuildState
CollectingEntries : RebuildState
SortingEntries : RebuildState
PublishingSnapshot : RebuildState

Hints:
EqRebuildState
ShowRebuildState
recordRebuildMetrics : Type
  Runtime rebuild statistics.

Metrics are updated after successful rebuild cycles and provide lightweight visibility into rebuild behavior.

Fields:
- lastbatchsize <-> Number of entries processed during most recent rebuild.
- totalbatchsize <-> Total number of entries processed across all rebuilds.
- rebuildcount <-> Number of successful rebuild cycles.

Derived values:
- average batch size: totalbatchsize / rebuildcount

Properties:
- Updated only by the rebuild worker.
- Does not affect correctness.
- Intended for observability and adaptive tuning.

Totality: total
Visibility: public export
Constructor: 
MkRebuildMetrics : Nat->Nat->Nat->RebuildMetrics

Projections:
.lastbatchsize : RebuildMetrics->Nat
.rebuildcount : RebuildMetrics->Nat
.totalbatchsize : RebuildMetrics->Nat

Hints:
EqRebuildMetrics
ShowRebuildMetrics
.lastbatchsize : RebuildMetrics->Nat
Totality: total
Visibility: public export
lastbatchsize : RebuildMetrics->Nat
Totality: total
Visibility: public export
.totalbatchsize : RebuildMetrics->Nat
Totality: total
Visibility: public export
totalbatchsize : RebuildMetrics->Nat
Totality: total
Visibility: public export
.rebuildcount : RebuildMetrics->Nat
Totality: total
Visibility: public export
rebuildcount : RebuildMetrics->Nat
Totality: total
Visibility: public export
recordRebuildServiceState : Type
  Controls execution of rebuild-cycle progress.

Fields:
- rebuildphase: Current phase of the rebuild pipeline.
- rebuildmetrics: Runtime rebuild statistics.

Properties:
- Local service execution state only.
- Mutable only by the rebuild worker.
- Represents execution progress rather than global vector state.

Notes:
- Pending rebuild work is tracked globally through CombinedSnapshotState.rebuildpending.
- Failure state is intentionally omitted.
- Current rebuild operations are total and crash on unrecoverable runtime failures rather than persisting structured errors.

Totality: total
Visibility: public export
Constructor: 
MkRebuildServiceState : RebuildState->RebuildMetrics->RebuildServiceState

Projections:
.rebuildmetrics : RebuildServiceState->RebuildMetrics
.rebuildphase : RebuildServiceState->RebuildState

Hints:
EqRebuildServiceState
ShowRebuildServiceState
.rebuildphase : RebuildServiceState->RebuildState
Totality: total
Visibility: public export
rebuildphase : RebuildServiceState->RebuildState
Totality: total
Visibility: public export
.rebuildmetrics : RebuildServiceState->RebuildMetrics
Totality: total
Visibility: public export
rebuildmetrics : RebuildServiceState->RebuildMetrics
Totality: total
Visibility: public export
recordReaderState : Type
  Reader participation in generation tracking.

Readers announce the snapshot generation currently being observed.

Properties:
- Updated only when entering/leaving a snapshot read section.
- Used by reclamation to determine oldest active generation.
- One entry per participating thread.

Totality: total
Visibility: public export
Constructor: 
MkReaderState : Generation->ReaderState

Projection: 
.generation : ReaderState->Generation
.generation : ReaderState->Generation
Totality: total
Visibility: public export
generation : ReaderState->Generation
Totality: total
Visibility: public export
recordSnapshotState : Type->Type
  Immutable published snapshot state.

Represents the currently visible version of the vector.

Fields:
- generation <-> Monotonic snapshot version identifier
- tree <-> Immutable published RRB snapshot

Publication properties:
- Tree and generation are published atomically.
- Readers always observe a consistent snapshot pair.
- Eliminates visibility races between tree updates and generation updates.

Lifecycle:

rebuild

new snapshot tree

increment generation

atomic publication

visible to readers

Notes:
- SnapshotState is immutable once constructed.
- Publication occurs by replacing the whole record.

Totality: total
Visibility: public export
Constructor: 
MkSnapshotState : Generation->RRBVectora->SnapshotStatea

Projections:
.generation : SnapshotStatea->Generation
.tree : SnapshotStatea->RRBVectora
.generation : SnapshotStatea->Generation
Totality: total
Visibility: public export
generation : SnapshotStatea->Generation
Totality: total
Visibility: public export
.tree : SnapshotStatea->RRBVectora
Totality: total
Visibility: public export
tree : SnapshotStatea->RRBVectora
Totality: total
Visibility: public export
recordRetiredSnapshot : Type->Type
  Snapshot awaiting reclamation.

A snapshot becomes retired after publication of a newer snapshot.

Properties:
- Immutable after retirement.
- Safe to reclaim once no reader references its generation.

Totality: total
Visibility: public export
Constructor: 
MkRetiredSnapshot : Generation->RRBVectora->RetiredSnapshota

Projections:
.generation : RetiredSnapshota->Generation
.tree : RetiredSnapshota->RRBVectora
.generation : RetiredSnapshota->Generation
Totality: total
Visibility: public export
generation : RetiredSnapshota->Generation
Totality: total
Visibility: public export
.tree : RetiredSnapshota->RRBVectora
Totality: total
Visibility: public export
tree : RetiredSnapshota->RRBVectora
Totality: total
Visibility: public export
recordCombinedSnapshotState : Type->Type
  Combined snapshot publication, reclamation, and batching state.

Fields:
- currentsnapshot: Current published immutable snapshot.
- retiredsnapshots: Older snapshots awaiting reclamation.
- readerstate: Active reader generation announcements.
- writepressure: Number of writes accumulated since the last rebuild cycle.
- rebuildpending: Indicates whether buffered work exists requiring rebuild.
- batchwindow: Current adaptive rebuild target controlling how many writes are accumulated before rebuild behavior expands or contracts.

Properties:
- Updated atomically through CAS.
- Shared between readers, writers, and rebuilder.
- Adaptive batching decisions observe a globally consistent state.

Totality: total
Visibility: public export
Constructor: 
MkCombinedSnapshotState : SnapshotStatea->List (RetiredSnapshota) ->SortedMapThreadIdReaderState->Nat->Bool->Nat->CombinedSnapshotStatea

Projections:
.batchwindow : CombinedSnapshotStatea->Nat
.currentsnapshot : CombinedSnapshotStatea->SnapshotStatea
.readerstate : CombinedSnapshotStatea->SortedMapThreadIdReaderState
.rebuildpending : CombinedSnapshotStatea->Bool
.retiredsnapshots : CombinedSnapshotStatea->List (RetiredSnapshota)
.writepressure : CombinedSnapshotStatea->Nat
.currentsnapshot : CombinedSnapshotStatea->SnapshotStatea
Totality: total
Visibility: public export
currentsnapshot : CombinedSnapshotStatea->SnapshotStatea
Totality: total
Visibility: public export
.retiredsnapshots : CombinedSnapshotStatea->List (RetiredSnapshota)
Totality: total
Visibility: public export
retiredsnapshots : CombinedSnapshotStatea->List (RetiredSnapshota)
Totality: total
Visibility: public export
.readerstate : CombinedSnapshotStatea->SortedMapThreadIdReaderState
Totality: total
Visibility: public export
readerstate : CombinedSnapshotStatea->SortedMapThreadIdReaderState
Totality: total
Visibility: public export
.writepressure : CombinedSnapshotStatea->Nat
Totality: total
Visibility: public export
writepressure : CombinedSnapshotStatea->Nat
Totality: total
Visibility: public export
.rebuildpending : CombinedSnapshotStatea->Bool
Totality: total
Visibility: public export
rebuildpending : CombinedSnapshotStatea->Bool
Totality: total
Visibility: public export
.batchwindow : CombinedSnapshotStatea->Nat
Totality: total
Visibility: public export
batchwindow : CombinedSnapshotStatea->Nat
Totality: total
Visibility: public export
recordLSMRRBVector : Type->Type->Type
  A concurrent log-structured sequence built on immutable RRBVector snapshots.

Architecture:
- Writers append deferred mutations into thread-local buffers.
- Readers access immutable published snapshots.
- A background rebuilder periodically merges buffered mutations into a new RRBVector snapshot.

Concurrency model:
- Readers never block writers.
- Writers never mutate published snapshots.
- Snapshot publication occurs atomically.
- Retired snapshots are reclaimed using generation tracking.

Internally combines:
- Thread-local mutation logs.
- Immutable RRBVector snapshots.
- Background rebuild publication.
- Generation-based reclamation.
- Adaptive rebuild batching.

Visibility:
- Writes become visible only after rebuild and publication.
- Readers observe a consistent immutable snapshot.

Notes:
- Optimized for high write concurrency.
- Read performance matches the underlying RRBVector snapshot.

Totality: total
Visibility: public export
Constructor: 
MkLSMRRBVector : Refs (SortedMapThreadId (ThreadContexta)) ->Refs (CombinedSnapshotStatea) ->RefsBool->LSMRRBVectorsa

Projections:
.buffers : LSMRRBVectorsa->Refs (SortedMapThreadId (ThreadContexta))
.combinedsnapshotstate : LSMRRBVectorsa->Refs (CombinedSnapshotStatea)
.rebuildscheduled : LSMRRBVectorsa->RefsBool
.buffers : LSMRRBVectorsa->Refs (SortedMapThreadId (ThreadContexta))
Totality: total
Visibility: public export
buffers : LSMRRBVectorsa->Refs (SortedMapThreadId (ThreadContexta))
Totality: total
Visibility: public export
.combinedsnapshotstate : LSMRRBVectorsa->Refs (CombinedSnapshotStatea)
Totality: total
Visibility: public export
combinedsnapshotstate : LSMRRBVectorsa->Refs (CombinedSnapshotStatea)
Totality: total
Visibility: public export
.rebuildscheduled : LSMRRBVectorsa->RefsBool
Totality: total
Visibility: public export
rebuildscheduled : LSMRRBVectorsa->RefsBool
Totality: total
Visibility: public export
recordLSMRRBVectorConfig : Type
  Configuration controlling rebuild and adaptive batching behavior.

Fields:
- initialbatchwindow: Initial adaptive batching target used before runtime adjustments occur.

Properties:
- Does not affect correctness.
- Influences rebuild latency/throughput tradeoffs.
- Serves as the starting point for adaptive window adjustment.

Typical values:
- 16–64: Lower latency, more frequent rebuilds.
- 64–256: Balanced throughput and latency.
- 256+: Higher throughput under sustained write load.

Totality: total
Visibility: public export
Constructor: 
MkLSMRRBVectorConfig : Nat->LSMRRBVectorConfig

Projection: 
.initialbatchwindow : LSMRRBVectorConfig->Nat
.initialbatchwindow : LSMRRBVectorConfig->Nat
Totality: total
Visibility: public export
initialbatchwindow : LSMRRBVectorConfig->Nat
Totality: total
Visibility: public export