[infinispan-dev] rehashing hazard
Mircea Markus
mircea.markus at jboss.com
Thu Oct 21 17:54:17 EDT 2010
Hi,
ISPN-180 requires some significant code changes around re-hashing, so I've decided to make the rehashing-related test suite more stable before changing the code.
I've fixed some, but transactional rehash tests are still failing. Here is why:
{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)
Cheers,
Mircea
More information about the infinispan-dev
mailing list