#spawnSync ETIMEOUT on 2026.4.27 upgrade

1 messages · Page 1 of 1 (latest)

brazen hornet
#

I'm getting this on 2026.4.27 upgrade:

openclaw update
Updating OpenClaw...
Update Result: OK
  Root: /usr/lib/node_modules/openclaw
  Before: 2026.4.26
  After: 2026.4.27

Total time: 92.91s

Updating plugins...
No plugin updates needed.
Completion cache update failed: Error: spawnSync /usr/bin/node ETIMEDOUT

Restarting service...
Gateway did not become healthy after restart.
Gateway version mismatch: expected 2026.4.27, running gateway reported unavailable.
Service runtime: status=running, state=active, pid=2077013, lastExit=0
Gateway port 18789 status: free.
Restart log: /root/.openclaw/logs/gateway-restart.log
Run `openclaw gateway status --deep` for details.

That doesn't look good. What does Completion cache update failed: Error: spawnSync /usr/bin/node ETIMEDOUT mean?

abstract glacierBOT
#

To help others find answers, you can mark your question as solved via Right click solution message -> Apps -> ✅ Mark Solution

narrow monolithBOT
#

That specific line is not the scary part.

Completion cache update failed: Error: spawnSync /usr/bin/node ETIMEDOUT means the updater tried to run Node to refresh OpenClaw’s shell tab-completion cache, and that helper process timed out. Worst case: your openclaw <TAB> completions may be stale.

You can refresh it later with:

openclaw completion --write-state

The concerning part is this:

Gateway did not become healthy after restart.
Gateway port 18789 status: free.
brazen hornet
#

Ok, it seems to have recovered from that by itself.

Now I see that the memory tool is broken, all calls apparently end up with Cannot find package 'chokidar' imported from ...manager-jzSMQjEt.js. Do you know about that?

narrow monolithBOT
#

I don’t have it as a confirmed named regression, but that symptom is recognizable: memory-core needs chokidar for its file-watching/index manager, and the bundled plugin runtime deps stage didn’t materialize it where the memory plugin is loading from.

Try this:

openclaw plugins deps --repair
openclaw gateway restart

Then start a fresh session / reset the agent so the memory runtime reloads.

If it still fails, paste:

openclaw --version
openclaw plugins deps --json
brazen hornet
#

openclaw plugins deps --repair
error: unknown option '--repair'

narrow monolithBOT
#

Ah, my bad — openclaw plugins deps --repair is newer than your build/docs drifted ahead of 2026.4.27.

Use the doctor repair path instead:

openclaw plugins deps
openclaw doctor --fix
openclaw gateway restart

Then retry memory.

If it still errors, paste:

openclaw --version
#
openclaw plugins deps --json
openclaw status --all

I’m expecting chokidar@^5.0.0 to show as missing for memory-core. Don’t manually npm install into /usr/lib/node_modules/openclaw yet — doctor should stage bundled plugin deps under OpenClaw state.

brazen hornet
#

openclaw plugins deps
error: too many arguments for 'plugins'. Expected 0 arguments but got 1.

narrow monolithBOT
#

Yep, that’s my mistake — I was looking at newer/main docs. openclaw plugins deps is not in 2026.4.27 yet.

For .27, use the doctor path:

openclaw doctor --fix
openclaw gateway restart

Then retry memory.

If doctor --fix doesn’t mention/install “bundled plugin runtime deps” or memory still says missing chokidar, paste the doctor output. At that point I’d treat it as a 2026.4.27 bundled-runtime-deps regression and we can use a state-dir workaround instead of writing into /usr/lib/node_modules/openclaw.

Docs: https://docs.openclaw.ai/gateway/doctor

brazen hornet
#

Okay, that worked.
Now I'm getting this in openclaw logs:
Apr 29 17:06:57 openclaw node[2078300]: 2026-04-29T17:06:57.027-07:00 [memory] sqlite-vec unavailable: Cannot find package 'sqlite-vec' imported from /root/.openclaw/plugin-runtime-deps/openclaw-2026.4.27-4eca5026e977/dist/engine-storage-CO3qFXo7.js
Apr 29 17:06:57 openclaw node[2078300]: Did you mean to import "sqlite-vec/index.cjs"?
Apr 29 17:06:57 openclaw node[2078300]: 2026-04-29T17:06:57.110-07:00 [ws] ⇄ res ✓ node.list 64ms conn=e876c801…0c9a id=ec481f52…bbcd
Apr 29 17:06:58 openclaw node[2078300]: 2026-04-29T17:06:58.562-07:00 [memory] chunks_vec not updated — sqlite-vec unavailable: Cannot find package 'sqlite-vec' imported from /root/.openclaw/plugin-runtime-deps/openclaw-2026.4.27-4eca5026e977/dist/engine-storage-CO3qFXo7.js
Apr 29 17:06:58 openclaw node[2078300]: Did you mean to import "sqlite-vec/index.cjs"?. Vector recall degraded. Further duplicate warnings suppressed.

narrow monolithBOT
#

Yep — this is the same class of issue, but for the optional vector accelerator.

