mirror of
https://github.com/ModernRelay/omnigraph.git
synced 2026-06-30 02:49:39 +02:00
Three primitives the cluster's object-storage port (RFC-006) needs, on the engine's existing adapter rather than a parallel store: - read_text_versioned: content + an opaque backend version token (S3: the ETag from GET; local: content sha256 — ETags don't exist on a filesystem). - write_text_if_match: replace only when the token still matches. S3 maps to a conditional put (PutMode::Update / If-Match) — verified against RustFS beta.8 through the real object_store 0.12.5 path, no extra builder config needed; local compares content then swaps via temp+rename, the same single-machine semantics callers had before this trait (safe under their own lock protocol, not a cross-process barrier by itself). CAS-lost is Ok(None), never silent. - delete_prefix: recursive + idempotent (local remove_dir_all; S3 list + delete, with the non-atomicity documented for crash-retry callers). Gated S3 coverage: s3_adapter_conditional_writes_contract pins the conditional-write behavior the cluster ledger will depend on (red if a backend bump regresses it), and s3_schema_apply_migrates_live_graph closes the previously-untested schema-apply-on-S3 path before the cluster's schema executor leans on it. Engine gains the sha2 workspace dep. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
59 lines
1.8 KiB
TOML
59 lines
1.8 KiB
TOML
[package]
|
|
name = "omnigraph-engine"
|
|
version = "0.6.2"
|
|
edition = "2024"
|
|
description = "Runtime engine for the Omnigraph graph database."
|
|
license = "MIT"
|
|
repository = "https://github.com/ModernRelay/omnigraph"
|
|
homepage = "https://github.com/ModernRelay/omnigraph"
|
|
documentation = "https://docs.rs/omnigraph-engine"
|
|
|
|
[lib]
|
|
name = "omnigraph"
|
|
|
|
[features]
|
|
default = []
|
|
failpoints = ["dep:fail", "fail/failpoints"]
|
|
|
|
[dependencies]
|
|
omnigraph-compiler = { path = "../omnigraph-compiler", version = "0.6.2" }
|
|
omnigraph-policy = { path = "../omnigraph-policy", version = "0.6.2" }
|
|
lance = { workspace = true }
|
|
lance-datafusion = { workspace = true }
|
|
datafusion = { workspace = true }
|
|
lance-file = { workspace = true }
|
|
lance-index = { workspace = true }
|
|
lance-linalg = { workspace = true }
|
|
lance-namespace = { workspace = true }
|
|
lance-table = { workspace = true }
|
|
arrow-array = { workspace = true }
|
|
arrow-schema = { workspace = true }
|
|
arrow-ord = { workspace = true }
|
|
arrow-select = { workspace = true }
|
|
arrow-cast = { workspace = true }
|
|
tokio = { workspace = true }
|
|
serde = { workspace = true }
|
|
serde_json = { workspace = true }
|
|
reqwest = { workspace = true }
|
|
object_store = { workspace = true }
|
|
ulid = { workspace = true }
|
|
sha2 = { workspace = true }
|
|
base64 = { workspace = true }
|
|
futures = { workspace = true }
|
|
tracing = { workspace = true }
|
|
thiserror = { workspace = true }
|
|
regex = { workspace = true }
|
|
tempfile = { workspace = true }
|
|
fail = { workspace = true, optional = true }
|
|
time = { workspace = true }
|
|
async-trait = { workspace = true }
|
|
url = { workspace = true }
|
|
chrono = { workspace = true }
|
|
arc-swap = { workspace = true }
|
|
|
|
[dev-dependencies]
|
|
omnigraph-compiler = { path = "../omnigraph-compiler", version = "0.6.2" }
|
|
tokio = { workspace = true }
|
|
lance-namespace-impls = { workspace = true }
|
|
serial_test = "3"
|
|
proptest = "1"
|