On 21 Oct 2010, at 22:54, Mircea Markus wrote:
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).
But it is sequential.
http://fisheye.jboss.org/browse/Infinispan/branches/4.2.x/core/src/main/j...
Or is this not the case anymore, since Vladimir inverted the LeaveTask? Vladimir, can you
confirm that these 2 actions (providing state and flushing/tx logs) happen in the same
thread?
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
_______________________________________________
infinispan-dev mailing list
infinispan-dev(a)lists.jboss.org
https://lists.jboss.org/mailman/listinfo/infinispan-dev
--
Manik Surtani
manik(a)jboss.org
Lead, Infinispan
Lead, JBoss Cache
http://www.infinispan.org
http://www.jbosscache.org