From d7d850ac7db402021f26f962f62970035e9feb00 Mon Sep 17 00:00:00 2001 From: Anna Shaleva Date: Thu, 21 Dec 2023 17:35:52 +0300 Subject: [PATCH] native: never set Neo's newEpoch* cache values to nil We have cache update mechanism (Neo's cache votesChanged flag), it must be used for current epoch and new epoch cached values update. And the cached current/new epoch values themselves must always contain valid information for the current/new epoch. These cached values must only be changed once per epoch, never set them to nil. This commit prevents CN node panic described in #3253 when dBFT tries to retrieve new epoch validators with some votes modifications made before at the same dBFT epoch. Close #3253. Signed-off-by: Anna Shaleva --- pkg/core/native/native_neo.go | 1 - 1 file changed, 1 deletion(-) diff --git a/pkg/core/native/native_neo.go b/pkg/core/native/native_neo.go index 67b2f7d57..620174a7f 100644 --- a/pkg/core/native/native_neo.go +++ b/pkg/core/native/native_neo.go @@ -971,7 +971,6 @@ func (n *NEO) ModifyAccountVotes(acc *state.NEOBalance, d *dao.Simple, value *bi return nil } } - cache.newEpochNextValidators = nil return putConvertibleToDAO(n.ID, d, key, cd) } return nil