Make sure there are no negative numbers in the report

This commit is contained in:
msutton 2022-03-14 13:40:18 +02:00
parent 7ffe83e4f1
commit 38b211e260
2 changed files with 19 additions and 3 deletions

View File

@ -10,6 +10,10 @@ type ibdProgressReporter struct {
} }
func newIBDProgressReporter(lowDAAScore uint64, highDAAScore uint64, objectName string) *ibdProgressReporter { func newIBDProgressReporter(lowDAAScore uint64, highDAAScore uint64, objectName string) *ibdProgressReporter {
if highDAAScore <= lowDAAScore {
// Avoid a zero or negative diff
highDAAScore = lowDAAScore + 1
}
return &ibdProgressReporter{ return &ibdProgressReporter{
lowDAAScore: lowDAAScore, lowDAAScore: lowDAAScore,
highDAAScore: highDAAScore, highDAAScore: highDAAScore,
@ -28,7 +32,11 @@ func (ipr *ibdProgressReporter) reportProgress(processedDelta int, highestProces
ipr.highDAAScore = highestProcessedDAAScore + 1 // + 1 for keeping it at 99% ipr.highDAAScore = highestProcessedDAAScore + 1 // + 1 for keeping it at 99%
ipr.totalDAAScoreDifference = ipr.highDAAScore - ipr.lowDAAScore ipr.totalDAAScoreDifference = ipr.highDAAScore - ipr.lowDAAScore
} }
relativeDAAScore := highestProcessedDAAScore - ipr.lowDAAScore relativeDAAScore := uint64(0)
if highestProcessedDAAScore > ipr.lowDAAScore {
// Avoid a negative diff
relativeDAAScore = highestProcessedDAAScore - ipr.lowDAAScore
}
progressPercent := int((float64(relativeDAAScore) / float64(ipr.totalDAAScoreDifference)) * 100) progressPercent := int((float64(relativeDAAScore) / float64(ipr.totalDAAScoreDifference)) * 100)
if progressPercent > ipr.lastReportedProgressPercent { if progressPercent > ipr.lastReportedProgressPercent {
log.Infof("IBD: Processed %d %s (%d%%)", ipr.processed, ipr.objectName, progressPercent) log.Infof("IBD: Processed %d %s (%d%%)", ipr.processed, ipr.objectName, progressPercent)

View File

@ -10,6 +10,10 @@ type ibdProgressReporter struct {
} }
func newIBDProgressReporter(lowDAAScore uint64, highDAAScore uint64, objectName string) *ibdProgressReporter { func newIBDProgressReporter(lowDAAScore uint64, highDAAScore uint64, objectName string) *ibdProgressReporter {
if highDAAScore <= lowDAAScore {
// Avoid a zero or negative diff
highDAAScore = lowDAAScore + 1
}
return &ibdProgressReporter{ return &ibdProgressReporter{
lowDAAScore: lowDAAScore, lowDAAScore: lowDAAScore,
highDAAScore: highDAAScore, highDAAScore: highDAAScore,
@ -28,7 +32,11 @@ func (ipr *ibdProgressReporter) reportProgress(processedDelta int, highestProces
ipr.highDAAScore = highestProcessedDAAScore + 1 // + 1 for keeping it at 99% ipr.highDAAScore = highestProcessedDAAScore + 1 // + 1 for keeping it at 99%
ipr.totalDAAScoreDifference = ipr.highDAAScore - ipr.lowDAAScore ipr.totalDAAScoreDifference = ipr.highDAAScore - ipr.lowDAAScore
} }
relativeDAAScore := highestProcessedDAAScore - ipr.lowDAAScore relativeDAAScore := uint64(0)
if highestProcessedDAAScore > ipr.lowDAAScore {
// Avoid a negative diff
relativeDAAScore = highestProcessedDAAScore - ipr.lowDAAScore
}
progressPercent := int((float64(relativeDAAScore) / float64(ipr.totalDAAScoreDifference)) * 100) progressPercent := int((float64(relativeDAAScore) / float64(ipr.totalDAAScoreDifference)) * 100)
if progressPercent > ipr.lastReportedProgressPercent { if progressPercent > ipr.lastReportedProgressPercent {
log.Infof("IBD: Processed %d %s (%d%%)", ipr.processed, ipr.objectName, progressPercent) log.Infof("IBD: Processed %d %s (%d%%)", ipr.processed, ipr.objectName, progressPercent)