GoogleContainerTools/skaffold · error

computing modTimes: %w

Error message

computing modTimes: %w

What it means

After listing dependencies, CheckArtifacts times computing modification times of all dependency files via filemon.Stat. If stat'ing any dependency fails on the first pass, the error is wrapped with this message.

Source

Thrown at pkg/skaffold/diagnose/diagnose.go:94

				timeSyncMap1, err := timeToConstructSyncMap(ctx, artifact, cfg)
				if err != nil {
					if _, isNotSupported := err.(build.ErrSyncMapNotSupported); !isNotSupported {
						return fmt.Errorf("constructing inferred sync map: %w", err)
					}
				}
				timeSyncMap2, err := timeToConstructSyncMap(ctx, artifact, cfg)
				if err != nil {
					if _, isNotSupported := err.(build.ErrSyncMapNotSupported); !isNotSupported {
						return fmt.Errorf("constructing inferred sync map: %w", err)
					}
				} else {
					fmt.Fprintf(out, " - Time to construct sync map: %v (2nd time: %v)\n", timeSyncMap1, timeSyncMap2)
				}
			}

			timeMTimes1, err := timeToComputeMTimes(deps)
			if err != nil {
				return fmt.Errorf("computing modTimes: %w", err)
			}
			timeMTimes2, err := timeToComputeMTimes(deps)
			if err != nil {
				return fmt.Errorf("computing modTimes: %w", err)
			}

			fmt.Fprintf(out, " - Time to compute mTimes on dependencies: %v (2nd time: %v)\n", timeMTimes1, timeMTimes2)
		}
	}
	return nil
}

func typeOfArtifact(a *latest.Artifact) string {
	switch {
	case a.DockerArtifact != nil:
		return "Docker artifact"
	case a.BazelArtifact != nil:
		return "Bazel artifact"

View on GitHub (pinned to a1189de023)

Solutions

  1. Inspect the wrapped error for the specific file that failed to stat
  2. Clean and rebuild (skaffold clean && skaffold build) to regenerate the dependency list
  3. Check permissions on the workspace directory for the user running skaffold
  4. Remove broken symlinks or regenerate missing generated files before diagnose

Example fix

// before: dependency file deleted
skaffold diagnose
// error: computing modTimes: stat /path/generated.go: no such file
// after: regenerate it
make generate && skaffold diagnose
Defensive patterns

Strategy: validation

Validate before calling

deps, err := sourceDependencies.SingleArtifactDependencies(ctx, artifact, tag)
if err != nil { return err }
for _, d := range deps {
	if _, err := os.Stat(d); err != nil {
		return fmt.Errorf("dependency missing before diagnose: %s", d)
	}
}

Try / catch

if err := CheckArtifacts(ctx, cfg, tags, out); err != nil && strings.Contains(err.Error(), "computing modTimes") {
	log.Warnf("some dependency files are missing or unreadable: %v", err)
}

Prevention

When it happens

Trigger: Running `skaffold diagnose` where one or more files in the artifact's dependency list cannot be stat'ed — deleted files, broken symlinks, permission-denied paths, or dependency generators returning stale paths.

Common situations: Stale build cache referencing deleted files; dependency lists including generated files that don't exist yet; permission issues on mounted volumes or CI containers running as non-root.

Related errors


AI-assisted analysis of GoogleContainerTools/skaffold@a1189de023 (2026-09-05). Data as JSON: /api/errors/427f880df7c99936. Report an issue: GitHub.