src/Db.bend fails
raw source on the hub · import 0x05fa0e42448e8e221df592b204de523d/src/Db.bend as Db
8 imports
import Base import ./Keys.bend as Keys import ./MemTable.bend as MemTable import ./Sstable.bend as Sstable import ./Wal.bend as Wal import ./Fs.bend as Fs import ./Manifest.bend as Manifest import ./CrashPoint.bend as CrashPoint
Types
type Db source · line 30 · raw
Data
manifest_token is the exact serialized Manifest observed by this handle. Flush and compaction compare it before publication to reject stale-handle drift.
Db@dir:String -> @mem:0x05fa0e42448e8e221df592b204de523d/src/MemTable.MemTable -> @levels:List<&2, List<&2, 0x05fa0e42448e8e221df592b204de523d/src/Sstable.Table>> -> @flushed:Nat -> @manifest_token:String -> Db
Definitions
def wal_path source · line 33 · raw
@+dir:String -> String
def open_db source · line 36 · raw
@+dir:String -> Db
def apply_mut source · line 41 · raw
@+mem:0x05fa0e42448e8e221df592b204de523d/src/MemTable.MemTable -> @+m:0x05fa0e42448e8e221df592b204de523d/src/Wal.Mut -> 0x05fa0e42448e8e221df592b204de523d/src/MemTable.MemTable
def apply_batch source · line 48 · raw
@+muts:List<&2, 0x05fa0e42448e8e221df592b204de523d/src/Wal.Mut> -> @+mem:0x05fa0e42448e8e221df592b204de523d/src/MemTable.MemTable -> 0x05fa0e42448e8e221df592b204de523d/src/MemTable.MemTable
def table_entries source · line 57 · raw
@+t:0x05fa0e42448e8e221df592b204de523d/src/Sstable.Table -> List<&2, 0x05fa0e42448e8e221df592b204de523d/src/MemTable.Entry>
def level_entries source · line 62 · raw
@+tabs:List<&2, 0x05fa0e42448e8e221df592b204de523d/src/Sstable.Table> -> List<&2, 0x05fa0e42448e8e221df592b204de523d/src/MemTable.Entry>
def all_level_entries source · line 69 · raw
@+lvls:List<&2, List<&2, 0x05fa0e42448e8e221df592b204de523d/src/Sstable.Table>> -> List<&2, 0x05fa0e42448e8e221df592b204de523d/src/MemTable.Entry>
def all_entries source · line 76 · raw
@+db:Db -> List<&2, 0x05fa0e42448e8e221df592b204de523d/src/MemTable.Entry>
def db_get source · line 83 · raw
@+db:Db -> @+k:String -> Maybe<&2, String>
def wal_frame source · line 89 · raw
@+data:String -> String
WAL framing v1 is applied here (see Recover): each batch is stored as dashes(len) ++ ";" ++ encode(batch) so replay can stream frames and truncate a torn tail. Files are permissioned 0600 at creation.
def wal_tail source · line 94 · raw
@fr:Pair(File, Result<&1, &1, Pair(U32, String), Unit>) -> @+dir:String -> IO(Result<&1, &1, Pair(U32, String), Unit>)
Tail of the append: match heads the def body (params always destructurable), so the write's pair splits with single uses.
def wal_append source · line 106 · raw
@+dir:String -> @+data:String -> IO(Result<&1, &1, Pair(U32, String), Unit>)
def db_write source · line 112 · raw
@+db:Db -> @+b:0x05fa0e42448e8e221df592b204de523d/src/Wal.Batch -> IO(Result<&1, &1, Pair(U32, String), Db>)
def db_put source · line 121 · raw
@+db:Db -> @+k:String -> @+v:String -> IO(Result<&1, &1, Pair(U32, String), Db>)
def db_del source · line 124 · raw
@+db:Db -> @+k:String -> IO(Result<&1, &1, Pair(U32, String), Db>)