This release fixes issues for SREs watching stability and regressions.
✓ No known CVEs patched in this version
Topics
+2 more
Affected surfaces
Summary
AI summaryFixes WeKan snap startup on low‑RAM systems and ensures MongoDB→FerretDB migration completes correctly.
Changes in this release
| Type | Severity | Summary | CVE |
|---|---|---|---|
| Bugfix | High |
Snap: improves MongoDB replica‑set initialization by extending temporary mongod readiness wait to 90 seconds. Snap: improves MongoDB replica‑set initialization by extending temporary mongod readiness wait to 90 seconds. Source: llm_adapter@2026-07-15 Confidence: high |
— |
| Bugfix | High |
Snap: fixes MongoDB → FerretDB importer driver resolution and adds disk‑space guard with progress UI. Snap: fixes MongoDB → FerretDB importer driver resolution and adds disk‑space guard with progress UI. Source: llm_adapter@2026-07-15 Confidence: high |
— |
| Bugfix | High |
Snap: fixes FerretDB not starting after MongoDB → FerretDB migration by updating `finish_success` to enable/start FerretDB and disable MongoDB. Snap: fixes FerretDB not starting after MongoDB → FerretDB migration by updating `finish_success` to enable/start FerretDB and disable MongoDB. Source: llm_adapter@2026-07-15 Confidence: high |
— |
| Bugfix | High |
Snap: makes migration‑success marker authoritative so FerretDB starts even if `database` setting remains "mongodb". Snap: makes migration‑success marker authoritative so FerretDB starts even if `database` setting remains "mongodb". Source: llm_adapter@2026-07-15 Confidence: high |
— |
| Bugfix | High |
Snap: ensures WeKan starts its configured database on startup rather than hanging indefinitely. Snap: ensures WeKan starts its configured database on startup rather than hanging indefinitely. Source: llm_adapter@2026-07-15 Confidence: high |
— |
| Bugfix | High |
Snap: prevents starting an empty FerretDB when MongoDB still holds data by reverting to MongoDB if SQLite DB is empty. Snap: prevents starting an empty FerretDB when MongoDB still holds data by reverting to MongoDB if SQLite DB is empty. Source: llm_adapter@2026-07-15 Confidence: high |
— |
| Bugfix | High |
Snap: fixes MongoDB start failure on low‑RAM systems by making WiredTiger cache size RAM‑aware. Snap: fixes MongoDB start failure on low‑RAM systems by making WiredTiger cache size RAM‑aware. Source: llm_adapter@2026-07-15 Confidence: low |
— |
| Bugfix | High |
Snap: ensures migration's disk‑space guard works inside snap confinement. Snap: ensures migration's disk‑space guard works inside snap confinement. Source: llm_adapter@2026-07-15 Confidence: low |
— |
| Bugfix | Medium |
Snap: makes WiredTiger cache size RAM‑aware (≈50 % of RAM − 1 GB, capped at 32 GB). Snap: makes WiredTiger cache size RAM‑aware (≈50 % of RAM − 1 GB, capped at 32 GB). Source: granite4.1:30b@2026-07-15-audit Confidence: low |
— |
Full changelog
v9.92 2026-07-15 WeKan ® release
This release fixes the following bugs:
-
Snap: WeKan never started on a running MongoDB, looping "MongoDB not ready yet,
retrying in 5 seconds..." forever, on any server with less than ~34 GB RAM
(#6454,snap-src/bin/mongodb-control,
snap-src/bin/migration-control). The WiredTiger cache size was hardcoded to 32 GB.
On a smaller box (e.g. 8 GB) mongod was OOM-killed seconds after it started — including
the temporary mongod thatmongodb-controlstarts to initialise the replica set, which
died before it could be reached, so the replica set was never initiated. The final
mongod then ran with--replSet rs0but no config, no PRIMARY was ever elected, and
since Meteor requires the replica-set primary (change streams),wekan-controlwaited on
it forever. Fixes: (1) the cache size is now RAM-aware — ~50 % of (RAM − 1 GB), the
same formula mongod uses for its own default, capped at 32 GB, min 1 GB, overridable with
MONGODB_WIREDTIGER_CACHE_GB; (2) the temporary-mongod readiness wait is raised from 30 s
to 90 s so a large database that needs longer to replay its journal still gets its replica
set initialised; and (3) the temporary source mongod that the MongoDB → FerretDB migration
starts to read the data now uses a conservative RAM-aware cache (¼ of (RAM − 1 GB), cap
8 GB) so it leaves room for the target FerretDB and the importer running alongside it.
Thanks to xet7. -
Snap: the MongoDB 6/7 → FerretDB importer now resolves the correct driver and matches
the MongoDB 3.2 importer's safety and dashboard (releases/migrate-mongodb-to-ferretdb.mjs).
It now (a) resolves themongodbdriver by probing the WeKan bundle and using whichever
actually works — preferring a v6+ driver that exposesGridFSBucketand speaks OP_MSG,
because an older v2 driver's OP_QUERY is rejected by FerretDB ("Unsupported OP_QUERY command:
update"); and (b) gained the same disk-space guard and progress UI as
migrate-mongo3-to-ferretdb.mjs: it measures the total attachment/avatar size up front and
stops before extracting if it will not fit, and if space runs out mid-run it stops,
deletes the partially-migrated files, and reports how much more disk is needed (a full disk
can corrupt the still-running source MongoDB), shows a live per-file progress bar, and
translates the dashboard into the browser's language. Thanks to xet7. -
Snap: verified the migration's disk-space guard actually works inside snap confinement
(snap-src/bin/migrate-mongo3-to-ferretdb.mjs,releases/migrate-mongodb-to-ferretdb.mjs—
comment/documentation only, no behaviour change).statfs(andstatfs64/fstatfs/
fstatfs64/statvfs/fstatvfs) is in snapd's default seccomp allow-list
(snapcore/snapd→interfaces/seccomp/template.go), and a snap has no per-snap disk quota
by default, so the migration's free-space check (statfsSyncon$SNAP_COMMON/files)
returns the real free space and its "stop before the disk fills" safety is fully active on
Snap.quotactlis not allowed, but the migration never calls it; the one case it would
matter — a snapd storage-quota group (project quotas invisible tostatfs) — is still caught
by theENOSPC/EDQUOTwrite-failure fallback. Only Sandstorm grains genuinely lack
statfs(FUSE does not implement it,quotactlblocked), where the guard already relies on
that write-failure fallback. Thanks to xet7. -
Snap: after a MongoDB → FerretDB migration, FerretDB never started and WeKan was stuck
on "MongoDB not ready yet, retrying..." (snap-src/bin/migration-control). The
wekan.ferretdbservice disables itself whiledatabaseismongodb; the migration
then switches the snap with an internalsnapctl set database=ferretdb, but an
internalsnapctl setdoes not re-run theconfigurehook that flips the two
database services — so FerretDB was left disabled and MongoDB enabled but stopped,
leaving WeKan with no database (both bind the same port, so only one runs at a time).
finish_successnow performs the flip itself, exactly as the configure hook's ferretdb
branch does: enable + start (and restart)wekan.ferretdb, then stop + disable
wekan.mongodb— using the snap instance name so parallel snaps target their own
services. Immediate recovery on an already-migrated install — flip the setting so the
configurehook re-runs and enables + starts FerretDB and stops MongoDB (do not try
snap start wekan.ferretdbdirectly; whiledatabaseis stillmongodb, ferretdb-control
reads the setting and disables itself again — see the next entry):
sudo snap set wekan database=ferretdb.
Thanks to xet7. -
Snap: the migration-success marker is now authoritative, so FerretDB starts even if the
databasesetting was never flipped (snap-src/bin/ferretdb-control,
snap-src/bin/mongodb-control,snap-src/bin/wekan-control). Every DB service keyed its
behaviour off thedatabasesetting alone:ferretdb-controllogged "database is
'mongodb', not 'ferretdb'. Disabling ferretdb service." and self-disabled whenever the
setting still saidmongodb— so on an already-migrated installsnap start wekan.ferretdbstarted and then immediately stopped itself, unfixable by hand without
first settingdatabase=ferretdb. Now the marker
$SNAP_COMMON/.migration-to-ferretdb-doneoverrides the setting: when present,
ferretdb-controlrepairsdatabase=ferretdband keeps running instead of self-disabling;
mongodb-controldisables itself (before the migration-pending check, so a finished
migration is never re-attempted); andwekan-controlforces ferretdb and brings the
service up. WeKan thus recovers on its own after a migration whose setting flip was lost.
Thanks to xet7. -
Snap: WeKan now starts its database itself on startup instead of waiting forever for a
stopped one (snap-src/bin/wekan-control). Previously thewekan.wekanservice only
waited for whichever databasedatabasepointed at (FerretDB not ready yet…/
MongoDB not ready yet…) and never started a DB service, so if bothwekan.ferretdb
andwekan.mongodbwere stopped/disabled WeKan hung indefinitely. Now, before waiting, it
enables + starts whichever DB service is configured (snapctl start --enable=snap enable+snap start, targeting the snap instance name so parallel snaps hit their
own services). Thanks to xet7. -
Snap: WeKan never starts an EMPTY FerretDB while data still lives in MongoDB
(snap-src/bin/wekan-control). On startup WeKan now checks what data actually exists on
disk — the FerretDB SQLite dir ($SNAP_COMMON/files/db) and the MongoDB WiredTiger data
($SNAP_COMMON) — instead of trusting thedatabasesetting alone. Ifdatabase=ferretdb
was selected (or forced) but the migration never ran, so the SQLite database is empty while
MongoDB still holds the data, WeKan reverts todatabase=mongodband prints how to run
the migration, rather than starting an empty FerretDB that would look like all data was
lost. Thanks to xet7.
Thanks to above GitHub users for their contributions and translators for their translations.
Weekly OSS security release digest.
The CVE patches and breaking changes that affected production tools this week. One email, every Sunday.
No spam, unsubscribe anytime.
Share this release
About wekan
The Open Source kanban, built with Meteor. GitHub issues/PRs are only for FLOSS Developers, not for support, support is at https://wekan.fi/commercial-support/ . New English strings for new features at imports/i18n/data/en.i18n.json . Non-English translations at https://app.transifex.com/wekan/wekan only.
Related context
Related tools
Beta — feedback welcome: [email protected]