ipfs/kubo · error
file Rename error: %s, file remove error: %s
Error message
file Rename error: %s, file remove error: %s
What it means
While writing the daemon's API address file: the atomic rename of the temp file to 'api' failed AND the cleanup removal of the temp file also failed; both errors are reported so no orphaned temp file is left silently.
Source
Thrown at repo/fsrepo/fsrepo.go:410
return err
}
if _, err = f.WriteString(addr.String()); err != nil {
f.Close()
return err
}
if err = f.Close(); err != nil {
return err
}
// Atomically rename the temp file to the correct file name.
if err = os.Rename(filepath.Join(r.path, "."+apiFile+".tmp"), filepath.Join(r.path,
apiFile)); err == nil {
return nil
}
// Remove the temp file when rename return error
if err1 := os.Remove(filepath.Join(r.path, "."+apiFile+".tmp")); err1 != nil {
return fmt.Errorf("file Rename error: %s, file remove error: %s", err.Error(),
err1.Error())
}
return err
}
// SetGatewayAddr writes the Gateway Addr to the /gateway file.
func (r *FSRepo) SetGatewayAddr(addr net.Addr) error {
// Create a temp file to write the address, so that we don't leave empty file when the
// program crashes after creating the file.
tmpPath := filepath.Join(r.path, "."+gatewayFile+".tmp")
f, err := os.Create(tmpPath)
if err != nil {
return err
}
var good bool
// Silently remove as worst last case with defers.
defer func() {
if !good {View on GitHub (pinned to 329838acdf)
Solutions
- Remove the leftover '.api.tmp' file in the repo directory
- Check filesystem permissions and that the repo is not on a broken mount
- Restart the daemon to retry writing the API address
Defensive patterns
Strategy: retry
When it happens
Trigger: Thrown at repo/fsrepo/fsrepo.go:410 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/983b48ff61ddf52a.
Report an issue: GitHub.