[
https://issues.jboss.org/browse/ISPN-3780?page=com.atlassian.jira.plugin....
]
William Burns commented on ISPN-3780:
-------------------------------------
Radim, do you happen to have a link to the entire trace?
In the cases I am finding the put is retried properly with the new topology and everything
is fine. I have tried a few slight variations of the following case you originally
stated.
{quote}
1. D executes PUT -> sends command to A
2. A executes the PUT, sends invalidation to C
3. ST from A to C begins
4. C receives InvalidateL1 and puts this key into updateKeys
5. C receives state but ignores the updated key
{quote}
In this case the put on A should end up throwing a OutdatedTopologyException after it
tries to commit which would cause a retry to occur from node D with the updated topology
which would put the correct value into C.
I wonder though if the L1 invalidation came from the L1LastChanceInterceptor though as
that would not cause a retry. It could be that the commit completes, then the topology is
updated and then last chance fires, which is why it would have the correct topology id on
the command. I will try to get that test up and running. The complete log would help
show me if that matches your case or not.
Either way I wouldn't expect the value to be in L1 still. I would expect the value to
be removed from the invalidation, can you confirm if that is true? Looking at the log it
looks like it was already null "Entry for key key_0000000000003154 is null"
CLONE - InvalidateL1Command during ST should not cancel writing the
entry by ST in nontx
----------------------------------------------------------------------------------------
Key: ISPN-3780
URL:
https://issues.jboss.org/browse/ISPN-3780
Project: Infinispan
Issue Type: Bug
Components: Distributed Cache
Affects Versions: 5.3.0.Final
Reporter: Radim Vansa
Assignee: William Burns
Priority: Critical
Labels: 620
Fix For: 6.1.0.Final
When a node which is about to receive the entries for some segment receives
InvalidateL1Command, this puts the key into StateConsumer.updatedKeys. After the entries
for ST are received, the entry which was invalidated is not updated -> this result in
losing the entry.
Btw., in EntryWrappingInterceptor.visitInvalidateL1Command the trace logs all looked up
entries for each entry - this causes some performance problems when tracing is on and
there are many invalidated entries. Please, do this only once.
--
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