Skip to content

Commit 61f64d1

Browse files
authored
Fix minMeshMessageDeliveriesWindow (#218)
* Fix minMeshMessageDeliveriesWindow * Fix gossipsubIWantFollowupTime for metric * Fix tracer prune() * Change to maxMeshMessageDeliveriesWindow
1 parent 6b99dbf commit 61f64d1

File tree

4 files changed

+24
-13
lines changed

4 files changed

+24
-13
lines changed

ts/constants.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -238,3 +238,8 @@ export const ACCEPT_FROM_WHITELIST_MAX_MESSAGES = 128
238238
* this peer up to this time duration.
239239
*/
240240
export const ACCEPT_FROM_WHITELIST_DURATION_MS = 1000
241+
242+
/**
243+
* The default MeshMessageDeliveriesWindow to be used in metrics.
244+
*/
245+
export const DEFAULT_METRIC_MESH_MESSAGE_DELIVERIES_WINDOWS = 1000

ts/index.ts

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -397,14 +397,18 @@ export default class Gossipsub extends EventEmitter {
397397
throw Error('Must set metricsTopicStrToLabel with metrics')
398398
}
399399

400+
// in theory, each topic has its own meshMessageDeliveriesWindow param
401+
// however in lodestar, we configure it mostly the same so just pick the max of positive ones
402+
// (some topics have meshMessageDeliveriesWindow as 0)
403+
const maxMeshMessageDeliveriesWindow = Math.max(
404+
...Object.values(opts.scoreParams.topics).map((topicParam) => topicParam.meshMessageDeliveriesWindow),
405+
constants.DEFAULT_METRIC_MESH_MESSAGE_DELIVERIES_WINDOWS
406+
)
407+
400408
const metrics = getMetrics(options.metricsRegister, options.metricsTopicStrToLabel, {
401-
gossipPromiseExpireSec: constants.GossipsubIWantFollowupTime / 1000,
409+
gossipPromiseExpireSec: this.opts.gossipsubIWantFollowupTime / 1000,
402410
behaviourPenaltyThreshold: opts.scoreParams.behaviourPenaltyThreshold,
403-
// in theory, each topic has its own meshMessageDeliveriesWindow param
404-
// however in lodestar, we configure it the same so just pick the min one
405-
minMeshMessageDeliveriesWindow: Math.min(
406-
...Object.values(opts.scoreParams.topics).map((topicParam) => topicParam.meshMessageDeliveriesWindow)
407-
)
411+
maxMeshMessageDeliveriesWindow
408412
})
409413

410414
metrics.mcacheSize.addCollect(() => this.onScrapeMetrics(metrics))

ts/metrics.ts

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -161,7 +161,7 @@ export type Metrics = ReturnType<typeof getMetrics>
161161
export function getMetrics(
162162
register: MetricsRegister,
163163
topicStrToLabel: TopicStrToLabel,
164-
opts: { gossipPromiseExpireSec: number; behaviourPenaltyThreshold: number; minMeshMessageDeliveriesWindow: number }
164+
opts: { gossipPromiseExpireSec: number; behaviourPenaltyThreshold: number; maxMeshMessageDeliveriesWindow: number }
165165
) {
166166
// Using function style instead of class to prevent having to re-declare all MetricsPrometheus types.
167167

@@ -346,11 +346,11 @@ export function getMetrics(
346346
help: 'Time since the 1st duplicated message validated',
347347
labelNames: ['topic'],
348348
buckets: [
349-
0.25 * opts.minMeshMessageDeliveriesWindow,
350-
0.5 * opts.minMeshMessageDeliveriesWindow,
351-
1 * opts.minMeshMessageDeliveriesWindow,
352-
2 * opts.minMeshMessageDeliveriesWindow,
353-
4 * opts.minMeshMessageDeliveriesWindow
349+
0.25 * opts.maxMeshMessageDeliveriesWindow,
350+
0.5 * opts.maxMeshMessageDeliveriesWindow,
351+
1 * opts.maxMeshMessageDeliveriesWindow,
352+
2 * opts.maxMeshMessageDeliveriesWindow,
353+
4 * opts.maxMeshMessageDeliveriesWindow
354354
]
355355
}),
356356
/** Total count of late msg delivery total by topic */

ts/tracer.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -143,9 +143,11 @@ export class IWantTracer {
143143
const maxMs = Date.now() - this.requestMsByMsgExpire
144144

145145
for (const [k, v] of this.requestMsByMsg.entries()) {
146-
if (v < maxMs) {
146+
if (v >= maxMs) {
147+
// messages that stay too long in the requestMsByMsg map, delete
147148
this.requestMsByMsg.delete(k)
148149
} else {
150+
// recent messages, keep them
149151
// sort by insertion order
150152
break
151153
}

0 commit comments

Comments
 (0)