[Do Not Merge] Example of BindingIndex invalidation strategy's failure to handle reused (non-unique) identities. #59
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.
Don't merge this, as it's just a failing spec to demonstrate the failure of the
BindingIndex
invalidation strategy to handleMongoid::Identity
bindings in cases where the document class uses non-unique slugs (i.e.,slug
without{ :history => true }
), and a slug gets reused on two different objects.This is representative of a more general issue, where the
BindingIndex
invalidation strategy (by design) never updates the canonical binding reference for non-canonical bindings. So, if an invalid value is ever written to the canonical binding reference, the cache will never heal (except by callinginvalidate_garner_caches
directly on the non-canonical binding).My opinion is that the current behavior should not be modified, but I wanted to at least document the issue.
cc: @dblock @dylanfareed