Patch to make Cache Machine play nicely with multiple Databases #29
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.
I was having an issue where some cached queries were being pulled and stored from a slave database (e.g. Profile.objects.using('slave').all()), whereas others were being pulled from the master.
That led to unpredictable behavior during attempts to add/update ManyToMany and FK relations on a model instance pulled from master. If the M2M queryset to be added is pulled from the slave, Django raises a ValueError. You can't save relations across different DBs.
I went ahead and added db info to the query key to namespace the different databases. It's working for me and it doesn't add much overhead.
I am more than willing to live with fewer cache hits to avoid the headache of erratic, error prone code.
Can you see any issues with this code as far as invalidation goes?