Skip to content

Commit 6dad1d4

Browse files
authored
Log unexpected errors during GetValidatorSet (#1592)
1 parent 400dd66 commit 6dad1d4

File tree

3 files changed

+20
-5
lines changed

3 files changed

+20
-5
lines changed

vms/platformvm/validators/manager.go

+16-2
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,14 @@ import (
99
"fmt"
1010
"time"
1111

12+
"go.uber.org/zap"
13+
1214
"github.com/ava-labs/avalanchego/cache"
1315
"github.com/ava-labs/avalanchego/database"
1416
"github.com/ava-labs/avalanchego/ids"
1517
"github.com/ava-labs/avalanchego/snow/validators"
1618
"github.com/ava-labs/avalanchego/utils/constants"
19+
"github.com/ava-labs/avalanchego/utils/logging"
1720
"github.com/ava-labs/avalanchego/utils/math"
1821
"github.com/ava-labs/avalanchego/utils/timer/mockable"
1922
"github.com/ava-labs/avalanchego/utils/window"
@@ -32,7 +35,8 @@ const (
3235
var (
3336
_ validators.State = (*manager)(nil)
3437

35-
ErrMissingValidator = errors.New("missing validator")
38+
ErrMissingValidator = errors.New("missing validator")
39+
ErrMissingValidatorSet = errors.New("missing validator set")
3640
)
3741

3842
// Manager adds the ability to introduce newly acceted blocks IDs to the State
@@ -46,12 +50,14 @@ type Manager interface {
4650
}
4751

4852
func NewManager(
53+
log logging.Logger,
4954
cfg config.Config,
5055
state state.State,
5156
metrics metrics.Metrics,
5257
clk *mockable.Clock,
5358
) Manager {
5459
return &manager{
60+
log: log,
5561
cfg: cfg,
5662
state: state,
5763
metrics: metrics,
@@ -68,6 +74,7 @@ func NewManager(
6874
}
6975

7076
type manager struct {
77+
log logging.Logger
7178
cfg config.Config
7279
state state.State
7380
metrics metrics.Metrics
@@ -203,7 +210,10 @@ func (m *manager) makePrimaryNetworkValidatorSet(
203210
currentValidators, ok := m.cfg.Validators.Get(constants.PrimaryNetworkID)
204211
if !ok {
205212
// This should never happen
206-
return nil, ErrMissingValidator
213+
m.log.Error(ErrMissingValidatorSet.Error(),
214+
zap.Stringer("subnetID", constants.PrimaryNetworkID),
215+
)
216+
return nil, ErrMissingValidatorSet
207217
}
208218
currentValidatorList := currentValidators.List()
209219

@@ -295,6 +305,10 @@ func (m *manager) makeSubnetValidatorSet(
295305
primaryValidator, ok := primarySet[nodeID]
296306
if !ok {
297307
// This should never happen
308+
m.log.Error(ErrMissingValidator.Error(),
309+
zap.Stringer("nodeID", nodeID),
310+
zap.Stringer("subnetID", subnetID),
311+
)
298312
return nil, ErrMissingValidator
299313
}
300314
subnetValidator.PublicKey = primaryValidator.PublicKey

vms/platformvm/validators/manager_test.go

+3-2
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ import (
2424
"github.com/ava-labs/avalanchego/snow/validators"
2525
"github.com/ava-labs/avalanchego/utils/constants"
2626
"github.com/ava-labs/avalanchego/utils/crypto/bls"
27+
"github.com/ava-labs/avalanchego/utils/logging"
2728
"github.com/ava-labs/avalanchego/utils/timer/mockable"
2829
"github.com/ava-labs/avalanchego/utils/units"
2930
"github.com/ava-labs/avalanchego/vms/platformvm/blocks"
@@ -386,7 +387,7 @@ func TestVM_GetValidatorSet(t *testing.T) {
386387
r.NoError(err)
387388

388389
clk := &mockable.Clock{}
389-
validatorssSet := NewManager(cfg, mockState, metrics, clk)
390+
validatorSet := NewManager(logging.NoLog{}, cfg, mockState, metrics, clk)
390391

391392
// Mock the VM's validators
392393
mockPrimaryVdrSet := validators.NewMockSet(ctrl)
@@ -426,7 +427,7 @@ func TestVM_GetValidatorSet(t *testing.T) {
426427
mockState.EXPECT().GetStatelessBlock(mockTipID).Return(mockTip, choices.Accepted, nil)
427428

428429
// Compute validator set at previous height
429-
gotVdrSet, err := validatorssSet.GetValidatorSet(context.Background(), tt.height, tt.subnetID)
430+
gotVdrSet, err := validatorSet.GetValidatorSet(context.Background(), tt.height, tt.subnetID)
430431
r.ErrorIs(err, tt.expectedErr)
431432
if tt.expectedErr != nil {
432433
return

vms/platformvm/vm.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -141,7 +141,7 @@ func (vm *VM) Initialize(
141141
return err
142142
}
143143

144-
validatorManager := pvalidators.NewManager(vm.Config, vm.state, vm.metrics, &vm.clock)
144+
validatorManager := pvalidators.NewManager(chainCtx.Log, vm.Config, vm.state, vm.metrics, &vm.clock)
145145
vm.State = validatorManager
146146
vm.atomicUtxosManager = avax.NewAtomicUTXOManager(chainCtx.SharedMemory, txs.Codec)
147147
utxoHandler := utxo.NewHandler(vm.ctx, &vm.clock, vm.fx)

0 commit comments

Comments
 (0)