From 319854ebf1be6f184673f098b7fa153d4844f504 Mon Sep 17 00:00:00 2001 From: MariusC Date: Wed, 2 Oct 2024 18:17:04 +0300 Subject: [PATCH] FEAT: Save metrics for sovereign committed block --- process/block/metrics.go | 17 +++++++++++++--- process/block/shardblock.go | 2 +- process/block/sovereignChainBlock.go | 29 ++++++++++++++++++++++++++++ 3 files changed, 44 insertions(+), 4 deletions(-) diff --git a/process/block/metrics.go b/process/block/metrics.go index 1ad32f8ea71..f05369ae230 100644 --- a/process/block/metrics.go +++ b/process/block/metrics.go @@ -84,7 +84,7 @@ func getMetricsFromHeader( appStatusHandler.SetUInt64Value(common.MetricTxPoolLoad, numTxWithDst) } -func saveMetricsForCommittedShardBlock( +func saveMetricsForCommittedShardAndCrossBlock( nodesCoordinator nodesCoordinator.NodesCoordinator, appStatusHandler core.AppStatusHandler, currentBlockHash string, @@ -92,13 +92,24 @@ func saveMetricsForCommittedShardBlock( metaBlock data.HeaderHandler, shardHeader data.HeaderHandler, managedPeersHolder common.ManagedPeersHolder, +) { + baseSaveMetricsForCommittedShardBlock(nodesCoordinator, appStatusHandler, currentBlockHash, highestFinalBlockNonce, shardHeader, managedPeersHolder) + appStatusHandler.SetStringValue(common.MetricCrossCheckBlockHeight, fmt.Sprintf("meta %d", metaBlock.GetNonce())) + appStatusHandler.SetUInt64Value(common.MetricCrossCheckBlockHeightMeta, metaBlock.GetNonce()) +} + +func baseSaveMetricsForCommittedShardBlock( + nodesCoordinator nodesCoordinator.NodesCoordinator, + appStatusHandler core.AppStatusHandler, + currentBlockHash string, + highestFinalBlockNonce uint64, + shardHeader data.HeaderHandler, + managedPeersHolder common.ManagedPeersHolder, ) { incrementMetricCountConsensusAcceptedBlocks(shardHeader, shardHeader.GetEpoch(), nodesCoordinator, appStatusHandler, managedPeersHolder) appStatusHandler.SetUInt64Value(common.MetricEpochNumber, uint64(shardHeader.GetEpoch())) appStatusHandler.SetStringValue(common.MetricCurrentBlockHash, currentBlockHash) appStatusHandler.SetUInt64Value(common.MetricHighestFinalBlock, highestFinalBlockNonce) - appStatusHandler.SetStringValue(common.MetricCrossCheckBlockHeight, fmt.Sprintf("meta %d", metaBlock.GetNonce())) - appStatusHandler.SetUInt64Value(common.MetricCrossCheckBlockHeightMeta, metaBlock.GetNonce()) } func saveMetricsForCommitMetachainBlock( diff --git a/process/block/shardblock.go b/process/block/shardblock.go index 695ac94d879..d38f70e7cc1 100644 --- a/process/block/shardblock.go +++ b/process/block/shardblock.go @@ -1043,7 +1043,7 @@ func (sp *shardProcessor) CommitBlock( return err } - saveMetricsForCommittedShardBlock( + saveMetricsForCommittedShardAndCrossBlock( sp.nodesCoordinator, sp.appStatusHandler, logger.DisplayByteSlice(headerHash), diff --git a/process/block/sovereignChainBlock.go b/process/block/sovereignChainBlock.go index 3a9331fdda5..c2a3f658104 100644 --- a/process/block/sovereignChainBlock.go +++ b/process/block/sovereignChainBlock.go @@ -1508,6 +1508,13 @@ func (scbp *sovereignChainBlockProcessor) CommitBlock(headerHandler data.HeaderH "nonce", highestFinalBlockNonce, ) + err = scbp.saveSovereignMetricsForCommittedBlock( + logger.DisplayByteSlice(headerHash), + highestFinalBlockNonce, + headerHandler) + if err != nil { + return err + } // TODO: MX-15748 Analyse if !check.IfNil(lastMetaBlock) && lastMetaBlock.IsStartOfEpochBlock() from metablock.go err = scbp.commonHeaderAndBodyCommit(headerHandler, body, headerHash, []data.HeaderHandler{lastSelfNotarizedHeader}, [][]byte{lastSelfNotarizedHeaderHash}) if err != nil { @@ -1808,6 +1815,28 @@ func (scbp *sovereignChainBlockProcessor) saveExtendedShardHeader(header data.He } } +func (scbp *sovereignChainBlockProcessor) saveSovereignMetricsForCommittedBlock( + currentBlockHash string, + highestFinalBlockNonce uint64, + shardHeader data.HeaderHandler, +) error { + baseSaveMetricsForCommittedShardBlock( + scbp.nodesCoordinator, + scbp.appStatusHandler, + currentBlockHash, + highestFinalBlockNonce, + shardHeader, + scbp.managedPeersHolder, + ) + lastMainChainHdr, _, err := scbp.blockTracker.GetLastCrossNotarizedHeader(core.MainChainShardId) + if err != nil { + return err + } + + scbp.appStatusHandler.SetStringValue(common.MetricCrossCheckBlockHeight, fmt.Sprintf("mainChain %d", lastMainChainHdr.GetNonce())) + return nil +} + // RestoreBlockIntoPools restores block into pools func (scbp *sovereignChainBlockProcessor) RestoreBlockIntoPools(header data.HeaderHandler, body data.BodyHandler) error { scbp.restoreBlockBody(header, body)