[infinispan-issues] [JBoss JIRA] (ISPN-3738) Entry version gets lost during topology change -> NPE
RH Bugzilla Integration (JIRA)
jira-events at lists.jboss.org
Wed Nov 20 10:26:06 EST 2013
[ https://issues.jboss.org/browse/ISPN-3738?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12925381#comment-12925381 ]
RH Bugzilla Integration commented on ISPN-3738:
-----------------------------------------------
Radim Vansa <rvansa at redhat.com> made a comment on [bug 1032693|https://bugzilla.redhat.com/show_bug.cgi?id=1032693]
Replicated TX cache with WSC, A, B are in cluster, C is joining
0. The current CH already contains A and B as owners, C is joining (is not primary owner of anything yet). B is primary owner of K=V.
1. A sends PrepareCommand to B and C with put(K, V) (V is null on all nodes)
2. C receives PrepareCommand and responds with no versions (it is not primary owner)
3. topology changes on B - primary ownership of K is transfered to C
4. B receives PrepareCommand, responds without K's version (it is not primary)
5. B forwards the Prepare to C as it sees that the command has lower topology ID
6. C responds to B's prepare with version of K
7. K version is not added to B's response, B responds to A
8. A finds out that topology has changed, forwards prepare to C
9. C responds to C's prepare with version of K
10. A receives C's response, but the versions are not added to transaction
11. A sends out CommitCommand missing version of K
12. all nodes record K=V without version as usual ImmortalCacheEntry
13. the next time we try to increase version of K=V, we fail with NPE in SimpleClusteredVersionGenerator (actually when it tries to throw IllegalArgumentException because the null version is unexpected version class)
> Entry version gets lost during topology change -> NPE
> -----------------------------------------------------
>
> Key: ISPN-3738
> URL: https://issues.jboss.org/browse/ISPN-3738
> Project: Infinispan
> Issue Type: Bug
> Components: Distributed Cache
> Affects Versions: 6.0.0.Final
> Reporter: Radim Vansa
> Assignee: Mircea Markus
> Priority: Critical
>
> Replicated TX cache with WSC, A, B are in cluster, C is joining
> 0. The current CH already contains A and B as owners, C is joining (is not primary owner of anything yet). B is primary owner of K=V.
> 1. A sends PrepareCommand to B and C with put(K, V) (V is null on all nodes)
> 2. C receives PrepareCommand and responds with no versions (it is not primary owner)
> 3. topology changes on B - primary ownership of K is transfered to C
> 4. B receives PrepareCommand, responds without K's version (it is not primary)
> 5. B forwards the Prepare to C as it sees that the command has lower topology ID
> 6. C responds to B's prepare with version of K
> 7. K version is *not* added to B's response, B responds to A
> 8. A finds out that topology has changed, forwards prepare to C
> 9. C responds to C's prepare with version of K
> 10. A receives C's response, but the versions are not added to transaction
> 11. A sends out CommitCommand missing version of K
> 12. all nodes record K=V without version as usual ImmortalCacheEntry
> 13. the next time we try to increase version of K=V, we fail with NPE in SimpleClusteredVersionGenerator (actually when it tries to throw IllegalArgumentException because the null version is unexpected version class)
--
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
More information about the infinispan-issues
mailing list