Skip to content

Commit

Permalink
Merge branch 'gsora/parsigdb-dedup-impro' of github.com:ObolNetwork/c…
Browse files Browse the repository at this point in the history
…haron into gsora/parsigdb-dedup-impro
  • Loading branch information
gsora committed Sep 18, 2024
2 parents c1a97df + 5230169 commit 28a2c55
Showing 1 changed file with 31 additions and 0 deletions.
31 changes: 31 additions & 0 deletions core/tracker/tracker.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ package tracker

import (
"context"
"encoding/hex"
"encoding/json"
"fmt"

Expand Down Expand Up @@ -104,10 +105,19 @@ type Tracker struct {

// participationReporter instruments duty peer participation.
participationReporter func(ctx context.Context, duty core.Duty, failed bool, participatedShares map[int]int, unexpectedPeers map[int]int, expectedPerPeer int)

// peers is the set of peers contained in the cluster.
peers map[int]p2p.Peer
}

// New returns a new Tracker. The deleter deadliner must return well after analyser deadliner since duties of the same slot are often analysed together.
func New(analyser core.Deadliner, deleter core.Deadliner, peers []p2p.Peer, fromSlot uint64) *Tracker {
pm := make(map[int]p2p.Peer, len(peers))

for _, p := range peers {
pm[p.Index] = p
}

t := &Tracker{
input: make(chan event),
events: make(map[core.Duty][]event),
Expand All @@ -118,6 +128,7 @@ func New(analyser core.Deadliner, deleter core.Deadliner, peers []p2p.Peer, from
parSigReporter: reportParSigs,
failedDutyReporter: newFailedDutyReporter(),
participationReporter: newParticipationReporter(peers),
peers: pm,
}

return t
Expand Down Expand Up @@ -156,6 +167,26 @@ func (t *Tracker) Run(ctx context.Context) error {
continue // Ignore unsupported duties
}

// For parsigdb inconsistent reason, print what roots where generated by what peer
if failed && reason == reasonBugParSigDBInconsistent {
for pubkey, parsig := range parsigs {
for root, partials := range parsig {
var peers []string
for _, p := range partials {
peers = append(peers, t.peers[p.ShareIdx].Name)
}

log.Debug(
ctx,
"Detected inconsistent ParSigDB data for duty",
z.Str("pubkey", pubkey.String()),
z.Str("root", hex.EncodeToString(root[:])),
z.Any("peers", peers),
)
}
}
}

t.failedDutyReporter(ctx, duty, failed, failedStep, reason, failedErr)

// Analyse peer participation
Expand Down

0 comments on commit 28a2c55

Please sign in to comment.