ipfs/kubo · error

failed to put key: %w

Error message

failed to put key: %w

What it means

'ipfs diag ds put' failed to write the given value under the given key in the debugging datastore. %w is the underlying datastore.Put error; typical causes are an invalid key prefix, a locked datastore (daemon running), or a disk-level failure. Debugging/testing command only.

Source

Thrown at core/commands/diag.go:252

WARNING: FOR DEBUGGING/TESTING ONLY
`,
	},
	Arguments: []cmds.Argument{
		cmds.StringArg("key", true, false, "Datastore key (e.g., /test/mykey)"),
		cmds.StringArg("value", true, false, "Value to store (as a string)"),
	},
	NoRemote: true,
	PreRun:   DaemonNotRunning,
	Run: func(req *cmds.Request, res cmds.ResponseEmitter, env cmds.Environment) error {
		ds, closer, err := openDiagDatastore(env)
		if err != nil {
			return err
		}
		defer closer()

		key := datastore.NewKey(req.Arguments[0])
		if err := ds.Put(req.Context, key, []byte(req.Arguments[1])); err != nil {
			return fmt.Errorf("failed to put key: %w", err)
		}
		if err := ds.Sync(req.Context, key); err != nil {
			return fmt.Errorf("failed to sync: %w", err)
		}
		return nil
	},
}

type diagDatastoreCountResult struct {
	Prefix string `json:"prefix"`
	Count  int64  `json:"count"`
}

var diagDatastoreCountCmd = &cmds.Command{
	Status: cmds.Experimental,
	Helptext: cmds.HelpText{
		Tagline: "Count entries matching a datastore prefix.",
		ShortDescription: `

View on GitHub (pinned to 329838acdf)

Solutions

  1. Verify the daemon is not running (PreRun DaemonNotRunning) so the datastore is not locked
  2. Use a valid datastore key such as /test/mykey
  3. Check disk health and permissions on the repo directory
Defensive patterns

Strategy: retry

When it happens

Trigger: Thrown at core/commands/diag.go:252 when the library encounters an invalid state.

Common situations: See trigger scenarios.


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