~/bend-docscommunity

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.

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>)