#1357

feat: Deliver the first OpenDAL secondary-cache engine

OpenXuanwoopened 1mo ago

Part of #1350. This is the implementation workstream: finish draft #1360 and its example in #1361 so callers can use OpenDAL after Foyer memory.

First-version delivery

  • Incorporate the merged Keeper support (#1359) and Device-independent boundary (#1364), including the tested OpenDAL adaptation.
  • Provide public construction from an OpenDAL Operator, with documented key/value types, supported write policies, capabilities, namespace and limits. Keep backend dependencies optional.
  • Complete the memory → secondary cache → source path, retain write coalescing, and support admission rejection, capacity eviction and refill under immutable keys.
  • Address actual gaps against the first-version checklists in #1351 and #1353–#1356. These checklists may be resolved directly in the engine PR; neither separate subsystems nor separate PRs are required.
  • Integrate the relevant public-API verification and working example from #1358 as implementation progresses. Existing BlockEngine users remain supported.

The initial scope is Fs/Redis, fresh exclusive namespaces, no recovery, bounded engine-owned work and best-effort writes/cleanup. Failed cache writes can be discarded; successful source fetches must remain usable.

Possible follow-ups — not blockers

Recovery, shared writers, automatic orphan reconciliation, streaming, broader codecs, advanced quota management and additional performance tuning are deferred as described in #1350. They are not dependencies of this implementation issue.

Close this issue when the first-version implementation and its documented usage are merged. #1358 records the evidence for that same delivery, not a second engine project.

Activity

0

No activity yet.