JuliusBrussee/caveman · error
refusing non-regular file
Error message
refusing non-regular file
What it means
Error "refusing non-regular file" thrown in JuliusBrussee/caveman.
Source
Thrown at engine/ccr/store_sqlite.go:268
info, err := os.Lstat(path)
if errors.Is(err, os.ErrNotExist) && create {
file, createErr := os.OpenFile(path, os.O_CREATE|os.O_EXCL|os.O_RDWR, 0o600)
if createErr == nil {
return file.Close()
}
if !errors.Is(createErr, os.ErrExist) {
return createErr
}
info, err = os.Lstat(path)
}
if errors.Is(err, os.ErrNotExist) && !create {
return nil
}
if err != nil {
return err
}
if info.Mode()&os.ModeSymlink != 0 || !info.Mode().IsRegular() {
return fmt.Errorf("refusing non-regular file")
}
file, err := os.OpenFile(path, os.O_RDWR, 0)
if errors.Is(err, os.ErrNotExist) && !create {
// The sidecar vanished between Lstat and open — a concurrent process
// checkpointed the WAL and removed it. Nothing left to secure.
return nil
}
if err != nil {
return err
}
defer file.Close()
opened, err := file.Stat()
if err != nil {
return err
}
if !os.SameFile(info, opened) {
return fmt.Errorf("file changed while opening")
}View on GitHub (pinned to 27d5a3981a)
Solutions
- Point the store at a regular file, not a symlink or device.
When it happens
Trigger: Thrown at engine/ccr/store_sqlite.go:268 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of JuliusBrussee/caveman@27d5a3981a (2026-08-15).
Data as JSON: /api/errors/a1f66198d8176de5.
Report an issue: GitHub.