You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
In the following place the Lock is obtained to late. A compaction can (and as our stress tests show will) happen between creating the slice and filling it. Thus we leave empty slots which will lead to a nil-pointer panic down the line
func (s *SegmentGroup) newCursors() ([]innerCursorReplace, func()) {
out := make([]innerCursorReplace, len(s.segments))
s.maintenanceLock.RLock()
for i, segment := range s.segments {
out[i] = segment.newCursor()
}
return out, s.maintenanceLock.RUnlock
}
Notes
Check if the same issue also occurs for the other two cursor types (map/set) and fix if required.
Validate either through direct test or through external stress-test
The text was updated successfully, but these errors were encountered:
There was a small data race where a compaction could have already
occurred/finished between creating the array and initializing it, thus
leaving empty slots.
There is no test yet, as this will be tested through the stress-test
pipelines together with a potential fix for #1849
Discovered during the investigation of #1849:
In the following place the Lock is obtained to late. A compaction can (and as our stress tests show will) happen between creating the slice and filling it. Thus we leave empty slots which will lead to a nil-pointer panic down the line
Notes
The text was updated successfully, but these errors were encountered: