From 5e2743cc269af184ea660dcca158f1226ba0cd7a Mon Sep 17 00:00:00 2001 From: Levente Pap <levente.pap@iota.org> Date: Wed, 15 Jul 2020 17:34:16 +0200 Subject: [PATCH] FIx avgSolidificationTime metrics --- plugins/metrics/message.go | 4 +++- plugins/metrics/plugin.go | 6 ++++-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/plugins/metrics/message.go b/plugins/metrics/message.go index e09e0168..4737eca7 100644 --- a/plugins/metrics/message.go +++ b/plugins/metrics/message.go @@ -97,6 +97,8 @@ func MessageTotalCountDB() uint64 { // AvgSolidificationTime returns the average time it takes for a message to become solid. [milliseconds] func AvgSolidificationTime() float64 { + solidTimeMutex.RLock() + defer solidTimeMutex.RUnlock() return (initialSumSolidificationTime + float64(sumSolidificationTime.Milliseconds())) / float64(MessageSolidCountDB()) } @@ -150,5 +152,5 @@ func measureInitialDBStats() { initialMessageSolidCountDB.Store(uint64(solid)) initialMessageTotalCountDB.Store(uint64(total)) initialAvgSolidificationTime.Store(avgSolidTime) - initialSumSolidificationTime = avgSolidTime * float64(total) + initialSumSolidificationTime = avgSolidTime * float64(solid) } diff --git a/plugins/metrics/plugin.go b/plugins/metrics/plugin.go index 25063ec6..0217f968 100644 --- a/plugins/metrics/plugin.go +++ b/plugins/metrics/plugin.go @@ -111,13 +111,15 @@ func registerLocalMetrics() { // messages can only become solid once, then they stay like that, hence no .Dec() part messagelayer.Tangle().Events.MessageSolid.Attach(events.NewClosure(func(cachedMessage *message.CachedMessage, cachedMessageMetadata *tangle.CachedMessageMetadata) { cachedMessage.Release() - messageSolidCountDBInc.Inc() solidTimeMutex.Lock() defer solidTimeMutex.Unlock() // Consume should release cachedMessageMetadata cachedMessageMetadata.Consume(func(object objectstorage.StorableObject) { msgMetaData := object.(*tangle.MessageMetadata) - sumSolidificationTime += msgMetaData.SolidificationTime().Sub(msgMetaData.ReceivedTime()) + if msgMetaData.IsSolid() { + messageSolidCountDBInc.Inc() + sumSolidificationTime += msgMetaData.SolidificationTime().Sub(msgMetaData.ReceivedTime()) + } }) })) -- GitLab