def flush.written

mylsm-lsm-store@0.6.0.1 · src/ByteDurableDb.bend:773

import mylsm-lsm-store@0.6.0.1/src/ByteDurableDb.bend as ByteDurableDb
import Base
import mylsm-lsm-store@0.6.0.1/src/ByteMemTable.bend as ByteMemTable
import mylsm-lsm-store@0.6.0.1/src/ByteManifest.bend as ByteManifest
import mylsm-lsm-store@0.6.0.1/src/ByteManifestIo.bend as ByteManifestIo
import mylsm-lsm-store@0.6.0.1/src/DbLock.bend as DbLock
import mylsm-lsm-store@0.6.0.1/src/scan/VisibleStats.bend as VisibleStats
import mylsm-lsm-store@0.6.0.1/src/CrashPoint.bend as CrashPoint

773def flush.written(
774  +path: String,
775  lock: DbLock.Lock,
776  table: ByteMemTable.Table,
777  entries: List<&1, ByteMemTable.Entry>,
778  file_id: U32,
779  result: Result<&1, &1, U32 & String, Unit>
780) -> IO(Handle & Result<&1, &1, Error, Unit>):
781  match result:
782    case Fail{(code, message)}:
783      IO.pure(Handle & Result<&1, &1, Error, Unit>,
784        (Handle{path, lock, table, Open{}, VisibleStats.Stats{0n, 0n}}, Fail{Io{code, message}}))
785    case Done{Unit{}}:
786      do IO<Handle & Result<&1, &1, Error, Unit>>:
787        _checkpoint : Result<&1, &1, U32 & String, Unit> <-
788          CrashPoint.hit("flush.table_synced")
789        published : Result<&1, &1, U32 & String, Unit> <-
790          ByteManifestIo.write_atomic(path, ByteManifest.GenerationSst{file_id})
791        flush.manifest(path, lock, table, entries, published)

Uses (21)

Used by (1)