Track timestamps in lazer_exporter to avoid duplicate messages #172
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Track timestamps in lazer_exporter to avoid duplicate messages
Summary
Previously, the lazer_exporter would periodically copy all price infos from the local state via
state.get_all_price_infos()and send FeedUpdate messages for every price feed, even if the data hadn't changed. This led to many duplicate messages being sent to the relayer.This PR adds a HashMap to track the most recent
PriceInfo::timestampfor eachpyth_sdk::Identifier. Before sending a FeedUpdate, we now check if the price info has a newer timestamp than what was last sent. If not, we skip sending that update.Changes:
last_sent_timestampsHashMap to track the last sent timestamp per identifierReview & Testing Checklist for Human
Risk level: Yellow - Logic change that affects message deduplication behavior
last_sent_timestampsHashMap size is acceptable in production. It will grow to the number of unique identifiers ever seen during the agent's lifetime. Consider whether a bounded cache or TTL-based cleanup is needed for long-running processes.<=is correct (skip if timestamp is less than OR equal to last sent). Should we ever send updates with the same timestamp twice?Test Plan
Notes