Earlier this year we changed the vectorized panic-catcher, namely, we now check a few special error types (like StorageError, notInternalError, and internalError upfront - to avoid more expensive stack-based checks). If we find an internalErrorand it doesn't have a PG code and doesn't have StorageError or notInternalError in the causes, we now always mark the error as assertion failure. This made it so that we started receiving more sentry reports than previously; in particular, whenever we're using the streamer API, we could now get stop.ErrUnavailable via the following sequence of calls ColIndexJoin.Next -> cFetcher.StartScan -> txnKVStreamer.SetupNextFetch -> Streamer.Enqueue, and this would trigger a sentry report. This commit fixes this by marking an error coming from Streamer.Enqueue as StorageError which will by-pass the logic in the panic-catcher.
Earlier this year we changed the vectorized panic-catcher, namely, we now check a few special error types (like
StorageError
,notInternalError
, andinternalError
upfront - to avoid more expensive stack-based checks). If we find aninternalError
and it doesn't have a PG code and doesn't haveStorageError
ornotInternalError
in the causes, we now always mark the error as assertion failure. This made it so that we started receiving more sentry reports than previously; in particular, whenever we're using the streamer API, we could now getstop.ErrUnavailable
via the following sequence of callsColIndexJoin.Next
->cFetcher.StartScan
->txnKVStreamer.SetupNextFetch
->Streamer.Enqueue
, and this would trigger a sentry report. This commit fixes this by marking an error coming fromStreamer.Enqueue
asStorageError
which will by-pass the logic in the panic-catcher.Fixes: #128649.
Release note: None