~/bend-docscommunity

src/DurableCommit.bend source

src/DurableCommit.bend on the hub · documented module

import Baseimport ./Db.bend as Dbimport ./Wal.bend as Wal# Identifies the durability boundary reached by a commit.type Stage is Data:  EncodingRejected{error: Wal.Error}  AppendRejected{code: U32, message: String}  AppendUnknown{code: U32, message: String}  DurableAppend{}# Applies mutations only after the WAL commit stage is durable.def apply(pair: Stage & List<&2, Wal.Mut>, +db: Db.Db) -> Db.Db & Stage:  match pair:    case (stage, muts):      match stage:        case EncodingRejected{error}:          (db, EncodingRejected{error})        case AppendRejected{code, message}:          (db, AppendRejected{code, message})        case AppendUnknown{code, message}:          (db, AppendUnknown{code, message})        case DurableAppend{}:          match db:            case Db.Db{dir, mem, frozen, batch_cap, bcache, levels, flushed, manifest_token, mem_count, frozen_count}:              (Db.apply_done(Db.apply_and_rotate(muts, mem, frozen, mem_count, frozen_count), dir,                batch_cap, bcache, levels, flushed, manifest_token), DurableAppend{})