Skip to content

Commit 7791944

Browse files
committed
perf(metrics): skip metrics computation when prometheus is disabled
Wrap histogram observation and SR set change detection with Metrics.enabled() guard to avoid unnecessary computation (DB reads, encode58Check, stream mapping, HashSet diff) on every block when metrics are not enabled.
1 parent 7fdb3c5 commit 7791944

1 file changed

Lines changed: 26 additions & 23 deletions

File tree

framework/src/main/java/org/tron/core/metrics/blockchain/BlockChainMetricManager.java

Lines changed: 26 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -177,30 +177,33 @@ public void applyBlock(BlockCapsule block) {
177177
Metrics.counterInc(MetricKeys.Counter.TXS, txCount,
178178
MetricLabels.Counter.TXS_SUCCESS, MetricLabels.Counter.TXS_SUCCESS);
179179
}
180-
// Record transaction count distribution for all blocks (including empty blocks)
181-
Metrics.histogramObserve(MetricKeys.Histogram.BLOCK_TRANSACTION_COUNT, txCount,
182-
StringUtil.encode58Check(address));
183-
184-
// SR set change detection
185-
long nextMaintenanceTime = dbManager.getDynamicPropertiesStore().getNextMaintenanceTime();
186-
if (lastNextMaintenanceTime == -1) {
187-
lastNextMaintenanceTime = nextMaintenanceTime;
188-
lastActiveWitnesses.addAll(chainBaseManager.getWitnessScheduleStore().getActiveWitnesses()
189-
.stream().map(w -> StringUtil.encode58Check(w.toByteArray()))
190-
.collect(Collectors.toSet()));
191-
} else if (nextMaintenanceTime != lastNextMaintenanceTime) {
192-
Set<String> currentWitnesses = chainBaseManager.getWitnessScheduleStore().getActiveWitnesses()
193-
.stream()
194-
.map(w -> StringUtil.encode58Check(w.toByteArray()))
195-
.collect(Collectors.toSet());
196-
if (nextMaintenanceTime < lastNextMaintenanceTime) {
197-
// Fork rollback detected — reinitialize instead of diffing
198-
lastActiveWitnesses.clear();
199-
lastActiveWitnesses.addAll(currentWitnesses);
200-
} else {
201-
recordSrSetChange(currentWitnesses);
180+
if (Metrics.enabled()) {
181+
// Record transaction count distribution for all blocks (including empty blocks)
182+
Metrics.histogramObserve(MetricKeys.Histogram.BLOCK_TRANSACTION_COUNT, txCount,
183+
StringUtil.encode58Check(address));
184+
185+
// SR set change detection
186+
long nextMaintenanceTime = dbManager.getDynamicPropertiesStore().getNextMaintenanceTime();
187+
if (lastNextMaintenanceTime == -1) {
188+
lastNextMaintenanceTime = nextMaintenanceTime;
189+
lastActiveWitnesses.addAll(chainBaseManager.getWitnessScheduleStore().getActiveWitnesses()
190+
.stream().map(w -> StringUtil.encode58Check(w.toByteArray()))
191+
.collect(Collectors.toSet()));
192+
} else if (nextMaintenanceTime != lastNextMaintenanceTime) {
193+
Set<String> currentWitnesses =
194+
chainBaseManager.getWitnessScheduleStore().getActiveWitnesses()
195+
.stream()
196+
.map(w -> StringUtil.encode58Check(w.toByteArray()))
197+
.collect(Collectors.toSet());
198+
if (nextMaintenanceTime < lastNextMaintenanceTime) {
199+
// Fork rollback detected — reinitialize instead of diffing
200+
lastActiveWitnesses.clear();
201+
lastActiveWitnesses.addAll(currentWitnesses);
202+
} else {
203+
recordSrSetChange(currentWitnesses);
204+
}
205+
lastNextMaintenanceTime = nextMaintenanceTime;
202206
}
203-
lastNextMaintenanceTime = nextMaintenanceTime;
204207
}
205208
}
206209

0 commit comments

Comments
 (0)