initipfscluster: self-heal a directory-shaped identity.json#244
Merged
Conversation
A plugin's file bind-mount (blox-ai) can make dockerd auto-create
/uniondrive/ipfs-cluster/identity.json as a DIRECTORY when the real file is
absent at container-create time. os.WriteFile then fails ("is a directory")
and initipfscluster panics, leaving ipfs-cluster permanently wedged. Stat the
path and os.RemoveAll a directory before writing so the real (deterministic)
identity file is regenerated. Pairs with the fula-ota go-fula.sh guard and the
readiness-check self-heal.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Problem
A plugin's file bind-mount of
/uniondrive/ipfs-cluster/identity.json(blox-ai) makes the Docker daemon auto-create the path as a directory when the real file is absent at container-create time.initipfsclusterthen panics onos.WriteFileover the directory, leaving ipfs-cluster permanently wedged (its init loops forever on[ -f identity.json ]).Change
modules/initipfscluster/main.go: stat the identity path andos.RemoveAlla directory before writing, so the real (deterministic) identity file is regenerated rather than panicking.Defense-in-depth alongside the fula-ota
go-fula.shguard and thereadiness-check.pyself-heal (see the functionland/fula-ota PR). Verified withgo build.🤖 Generated with Claude Code