vitessio/vitess · error
missing file on disk: %s (%w)
Error message
missing file on disk: %s (%w)
What it means
VerifyFilesOnDisk compares each generated file against the file on disk. If os.ReadFile fails for the expected output path, the error is collected with the OS error wrapped, meaning the codegen expects a file that does not exist (or is unreadable).
Source
Thrown at go/tools/asthelpergen/asthelpergen.go:228
return nil, err
}
result := map[string]*jen.File{}
for fName, genFile := range jenFiles {
fullPath := path.Join(gen.mod.Dir, strings.TrimPrefix(pkg.Path(), gen.mod.Path), fName)
result[fullPath] = genFile
}
return result, nil
}
// VerifyFilesOnDisk compares the generated results from the codegen against the files that
// currently exist on disk and returns any mismatches
func VerifyFilesOnDisk(result map[string]*jen.File) (errors []error) {
for fullPath, file := range result {
existing, err := os.ReadFile(fullPath)
if err != nil {
errors = append(errors, fmt.Errorf("missing file on disk: %s (%w)", fullPath, err))
continue
}
genFile, err := codegen.FormatJenFile(file)
if err != nil {
errors = append(errors, fmt.Errorf("goimport error: %w", err))
continue
}
if !bytes.Equal(existing, genFile) {
errors = append(errors, fmt.Errorf("'%s' has changed", fullPath))
continue
}
}
return errors
}
// Options configures the AST helper generation process.View on GitHub (pinned to 01a25a7d17)
Solutions
- Run `asthelpergen` (or `make codegen`) without verify to generate and write the missing files
- Restore the deleted generated files (git checkout -- go/vt/sqlparser/)
- Check file permissions on the expected output path
Example fix
// before (verify fails) $ asthelpergen verify // after $ asthelpergen && asthelpergen verify
Defensive patterns
Strategy: fallback
Validate before calling
if _, err := os.Stat(expectedPath); os.IsNotExist(err) {
fmt.Printf("missing generated file %s; run make codegen\n", expectedPath)
} Try / catch
errs := VerifyFilesOnDisk(result)
for _, err := range errs {
var pe *fs.PathError
if errors.As(err, &pe) && os.IsNotExist(pe) {
// regenerate instead of failing verification
}
} Prevention
- Run `make codegen` before running verify
- Never delete generated files without regenerating
- Keep generated files committed so fresh clones pass verification
When it happens
Trigger: Running `asthelpergen verify` (or TestFullGeneration) after generated files were deleted or never committed; the result map contains paths like go/vt/sqlparser/ast_clone.go that are absent on disk.
Common situations: Fresh clone before running `make codegen`; a developer deleted generated files; file permissions or a wrong output directory cause ReadFile to fail.
Related errors
- '%s' has changed
- must specify exactly one package
- failed to create file-based writer for --opentsdb-uri %s: %v
- package '%s' does not contain 'ast_format.go'
- interface %s implemented by %s (%s as %T) without ptr
AI-assisted analysis of vitessio/vitess@01a25a7d17 (2026-09-01).
Data as JSON: /api/errors/d4bd50f209744f5f.
Report an issue: GitHub.