-
Notifications
You must be signed in to change notification settings - Fork 93
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
feat(replays): lower max replay recording segment size to 10 MiB #2031
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
RSLGTM!
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I left few questions, before approving this.
Also you like to get @jjbayer opinion on the naming here.
@@ -542,8 +542,10 @@ struct Limits { | |||
max_api_chunk_upload_size: ByteSize, | |||
/// The maximum payload size for a profile | |||
max_profile_size: ByteSize, | |||
/// The maximum payload size for a replay. | |||
max_replay_size: ByteSize, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Can we keep old config and use max_replay_size
as incoming check, the one is currently called max_replay_compressed_size
, which clearly signals what the check is for, and if this is really necessary also use serde
alias to rename it to the new name?
What do you think?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The new naming looks OK to me, but I would add the old name as an alias
as @olksdr suggests, such that this is not a breaking change.
@@ -542,8 +542,10 @@ struct Limits { | |||
max_api_chunk_upload_size: ByteSize, | |||
/// The maximum payload size for a profile | |||
max_profile_size: ByteSize, | |||
/// The maximum payload size for a replay. | |||
max_replay_size: ByteSize, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The new naming looks OK to me, but I would add the old name as an alias
as @olksdr suggests, such that this is not a breaking change.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Once the changelog updated , this should be good to go.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
See @olksdr 's changelog comments, otherwise LGTM!
We were previously chunking kafka messages on the replay recording topic to 1 MiB. We are aiming to eliminate this chunking as it requires us to maintain a redis cluster / constrains us to in-order processing. Other infra at Sentry has successfully experimented with larger kafka messages, so we feel this is safe. With #2031 this should pretty much mean we no longer chunk any messages. We can remove the chunking logic once this is confirmed after deploy. - [x] Increase chunking limit from 1MiB to 15 MiB. We chose 15MiB as the limit, as we're eventually going to combine the replay event with the replay recording, and will want some extra headroom for this in addition to our 10 MiB recording limit. Depends on ops increasing our kafka payload size limit first.
max_replay_compressed
) and one for uncompressed sizemax_replay_uncompressed_size
. The original value now represents the uncompressed size (100 MiB
), which is utilized during processing. The new value,max_replay_compressed
, is applied during the ingest stage.10 MiB
) setting for check_envelope_size_limits.We are making this change as we have done analysis around our payload sizes, and if replays are above this size there is usually something off with them (mass mutation bugs, accidental inclusion of files, old SDK versions, etc.)