Meaning: memory is running, but sqlite-vec wasn’t present in the staged runtime-deps root, so OpenClaw falls back to slower/in-process vector scoring. Not catastrophic, but degraded.

Workaround:

cd /root/.openclaw/plugin-runtime-deps/openclaw-2026.4.27-4eca5026e977
npm install --no-save --no-audit --no-fund sqlite-vec@0.1.9
openclaw gateway restart

Then optionally rebuild memory:

openclaw memory index --force --agent main
#

If you just want to silence/use fallback for now:

openclaw config set agents.defaults.memorySearch.store.vector.enabled false
openclaw gateway restart

I’d file this as a GitHub issue too — 2026.4.27 looks like it missed staging sqlite-vec alongside the memory runtime deps: https://github.com/openclaw/openclaw/issues

brazen hornet
#

hrm, after running npm install ... I see
root@openclaw:~/.openclaw/plugin-runtime-deps/openclaw-2026.4.27-4eca5026e977- ll node_modules/sql*
ls: cannot access 'node_modules/sql*': No such file or directory

narrow monolithBOT
#

Hmm — that likely means npm didn’t install into that directory, maybe because of cwd/prefix/global npm config weirdness.

Try forcing the prefix explicitly:

stage=/root/.openclaw/plugin-runtime-deps/openclaw-2026.4.27-4eca5026e977

env -u npm_config_global -u npm_config_prefix -u npm_config_location \
  npm install --prefix "$stage" --no-save --no-package-lock --no-audit --no-fund sqlite-vec@0.1.9

ls -la "$stage/node_modules/sqlite-vec"
cd "$stage" && node --input-type=module -e "import('sqlite-vec').then(m => console.log('sqlite-vec ok', m.getLoadablePath?.()))"

openclaw gateway restart

Use the exact stage path from the log. If that ls still shows nothing, paste the npm install output — I’m worried npm is redirecting to a different prefix.

brazen hornet
#

okay, the npm thing worked but I'm still seeing
Apr 29 17:24:01 openclaw node[2078979]: 2026-04-29T17:24:01.560-07:00 [memory] sqlite-vec unavailable: Cannot find package 'sqlite-vec' imported from /root/.openclaw/plugin-runtime-deps/openclaw-2026.4.27-4eca5026e977/dist/engine-storage-CO3qFXo7.js
Apr 29 17:24:01 openclaw node[2078979]: Did you mean to import "sqlite-vec/index.cjs"?

narrow monolithBOT
#

Hmm, if npm installed successfully but the gateway still can’t resolve it, let’s verify from the exact importer root in the log.

Run:

stage=/root/.openclaw/plugin-runtime-deps/openclaw-2026.4.27-4eca5026e977

npm ls --prefix "$stage" sqlite-vec
ls -la "$stage/node_modules/sqlite-vec"

cat > "$stage/dist/_sqlite_vec_probe.mjs" <<'EOF'
console.log("from", import.meta.url);
console.log("resolved", await import.meta.resolve("sqlite-vec"));
const m = await import("sqlite-vec");
console.log("loaded", m.getLoadablePath?.());
EOF
#

node "$stage/dist/_sqlite_vec_probe.mjs"
rm "$stage/dist/_sqlite_vec_probe.mjs"

If that probe succeeds, then it’s likely the gateway didn’t restart onto the same stage/process cleanly:

openclaw gateway restart

If the probe fails, paste that output — then npm installed somewhere, but not somewhere Node can resolve from .../dist/engine-storage-*.js.

Temporary “make logs quiet / accept fallback” option:

#
openclaw config set agents.defaults.memorySearch.store.vector.enabled false
openclaw gateway restart

Memory should still work; this only disables the sqlite-vec acceleration path.

brazen hornet
#

okay, npm install and the other commands worked but after the restart, sqllite-vec is no longer there. It's like openclaw makes a fresh install of the node modules (or a cleanup maybe)

narrow monolithBOT
#

Yep — that behavior makes sense. OpenClaw’s runtime-deps repair path regenerates the staged package.json/node_modules from its known bundled-deps plan. Since sqlite-vec is not in that plan in 2026.4.27, your manual install under the stage root gets wiped/replaced on restart.

If you want the temporary hack to survive restarts, install it under the importer’s dist/ root instead:

stage=/root/.openclaw/plugin-runtime-deps/openclaw-2026.4.27-4eca5026e977

env -u npm_config_global -u npm_config_prefix -u npm_config_location \
  npm install --prefix "$stage/dist" --no-save --no-package-lock --no-audit --no-fund sqlite-vec@0.1.9

node --input-type=module -e "import('$stage/dist/node_modules/sqlite-vec/index.mjs').then(m => console.log(m.getLoadablePath?.()))"

openclaw gateway restart

That’s definitely a workaround, not the real fix. The cleaner temporary option is still:

#
openclaw config set agents.defaults.memorySearch.store.vector.enabled false
openclaw gateway restart

I’d file this as a 2026.4.27 bug: sqlite-vec needs to be included in the staged memory runtime deps / mirrored root runtime deps. https://github.com/openclaw/openclaw/issues

brazen hornet
#

That worked.