kubernetes/kops · error

error closing temp file %q: %w

Error message

error closing temp file %q: %w

What it means

Thrown by writeFileContents when closing the temp file after copying contents fails. A close error can flush pending writes, so it may indicate a delayed write error (disk full at flush time) or an invalidated descriptor; the code treats it as fatal before renaming into place.

Source

Thrown at upup/pkg/fi/files.go:96

			}
		}
		if deleteTempFile {
			if err := os.Remove(tempFile.Name()); err != nil {
				klog.Warningf("error removing tempfile %q: %v", tempFile.Name(), err)
			}
		}
	}()

	if _, err := io.Copy(tempFile, in); err != nil {
		return fmt.Errorf("error writing file %q: %v", tempFile.Name(), err)
	}

	if err := tempFile.Chmod(fileMode); err != nil {
		return fmt.Errorf("error setting mode on temp file %q: %w", tempFile.Name(), err)
	}

	if err := tempFile.Close(); err != nil {
		return fmt.Errorf("error closing temp file %q: %w", tempFile.Name(), err)
	}
	closeTempFile = false

	if err := os.Rename(tempFile.Name(), destPath); err != nil {
		return fmt.Errorf("error renaming temp file %q -> %q: %w", tempFile.Name(), destPath, err)
	}
	deleteTempFile = false

	return nil
}

func EnsureFileMode(destPath string, fileMode os.FileMode) (bool, error) {
	changed := false
	stat, err := os.Lstat(destPath)
	if err != nil {
		return changed, fmt.Errorf("error getting file mode for %q: %v", destPath, err)
	}
	if (stat.Mode() & os.ModePerm) == fileMode {

View on GitHub (pinned to 4c8573c808)

Solutions

  1. Check disk space and filesystem health on the destination volume
  2. Retry the write — transient close/flush errors on network filesystems are common
  3. Inspect the wrapped error to confirm whether it is ENOSPC, EIO, or an already-closed descriptor
Defensive patterns

Strategy: try-catch

When it happens

Trigger: Thrown at upup/pkg/fi/files.go:96 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of kubernetes/kops@4c8573c808 (2026-09-05). Data as JSON: /api/errors/eca7440c9a111823. Report an issue: GitHub.