go/store/nbs: For local databases, crash on fatal I/O errors during writes.#10429
Merged
go/store/nbs: For local databases, crash on fatal I/O errors during writes.#10429
Conversation
…rites. If an fsync fails, or if a critical write(2) calls returns an error against a shared mutable file, it is not safe for the server to keep running because it cannot necessarily guarantee the state of the files as they exist on disk and will exist on disk in the future. Implement functionality so that the Dolt process cashes in such cases.
Contributor
Contributor
|
@coffeegoddd DOLT
|
zachmu
approved these changes
Feb 6, 2026
Member
zachmu
left a comment
There was a problem hiding this comment.
LGTM
I didn't think deeply about whether the choice of behavior was correct in all instances, but the interfaces seem sensible.
| func Fatalf(behavior FatalBehavior, msg string, args ...any) error { | ||
| if behavior == FatalBehaviorCrash { | ||
| go func() { | ||
| panic(fmt.Sprintf("fatal error: "+msg, args...)) |
Member
There was a problem hiding this comment.
Does this print a stack trace of the calling goroutine? I don't think it does, and it probably should.
Member
There was a problem hiding this comment.
Yeah just tested, this gets its own stack trace starting from this stack frame.
You should def capture a stack trace before the goroutine is started.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
If an fsync fails, or if a critical write(2) calls returns an error against a shared mutable file, it is not safe for the server to keep running because it cannot necessarily guarantee the state of the files as they exist on disk and will exist on disk in the future.
Implement functionality so that the Dolt process cashes in such cases.