fix: throttle the collection write requests #249903
Closed
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.
This PR adds a throttle to POST and DELETE collection calls so that the settings sync server can ingest the incoming data without conflicts.
I originally read up on session consistency and thought that we needed to implement session tokens, but I noticed that even after using session tokens, writing two collections at nearly the same time still resulted in a last-writer-wins scenario that matches with the documentation on managing conflicts. Even adding retry logic did not fix that case.
As a result of my experiences above, I added throttling instead, which seemed to significantly reduce the rate of 405 errors upon creating or deleting profiles. The downside is that users must wait several seconds for bulk additions/deletions, but I do not expect most users to tweak their profiles very frequently.