[
https://jira.jboss.org/browse/ISPN-731?page=com.atlassian.jira.plugin.sys...
]
Mircea Markus updated ISPN-731:
-------------------------------
Summary: make rehashing state and tx log draining serial (was: make state
transfer and tx log draining serial)
Description:
{A,B,C, D}, num owners= 2. A's state is {(k,v)} and a transactions is prepared with
{(k, otherValue)} on A.
B crashes.
two things happen with A's state:
1. on C an thread pulls state from A
2. A sends transaction state to C on another thread
Whit the right timing:
- 2 executes first (tx log is drained)
- tx commits - this applies the changes on C as well
- 1 executes last
Data ends up inconsistent:
A's states is {(k, otherValue)} while C's state is {(k,v)}
State transfer and tx log needs to be sequential (not parallel).
See the attached email thread for discussions around this.
was:
{A,B,C, D}, num owners= 2. A's state is {(k,v)} and a transactions is prepared with
{(k, otherValue)} on A.
B crashes.
two things happen with A's state:
1. on C an thread pulls state from A
2. A sends transaction state to C on another thread
Whit the right timing:
- 2 executes first (tx log is drained)
- tx commits - this applies the changes on C as well
- 1 executes last
Data ends up inconsistent:
A's states is {(k, otherValue)} while C's state is {(k,v)}
State transfer and tx log needs to be sequential (not parallel). The easy way to achieve
this is to only do push, i.e. A sends the state and then drains tx log.
This can be reproduce by running ConcurrentNonOverlappingLeaveTest.testTransactional
(fails aprox 1/5)
make rehashing state and tx log draining serial
-----------------------------------------------
Key: ISPN-731
URL:
https://jira.jboss.org/browse/ISPN-731
Project: Infinispan
Issue Type: Bug
Affects Versions: 4.1.0.Final
Reporter: Mircea Markus
Assignee: Manik Surtani
Priority: Critical
Fix For: 4.2.0.BETA1, 4.2.0.Final
{A,B,C, D}, num owners= 2. A's state is {(k,v)} and a transactions is prepared with
{(k, otherValue)} on A.
B crashes.
two things happen with A's state:
1. on C an thread pulls state from A
2. A sends transaction state to C on another thread
Whit the right timing:
- 2 executes first (tx log is drained)
- tx commits - this applies the changes on C as well
- 1 executes last
Data ends up inconsistent:
A's states is {(k, otherValue)} while C's state is {(k,v)}
State transfer and tx log needs to be sequential (not parallel).
See the attached email thread for discussions around this.
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
https://jira.jboss.org/secure/Administrators.jspa
-
For more information on JIRA, see:
http://www.atlassian.com/software/jira