Skip to content

Engine: fact inserts return success but store nothing when the data directory vanishes (WAL write failure swallowed) #93

Description

@jsam

What happened

During benchmark runs (#89), the OS cleaned up the temp directory a dev server was using as its storage data_dir. From that moment:

  • server.log filled with [wal] ERROR ensure_writer: path=.../persist/wal/current.wal, parent_exists=false
  • +claim[...] inserts over the WS API kept returning success to the client
  • ?claim(C, E, A, V) immediately after those inserts returned zero rows

So every insert silently became a no-op while reporting success. For a reasoning engine this is the same failure class as #91: no error, wrong results - a client has no way to know its facts never landed.

Repro

  1. Start the server with --config pointing data_dir at some directory
  2. rm -rf that directory (or its persist/wal subtree) while the server runs
  3. Insert facts over WS - observe success responses
  4. Query them back - observe empty results, and WAL errors in the server log

Expected

Either of these would be fine; silently acking is not:

  • Insert returns an error to the client when the write-ahead path is unavailable
  • Server recreates missing storage directories on demand (it creates them at startup already)

Found on the verified-completions-plan branch during #89 benchmark work; hit us as an engine pass scoring 0/60 with no error anywhere client-side.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    backendBackend/server relatedbugSomething isn't working

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions