[
https://issues.jboss.org/browse/ISPN-3693?page=com.atlassian.jira.plugin....
]
William Burns updated ISPN-3693:
--------------------------------
Description:
The activation interceptor when doing manual eviction always removes the entry from the
loader on a get. This is done even if the entry is in the data container.
Now this is fine for a single invocation. However if a concurrent evict command comes on
a different thread you can get in a state where the data is neither in the dc or loader
defeating the purpose of Passivation.
The following describes this scenario
{code}
t1 -> calls get retrieves value from context (dc)
t2 -> calls evict retrieves valule from context (dc)
t2 -> passivates entry
t1 -> activates entry
t2 -> removes entry from dc
{code}
Note this doesn't affect sized based eviction.
Also looking closer we need to fix the act of activation. It can cause a window where no
data is available between when the loader entry is removed and the data is committed to
the data container. This would especially be apparent with tx caches as the data
container wouldn't be updated until the tx is completed where as the loader is removed
on the get.
was:
The activation interceptor when doing manual eviction always removes the entry from the
loader on a get. This is done even if the entry is in the data container.
Now this is fine for a single invocation. However if a concurrent evict command comes on
a different thread you can get in a state where the data is neither in the dc or loader
defeating the purpose of Passivation.
The following describes this scenario
{code}
t1 -> calls get retrieves value from context (dc)
t2 -> cals evict retrieves valule from context (dc)
t2 -> passivates entry
t1 -> activates entry
t2 -> removes entry from dc
{code}
Note this doesn't affect sized based eviction.
Also looking closer we need to fix the act of activation. It can cause a window where no
data is available between when the loader entry is removed and the data is committed to
the data container. This would especially be apparent with tx caches as the data
container wouldn't be updated until the tx is completed where as the loader is removed
on the get.
ActivationInterceptor on get always deletes store contents
----------------------------------------------------------
Key: ISPN-3693
URL:
https://issues.jboss.org/browse/ISPN-3693
Project: Infinispan
Issue Type: Bug
Components: Loaders and Stores
Affects Versions: 6.0.0.CR1
Reporter: William Burns
Assignee: Mircea Markus
Fix For: 6.0.0.CR2
The activation interceptor when doing manual eviction always removes the entry from the
loader on a get. This is done even if the entry is in the data container.
Now this is fine for a single invocation. However if a concurrent evict command comes on
a different thread you can get in a state where the data is neither in the dc or loader
defeating the purpose of Passivation.
The following describes this scenario
{code}
t1 -> calls get retrieves value from context (dc)
t2 -> calls evict retrieves valule from context (dc)
t2 -> passivates entry
t1 -> activates entry
t2 -> removes entry from dc
{code}
Note this doesn't affect sized based eviction.
Also looking closer we need to fix the act of activation. It can cause a window where no
data is available between when the loader entry is removed and the data is committed to
the data container. This would especially be apparent with tx caches as the data
container wouldn't be updated until the tx is completed where as the loader is removed
on the get.
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see:
http://www.atlassian.com/software/jira