Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Project Config update reduction #3887

Open
5 tasks
Dav1dde opened this issue Aug 2, 2024 · 0 comments
Open
5 tasks

Project Config update reduction #3887

Dav1dde opened this issue Aug 2, 2024 · 0 comments
Assignees

Comments

@Dav1dde
Copy link
Member

Dav1dde commented Aug 2, 2024

Project Config updates are quite costly within Relay but also in propagation over the wire. Project configs are consistently polled and kept up to date. The current mechanism/API has no way of indicating that a project config has not changed since the last update.

To reduce costs of these constant updates we should introduce a way to only actually send and update a project config when it changed.

For this to work we need to:

  • Have a revision/hash of the project config. In an initial dumb implementation can just generate a new revision everytime the project config is recomputed. A more elaborate version of this can calculate a consistent hash/version of the project config.
  • The API needs to be extended to allow signalling a project config was not updated, at the same time downstream Relays must be able to include their current revision ID per project config in the request.
  • Processing Relays loading from Redis can be updated to read from a more lightweight key <project_config_key>.revision first and only read the full update when the revision is unlike the one currently held in the cache.

Tasks

Dav1dde added a commit to getsentry/sentry that referenced this issue Aug 5, 2024
See: getsentry/relay#3887

Replaces the `sentry:relay-rev` with just a unique id per generation.
Dav1dde added a commit to getsentry/sentry that referenced this issue Aug 5, 2024
See: getsentry/relay#3887

Writes the revision to Redis as a separate key. Allowing for optimized
reads by revision.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant