]
Radim Vansa updated ISPN-7806:
------------------------------
Status: Pull Request Sent (was: Open)
Git Pull Request:
QueryInterceptor should not load entries from DC but context
------------------------------------------------------------
Key: ISPN-7806
URL:
https://issues.jboss.org/browse/ISPN-7806
Project: Infinispan
Issue Type: Bug
Components: Embedded Querying
Affects Versions: 9.0.0.Final
Reporter: Radim Vansa
Assignee: Gustavo Fernandes
Currently in {{visitPrepareCommand}} the query interceptor is loading data directly from
data container. That's wrong - if the entry is passivated/evicted, the previous value
is incorrect.
As the data is not loaded (from DC/persistence) at current QI position, we should move
QueryInterceptor after EntryWrappingInterceptor, CacheLoaderInterceptor -and
xDistributionInterceptor (which may load the data from remote node),- and load the
previous entry from context instead. The same approach should be taken for non-tx command,
rather than relying on their return value.
**EDIT**: we should not move it below xDistributionInterceptor because on backup owner
(which may be write-owner but not a read-owner) we would retrieve the updated value
(affected by the current command), not the previous one.
There will still be issues if the command has SKIP_CACHE_LOAD flag: I suggest warning
message if it doesn't have SKIP_INDEXING flag as well.