Skip to main content
← Back to list
01Issue
BugShippedSwamp CLI
Assigneesstack72

Relationships

#445 extension update/pull deadlocks when the repo's datastore is the extension being updated

Opened by keeb · 5/26/2026· Shipped 5/26/2026

Description

swamp extension update <ext> (and pull) deadlocks when the target repo's configured datastore IS the extension being updated — e.g. a repo using a custom datastore plugin like @keeb/mongodb-datastore.

Every swamp command opens the repo's datastore before doing work. But to install/update the datastore extension, the datastore must already be loadable — which it isn't yet (it's the thing being installed). So the command fails before it can register the new version:

Unknown datastore type "@keeb/mongodb-datastore" in .swamp.yaml. Available types: filesystem

You can't update the datastore plugin and use it to open the repo at the same time. This affects a self-hosting datastore extension specifically (the repo depends on the extension it's trying to update).

Note: lazy hydration (swamp-club#440) does NOT resolve this — a binary with #440 still eagerly resolves the datastore type before the extension install, so it hits the same wall.

Steps to reproduce

  1. Have a repo whose .swamp.yaml sets datastore.type to a custom plugin, e.g. @keeb/mongodb-datastore.
  2. Run swamp extension update @keeb/mongodb-datastore (or swamp extension pull @keeb/mongodb-datastore --force).
  3. CLI finds the version in the registry, starts installing, then fatals with Unknown datastore type ... Available types: filesystem.

Workaround

Temporarily point .swamp.yaml at the builtin filesystem datastore (datastore: { type: filesystem, path: /tmp/bootstrap }), run the pull/update, then restore the original datastore config. The extension installs into pulled-extensions while the repo is opened with filesystem, and the custom datastore loads cleanly afterward.

Suggested fix

When the extension being installed provides the repo's configured datastore type, install it using a bootstrap/builtin datastore (or resolve+register the extension before opening the configured datastore) instead of requiring the not-yet-installed datastore to open the repo.

Environment

  • swamp 20260206.200442.0 (dev build, GIT_SHA 6b09eef7, includes swamp-club#440)
  • datastore plugin: @keeb/mongodb-datastore
  • Alpine/musl host, running swamp inside a glibc container
02Bog Flow
OPENTRIAGEDIN PROGRESSSHIPPED+ 1 MOREASSIGNED+ 2 MOREREVIEW+ 3 MOREPR_MERGED+ 1 MORENOTIFICATION_SKIPPED

Shipped

5/26/2026, 3:19:01 PM

Click a lifecycle step above to view its details.

03Sludge Pulse
stack72 assigned stack725/26/2026, 12:13:34 AM

Sign in to post a ripple.