diff --git a/packages/binary/messagelayer/tangle/tangle.go b/packages/binary/messagelayer/tangle/tangle.go index 5935619c7a91276ba31fca660ed7e43762546460..66dc3aff47d14436c2968db3e401e9a1be50c37e 100644 --- a/packages/binary/messagelayer/tangle/tangle.go +++ b/packages/binary/messagelayer/tangle/tangle.go @@ -159,7 +159,9 @@ func (tangle *Tangle) DBStats() (solidCount int, messageCount int, avgSolidifica }) return true }) - avgSolidificationTime = float64(sumSolidificationTime.Milliseconds()) / float64(solidCount) + if solidCount > 0 { + avgSolidificationTime = float64(sumSolidificationTime.Milliseconds()) / float64(solidCount) + } // TODO: get rid of console printing fmt.Println("solid", solidCount, "message", messageCount, "iterations", iterations) return diff --git a/plugins/metrics/message.go b/plugins/metrics/message.go index 4737eca7a52a2aa07808655332b2bfdc2f442e42..a552571d19e67a1fd79b4978d100ec263928b82f 100644 --- a/plugins/metrics/message.go +++ b/plugins/metrics/message.go @@ -96,10 +96,14 @@ func MessageTotalCountDB() uint64 { } // AvgSolidificationTime returns the average time it takes for a message to become solid. [milliseconds] -func AvgSolidificationTime() float64 { +func AvgSolidificationTime() (result float64) { solidTimeMutex.RLock() defer solidTimeMutex.RUnlock() - return (initialSumSolidificationTime + float64(sumSolidificationTime.Milliseconds())) / float64(MessageSolidCountDB()) + totalSolid := MessageSolidCountDB() + if totalSolid > 0 { + result = (initialSumSolidificationTime + float64(sumSolidificationTime.Milliseconds())) / float64(totalSolid) + } + return } // ReceivedMessagesPerSecond retrieves the current messages per second number.