feat(query): set read preference to SECONDARY by default #1466
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.
Use-case
We think it makes sense to keep the load off the primary where possible, but here is one scenario that has stung us many times:
Given how flexible the data-browser is, it's very easy to accidentally set the
sort
on a large collection on an unindexed field. Whilst there are multiple lines of defences that we can add (beforeFind in parse-server, no unindexed queries in MongoDB, etc), we think this is a good starting point for other developers.Implementation
Right now, I've just set the common find and count queries to be
SECONDARY
. None of the critical flows such as writes, or even reads on Roles, ACLs etc are set to use this preference. For now, I've not added a configuration option to disable this. Happy to look into this if it's helpful?