Skip to content

Bump kubo 0.42.0 -> 0.43.0 (blocks pkc-js#225 garbage collection) #119

Description

@Rinse12

Summary

bitsocial-cli pins kubo@0.42.0 (package.json) and owns the production daemon spawn
(src/ipfs/startIpfs.ts, spawn(kuboExePath, ["daemon", "--migrate"])). It should be bumped to
kubo@0.43.0.

This is a release blocker for the garbage-collection change in pkcprotocol/pkc-js#225: pkc-js
only carries kubo as a devDependency (its test binary), so the daemon that actually runs in
production is the one this repo ships.

Why it blocks

pkc-js is changing repo.gc from an effectively-never lottery (Math.random() < 0.00001 per
community sync) to a real schedule: GC once the repo crosses 90% of Datastore.StorageMax, with a
1h floor between runs. That is the fix for the node that reached ~190 GB against a 10 GB
StorageMax and then exhausted both disk and inodes.

On kubo <= 0.42.0, running repo gc concurrently with MFS writes can wedge MFS permanently — GC
collects blocks an in-flight write has added but not yet linked into the persisted MFS root, and the
next traversal blocks forever on a missing block while holding the MFS mutex. Making GC actually run
on 0.42.0 would therefore trade a disk-exhaustion failure for a daemon-wedge failure.

kubo 0.43.0 fixes both halves:

Change needed

  1. package.json: "kubo": "0.42.0" -> "0.43.0", regenerate the lockfile.
  2. No --enable-gc flag is needed. pkc-js drives GC over the RPC API, which does the same work;
    --enable-gc would only add a second, independent schedule.
  3. Worth checking while here: Datastore.StorageMax is what the new pkc-js watermark measures
    against, so whatever value the CLI writes into the repo config is now load-bearing rather than
    decorative.

0.43.0 breaking change to check

The daemon refuses to start when Ipns.RecordLifetime is shorter than Ipns.RepublishPeriod. If
the CLI writes either key into the repo config, verify the pair is still valid.

Related

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions