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

Closed
4 of 5 tasks
Dav1dde opened this issue Aug 2, 2024 · 1 comment
Closed
4 of 5 tasks

Project Config update reduction #3887

Dav1dde opened this issue Aug 2, 2024 · 1 comment
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

  1. filler onboarding
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.
@Dav1dde
Copy link
Member Author

Dav1dde commented Sep 26, 2024

This has been implemented and rolled out.

Only the project config API in Sentry can still be extended, created a separate issue for this since that is non critical due to how Relay synchronizes with Sentry through Redis.

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