Fix panic recovery in server and fail test updater on unrecovered panics #1644
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.
According to the Go language spec:
So the panic recovery in
server.go
wasn't working, because the deferred function wasn't directly callingrecover()
(instead, it would calls.recover()
which would callrecover()
, which returnednil
even if a panic happened).I got rid of the indirection when calling
recover()
. A downside to it is that we now have to pass a request message to thehandle...
methods, because the recovery code accesses request message properties.This PR also makes the fourslash test failure updater script throw when it detects an unrecovered panic, because that means
go test
will have stopped as soon as the panic happens, and since it didn't run all tests, we can't know which tests fail and which don't.This should unblock #1553.