Using cache when within a transaction if already loaded #275
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 don't have the full context, but it is my understanding we do not want to send the cache backend destructive request while within a transaction for fear of corrupting with an operation that would never be commit on mysql.
We are hitting some code behaviours that are hard to diagnose and counter intuitive in active record callback code paths (those that imply transactions)
Here would be the current behaviour without these changes:
This lead to extra mysql calls for no reasons.
A "worst" example would be where you want to load data from IDC to edit it.
It somewhat counter intuitive to "rollback" the cached relation to a state pre-transaction.
Is there any pitfalls to use the cache if already populated even within a transaction? Is there a proper work around?
Thoughts? @dylanahsmith @chrisdonaldson
cc: @christianblais