13
13
14
14
#include " medida/meter.h"
15
15
#include " medida/metrics_registry.h"
16
+ #include " xdr/Stellar-ledger-entries.h"
16
17
#include < shared_mutex>
18
+ #include < xdrpp/types.h>
17
19
18
20
namespace stellar
19
21
{
@@ -38,6 +40,16 @@ BucketSnapshotManager::BucketSnapshotManager(
38
40
releaseAssert (threadIsMain ());
39
41
releaseAssert (mCurrLiveSnapshot );
40
42
releaseAssert (mCurrHotArchiveSnapshot );
43
+
44
+ // Initialize point load timers for each LedgerEntry type
45
+ for (auto t : xdr::xdr_traits<LedgerEntryType>::enum_values ())
46
+ {
47
+ auto const & label = xdr::xdr_traits<LedgerEntryType>::enum_name (
48
+ static_cast <LedgerEntryType>(t));
49
+ auto & metric =
50
+ mApp .getMetrics ().NewTimer ({" bucketlistDB" , " point" , label});
51
+ mPointTimers .emplace (static_cast <LedgerEntryType>(t), metric);
52
+ }
41
53
}
42
54
43
55
std::shared_ptr<SearchableLiveBucketListSnapshot>
@@ -215,14 +227,7 @@ BucketSnapshotManager::endPointLoadTimer(LedgerEntryType t,
215
227
if (!bloomMiss)
216
228
{
217
229
auto iter = mPointTimers .find (t);
218
- if (iter == mPointTimers .end ())
219
- {
220
- auto const & label = xdr::xdr_traits<LedgerEntryType>::enum_name (t);
221
- auto & metric =
222
- mApp .getMetrics ().NewTimer ({" bucketlistDB" , " point" , label});
223
- iter = mPointTimers .emplace (t, metric).first ;
224
- }
225
-
230
+ releaseAssert (iter != mPointTimers .end ());
226
231
iter->second .Update (duration);
227
232
}
228
233
}
0 commit comments