diff --git a/packages/validator/src/services/proposerPreferences.ts b/packages/validator/src/services/proposerPreferences.ts index 29e161754156..42ff1101bb5a 100644 --- a/packages/validator/src/services/proposerPreferences.ts +++ b/packages/validator/src/services/proposerPreferences.ts @@ -47,6 +47,7 @@ export class ProposerPreferencesService { _metrics: Metrics | null ) { clock.runEverySlot(this.runProposerPreferencesTask); + clock.runEveryEpoch(this.pruneSubmitted); } private runProposerPreferencesTask = async (slot: Slot): Promise => { @@ -128,4 +129,13 @@ export class ProposerPreferencesService { this.logger.error("Error submitting signed proposer preferences", {count: batch.length}, e as Error); } }; + + /** Drop tracking for past epochs; only currentEpoch and currentEpoch + 1 are ever processed. */ + private pruneSubmitted = async (epoch: Epoch): Promise => { + for (const trackedEpoch of this.submitted.keys()) { + if (trackedEpoch < epoch) { + this.submitted.delete(trackedEpoch); + } + } + }; }