Skip to content

Commit

Permalink
fixed null pointer when proposer duties are unavailable during synchr…
Browse files Browse the repository at this point in the history
…onization
  • Loading branch information
pk910 committed Aug 17, 2023
1 parent 57ba3c6 commit a05e843
Show file tree
Hide file tree
Showing 2 changed files with 23 additions and 19 deletions.
26 changes: 14 additions & 12 deletions indexer/synchronizer.go
Original file line number Diff line number Diff line change
Expand Up @@ -188,19 +188,21 @@ func (sync *synchronizerState) syncEpoch(syncEpoch uint64) bool {
ValidatorBalances: make(map[uint64]uint64),
},
}
epochValidators, err := sync.indexer.rpcClient.GetStateValidators(epochAssignments.DependendState)
if err != nil {
logger.Errorf("Error fetching epoch %v validators (state: %v): %v", syncEpoch, epochAssignments.DependendState, err)
} else {
for idx := 0; idx < len(epochValidators.Data); idx++ {
validator := epochValidators.Data[idx]
epochStats.Validators.ValidatorBalances[uint64(validator.Index)] = uint64(validator.Validator.EffectiveBalance)
if !strings.HasPrefix(validator.Status, "active") {
continue
if epochAssignments != nil {
epochValidators, err := sync.indexer.rpcClient.GetStateValidators(epochAssignments.DependendState)
if err != nil {
logger.Errorf("Error fetching epoch %v validators (state: %v): %v", syncEpoch, epochAssignments.DependendState, err)
} else {
for idx := 0; idx < len(epochValidators.Data); idx++ {
validator := epochValidators.Data[idx]
epochStats.Validators.ValidatorBalances[uint64(validator.Index)] = uint64(validator.Validator.EffectiveBalance)
if !strings.HasPrefix(validator.Status, "active") {
continue
}
epochStats.Validators.ValidatorCount++
epochStats.Validators.ValidatorBalance += uint64(validator.Balance)
epochStats.Validators.EligibleAmount += uint64(validator.Validator.EffectiveBalance)
}
epochStats.Validators.ValidatorCount++
epochStats.Validators.ValidatorBalance += uint64(validator.Balance)
epochStats.Validators.EligibleAmount += uint64(validator.Validator.EffectiveBalance)
}
}
if sync.checkKillChan(0) {
Expand Down
16 changes: 9 additions & 7 deletions indexer/writeDb.go
Original file line number Diff line number Diff line change
Expand Up @@ -35,15 +35,17 @@ func persistEpochData(epoch uint64, blockMap map[uint64][]*BlockInfo, epochStats

// insert slot assignments
firstSlot := epoch * utils.Config.Chain.Config.SlotsPerEpoch
slotAssignments := make([]*dbtypes.SlotAssignment, utils.Config.Chain.Config.SlotsPerEpoch)
for slotIdx := uint64(0); slotIdx < utils.Config.Chain.Config.SlotsPerEpoch; slotIdx++ {
slot := firstSlot + slotIdx
slotAssignments[slotIdx] = &dbtypes.SlotAssignment{
Slot: slot,
Proposer: epochStats.Assignments.ProposerAssignments[slot],
if epochStats.Assignments != nil {
slotAssignments := make([]*dbtypes.SlotAssignment, utils.Config.Chain.Config.SlotsPerEpoch)
for slotIdx := uint64(0); slotIdx < utils.Config.Chain.Config.SlotsPerEpoch; slotIdx++ {
slot := firstSlot + slotIdx
slotAssignments[slotIdx] = &dbtypes.SlotAssignment{
Slot: slot,
Proposer: epochStats.Assignments.ProposerAssignments[slot],
}
}
db.InsertSlotAssignments(slotAssignments, tx)
}
db.InsertSlotAssignments(slotAssignments, tx)

// insert epoch
db.InsertEpoch(dbEpoch, tx)
Expand Down

0 comments on commit a05e843

Please sign in to comment.