Hi all, While I was working in Infinispan, I have found some issues with the versioned transactional cache. I have created some tests cases (can be found here [1]) to reproduce the issues and also I have fixed one of them. The issues are the following:
1) testPutIfAbsent, testRemoveIfPresent, testReplaceWithOldVal (methods the test cases) In this tests, it was updating the cache entry with a null version. This originates later a IllegalStateException when it tries to perform the write skew check and the version is null. I have fixed this problem in this way: if the command fails (PutCommand, RemoveCommand, ReplaceCommand), I unset the flag CHANGED in the MvccEntry to avoid to update the entry in the DataContainer. 2) testClear in distributed mode I have no clear idea how to solve this problem but it looks like the PrepareCommand (with the ClearCommand) is not sent to all the nodes in the cluster. Then, when I do a get, a remote get is performed and the key is still there. I think that it is not the desired behavior. 3) testRemoveUnexistingEntry In this test, it tries to remove a key that does not exists but it does not success due to a NullPointerException. I have looked deeper and I check that the transaction's lookup entries map has an entry with [key => null] and when it tries to perform the write skew check in that key, a NullPointerException is thrown in here [2] (line 80, WriteSkewHelper) Should I open a JIRA with this 3 issues (or 3 JIRAs, one for each issue)? If you want, I can issue a pull request too. Cheers, Pedro Ruivo [1] https://github.com/pruivo/infinispan/tree/t_replace_fix [2] https://github.com/pruivo/infinispan/blob/t_replace_fix/core/src/main/java/org/infinispan/transaction/WriteSkewHelper.java#L80 _______________________________________________ infinispan-dev mailing list [email protected] https://lists.jboss.org/mailman/listinfo/infinispan-dev
