Track timestamps in lazer_exporter to avoid duplicate messages#172
Open
devin-ai-integration[bot] wants to merge 3 commits intomainfrom
Open
Track timestamps in lazer_exporter to avoid duplicate messages#172devin-ai-integration[bot] wants to merge 3 commits intomainfrom
devin-ai-integration[bot] wants to merge 3 commits intomainfrom
Conversation
Keep track of the most recent PriceInfo::timestamp for each pyth_sdk::Identifier and skip objects that do not have a newer timestamp. This prevents sending duplicate FeedUpdate messages when the local state has not been updated. Co-Authored-By: Mike Rolish <merolish@mit.edu>
Contributor
Author
🤖 Devin AI EngineerI'll be helping with this pull request! Here's what you should know: ✅ I will automatically:
Note: I can only respond to comments from users who have write access to this repository. ⚙️ Control Options:
|
Co-Authored-By: Mike Rolish <merolish@mit.edu>
ali-behjati
reviewed
Oct 22, 2025
Collaborator
ali-behjati
left a comment
There was a problem hiding this comment.
Please bump the version @devin
Co-Authored-By: Mike Rolish <merolish@mit.edu>
Contributor
Author
|
Version bumped to 3.0.7 in commit 7e19cf2. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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