From bc1c491f90199e37e649fd4cee109005a305001d Mon Sep 17 00:00:00 2001 From: Patrick Schork <354473+pschork@users.noreply.github.com> Date: Fri, 25 Oct 2024 10:37:28 -0700 Subject: [PATCH] Derive and sort quorum slice from ejections --- tools/ejections/cmd/main.go | 23 ++++++++++++++++++++--- 1 file changed, 20 insertions(+), 3 deletions(-) diff --git a/tools/ejections/cmd/main.go b/tools/ejections/cmd/main.go index 288ea5343..9b7ecfe22 100644 --- a/tools/ejections/cmd/main.go +++ b/tools/ejections/cmd/main.go @@ -90,12 +90,27 @@ func RunScan(ctx *cli.Context) error { return ejections[i].BlockTimestamp > ejections[j].BlockTimestamp }) + // Create a map to track unique quorums + quorumSet := make(map[uint8]struct{}) + for _, ejection := range ejections { + quorumSet[ejection.Quorum] = struct{}{} + } + + // Convert map keys to slice + quorums := make([]uint8, 0, len(quorumSet)) + for quorum := range quorumSet { + quorums = append(quorums, quorum) + } + sort.Slice(quorums, func(i, j int) bool { + return quorums[i] < quorums[j] + }) + stateCache := make(map[uint64]*core.OperatorState) ejectedOperatorIds := make(map[core.OperatorID]struct{}) for _, ejection := range ejections { previouseBlock := ejection.BlockNumber - 1 if _, exists := stateCache[previouseBlock]; !exists { - state, err := chainState.GetOperatorState(context.Background(), uint(previouseBlock), []uint8{0, 1}) + state, err := chainState.GetOperatorState(context.Background(), uint(previouseBlock), quorums) if err != nil { return err } @@ -176,8 +191,10 @@ func RunScan(ctx *cli.Context) error { return orderedEjectionTransactions[i].BlockNumber > orderedEjectionTransactions[j].BlockNumber }) for _, txn := range orderedEjectionTransactions { - for quorum, ejections := range txn.QuorumEjections { - txnQuorums.AppendRow(table.Row{txn.TransactionHash, txn.BlockTimestamp, quorum, txn.QuorumStakePercentage[quorum], ejections}, rowConfigAutoMerge) + for _, quorum := range quorums { + if _, exists := txn.QuorumEjections[quorum]; exists { + txnQuorums.AppendRow(table.Row{txn.TransactionHash, txn.BlockTimestamp, quorum, txn.QuorumStakePercentage[quorum], txn.QuorumEjections[quorum]}, rowConfigAutoMerge) + } } }