fix(server): Refresh projects based on internal timestamps #596
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.
The
last_fetch
timestamp in project configs is set when it is written into the cache in Sentry. Since this timestamp may be arbitrarily old, this will force Relays to constantly refresh all project caches. While this is not such a big deal internally, since those requests go to a cache, it creates too much load for external Relays. Also, these time stamps are subject to clock drift and should not be trusted.As such, the
last_fetch
timestamp has no useful semantics. Instead, the instant of loading theProjectState
should be used to determine the last fetch.Since fetching projects is now a fast operation (both internally and externally), the overcomplicated logic for creating jitter is no longer appropriate. Instead, a simple time-based backoff for refreshes is absolutely sufficient.
Reverts #277