The stack trace indicates a nil pointer access in here chainservice.go:373.
The only possible nil pointer in this line is the ActivityBitfield field within the voting aggregation.
However, this field should not be nil as I'm checking for all prerequisites to get this value before requesting the aggregation chainservice.go:365.
The only way how the field can still be uninitialized in this situation is if the voting aggregation was done without proper values earlier and we got that cached aggregation.
This seems to be possible when the voting aggregation was first triggered even before the async duty pre-calculation finished (which can take a second or two with larget validator sets).
This PR fixes the voting aggregation cache to avoid serving incomplete aggregations when precalculated duties are available.
reported by barnabas:
The stack trace indicates a nil pointer access in here
chainservice.go:373
. The only possible nil pointer in this line is theActivityBitfield
field within the voting aggregation. However, this field should not be nil as I'm checking for all prerequisites to get this value before requesting the aggregationchainservice.go:365
.The only way how the field can still be uninitialized in this situation is if the voting aggregation was done without proper values earlier and we got that cached aggregation. This seems to be possible when the voting aggregation was first triggered even before the async duty pre-calculation finished (which can take a second or two with larget validator sets). This PR fixes the voting aggregation cache to avoid serving incomplete aggregations when precalculated duties are available.