[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