Report correction repair operations and outcomes
This commit is contained in:
@@ -123,7 +123,23 @@ func Build(input BuildInput) reporting.Snapshot {
|
||||
StartSegmentID: &start, EndSegmentID: &end, CorrectionsApplied: &applied, Failures: failures})
|
||||
}
|
||||
snapshot.WorkUnits = append(snapshot.WorkUnits, row)
|
||||
for _, repair := range unit.Repairs {
|
||||
if len(repair.Attempts) == 0 {
|
||||
continue
|
||||
}
|
||||
snapshot.RepairOutcomes = append(snapshot.RepairOutcomes, reporting.RepairOutcome{StageIndex: unit.ModuleIndex, ChunkIndex: unit.Section.Index, ProposalIndex: repair.ProposalIndex, Attempts: len(repair.Attempts), Outcome: repair.Outcome})
|
||||
}
|
||||
}
|
||||
sort.SliceStable(snapshot.RepairOutcomes, func(i, j int) bool {
|
||||
a, b := snapshot.RepairOutcomes[i], snapshot.RepairOutcomes[j]
|
||||
if a.StageIndex != b.StageIndex {
|
||||
return a.StageIndex < b.StageIndex
|
||||
}
|
||||
if a.ChunkIndex != b.ChunkIndex {
|
||||
return a.ChunkIndex < b.ChunkIndex
|
||||
}
|
||||
return a.ProposalIndex < b.ProposalIndex
|
||||
})
|
||||
runErrors := len(input.RunFailures)
|
||||
snapshot.Summary = reporting.Summary{
|
||||
WorkUnitsTotal: &total, WorkUnitsStarted: &started, WorkUnitsCompleted: &completed,
|
||||
@@ -247,15 +263,31 @@ func operationLess(a, b outcomes.Operation) bool {
|
||||
return 2
|
||||
}
|
||||
}
|
||||
if rank(a.Reference.Kind) != rank(b.Reference.Kind) && (a.Reference.Kind == outcomes.OperationProposal || b.Reference.Kind == outcomes.OperationProposal) {
|
||||
return rank(a.Reference.Kind) < rank(b.Reference.Kind)
|
||||
}
|
||||
order := func(p *int) int {
|
||||
if p == nil {
|
||||
return -1
|
||||
}
|
||||
return *p
|
||||
}
|
||||
aRepair, bRepair := a.Reference.RepairAttempt != nil, b.Reference.RepairAttempt != nil
|
||||
if aRepair != bRepair {
|
||||
return !aRepair
|
||||
}
|
||||
if aRepair {
|
||||
if order(a.Reference.ProposalIndex) != order(b.Reference.ProposalIndex) {
|
||||
return order(a.Reference.ProposalIndex) < order(b.Reference.ProposalIndex)
|
||||
}
|
||||
if order(a.Reference.RepairAttempt) != order(b.Reference.RepairAttempt) {
|
||||
return order(a.Reference.RepairAttempt) < order(b.Reference.RepairAttempt)
|
||||
}
|
||||
if (a.Reference.Kind == outcomes.OperationCorrectionRepair) != (b.Reference.Kind == outcomes.OperationCorrectionRepair) {
|
||||
return a.Reference.Kind == outcomes.OperationCorrectionRepair
|
||||
}
|
||||
}
|
||||
if rank(a.Reference.Kind) != rank(b.Reference.Kind) && (a.Reference.Kind == outcomes.OperationProposal || b.Reference.Kind == outcomes.OperationProposal) {
|
||||
return rank(a.Reference.Kind) < rank(b.Reference.Kind)
|
||||
}
|
||||
|
||||
if order(a.Reference.ValidatorOrder) != order(b.Reference.ValidatorOrder) {
|
||||
return order(a.Reference.ValidatorOrder) < order(b.Reference.ValidatorOrder)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user