ipfs/kubo · error

probe fetch: %w

Error message

probe fetch: %w

What it means

After resolving the probe path, `ipfs diag healthy` fetches the probe block via api.Dag().Get(); failure is wrapped as 'probe fetch'. This means the DAG pipeline cannot retrieve the probe block — the healthcheck's core signal that the node can still store and retrieve data.

Source

Thrown at core/commands/diag.go:70

`,
	},
	Run: func(req *cmds.Request, res cmds.ResponseEmitter, env cmds.Environment) error {
		if t := shutdown.StartedAt(); !t.IsZero() {
			return fmt.Errorf("daemon is shutting down (started %s ago)", time.Since(t).Round(time.Second))
		}
		api, err := cmdenv.GetApi(env, req)
		if err != nil {
			return err
		}
		probeCID, err := cid.Decode(diagHealthyProbeCIDStr)
		if err != nil {
			return fmt.Errorf("invalid probe CID: %w", err)
		}
		if _, _, err := api.ResolvePath(req.Context, path.FromCid(probeCID)); err != nil {
			return fmt.Errorf("probe resolve: %w", err)
		}
		if _, err := api.Dag().Get(req.Context, probeCID); err != nil {
			return fmt.Errorf("probe fetch: %w", err)
		}
		return cmds.EmitOnce(res, "ok")
	},
}

var diagDatastoreCmd = &cmds.Command{
	Status: cmds.Experimental,
	Helptext: cmds.HelpText{
		Tagline: "Low-level datastore inspection for debugging and testing.",
		ShortDescription: `
'ipfs diag datastore' provides low-level access to the datastore for debugging
and testing purposes.

WARNING: FOR DEBUGGING/TESTING ONLY

These commands expose internal datastore details and should not be used
in production workflows. The datastore format may change between versions.

View on GitHub (pinned to 329838acdf)

Solutions

  1. Inspect daemon logs for the wrapped fetch error
  2. Confirm network connectivity and routing (ipfs swarm peers, ipfs routing findprovs)
  3. Repair/verify the blockstore; restart the daemon
Defensive patterns

Strategy: retry

Try / catch

err := diagHealthy(ctx)
if err != nil && strings.Contains(err.Error(), "probe fetch") { verifySwarm(ctx); retryWithBackoff(ctx) }

Prevention

When it happens

Trigger: api.Dag().Get(req.Context, probeCID) returns an error: block missing locally and fetch failing (routing down, network offline, blockstore IO error).

Common situations: Healthcheck failures on nodes with broken bitswap/routing, full or corrupted blockstores, or nodes intentionally offline.

Related errors


AI-assisted analysis of ipfs/kubo@329838acdf (2026-09-03). Data as JSON: /api/errors/987e7fe3d026dcf0. Report an issue: GitHub.