2013-02-25 14:26:25,071 WARN [RepeatableReadEntry] (EntryWriter-9, WriteSkewTest) ISPN000005: Detected write skew on key [k]. Another process has changed the entry since we last read it! Unable to copy entry for update. 2013-02-25 14:26:25,073 ERROR [WriteSkewTest] (EntryWriter-9, WriteSkewTest) Unexpected org.infinispan.transaction.WriteSkewException: Detected write skew. at org.infinispan.container.entries.RepeatableReadEntry.performLocalWriteSkewCheck(RepeatableReadEntry.java:68) at org.infinispan.container.entries.RepeatableReadEntry.copyForUpdate(RepeatableReadEntry.java:52) at org.infinispan.container.EntryFactoryImpl.wrapEntryForPut(EntryFactoryImpl.java:170) at org.infinispan.interceptors.EntryWrappingInterceptor.visitPutKeyValueCommand(EntryWrappingInterceptor.java:164) at org.infinispan.commands.write.PutKeyValueCommand.acceptVisitor(PutKeyValueCommand.java:77) at org.infinispan.interceptors.base.CommandInterceptor.invokeNextInterceptor(CommandInterceptor.java:118) at org.infinispan.interceptors.locking.OptimisticLockingInterceptor.visitPutKeyValueCommand(OptimisticLockingInterceptor.java:142) at org.infinispan.commands.write.PutKeyValueCommand.acceptVisitor(PutKeyValueCommand.java:77) at org.infinispan.interceptors.base.CommandInterceptor.invokeNextInterceptor(CommandInterceptor.java:118) at org.infinispan.interceptors.base.CommandInterceptor.handleDefault(CommandInterceptor.java:132) at org.infinispan.commands.AbstractVisitor.visitPutKeyValueCommand(AbstractVisitor.java:62) at org.infinispan.commands.write.PutKeyValueCommand.acceptVisitor(PutKeyValueCommand.java:77) at org.infinispan.interceptors.base.CommandInterceptor.invokeNextInterceptor(CommandInterceptor.java:118) at org.infinispan.interceptors.TxInterceptor.enlistWriteAndInvokeNext(TxInterceptor.java:251) at org.infinispan.interceptors.TxInterceptor.visitPutKeyValueCommand(TxInterceptor.java:191) at org.infinispan.commands.write.PutKeyValueCommand.acceptVisitor(PutKeyValueCommand.java:77) at org.infinispan.interceptors.base.CommandInterceptor.invokeNextInterceptor(CommandInterceptor.java:118) at org.infinispan.interceptors.InvocationContextInterceptor.handleAll(InvocationContextInterceptor.java:128) at org.infinispan.interceptors.InvocationContextInterceptor.handleDefault(InvocationContextInterceptor.java:92) at org.infinispan.commands.AbstractVisitor.visitPutKeyValueCommand(AbstractVisitor.java:62) at org.infinispan.commands.write.PutKeyValueCommand.acceptVisitor(PutKeyValueCommand.java:77) at org.infinispan.interceptors.InterceptorChain.invoke(InterceptorChain.java:343) at org.infinispan.CacheImpl.executeCommandAndCommitIfNeeded(CacheImpl.java:1169) at org.infinispan.CacheImpl.putInternal(CacheImpl.java:766) at org.infinispan.CacheImpl.put(CacheImpl.java:760) at org.infinispan.CacheImpl.put(CacheImpl.java:754) at org.infinispan.CacheSupport.put(CacheSupport.java:53) at org.infinispan.api.mvcc.repeatable_read.WriteSkewTest$EntryWriter.call(WriteSkewTest.java:433) at org.infinispan.api.mvcc.repeatable_read.WriteSkewTest$EntryWriter.call(WriteSkewTest.java:418) at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334) at java.util.concurrent.FutureTask.run(FutureTask.java:166) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603) at java.lang.Thread.run(Thread.java:722)
Adrian Nistor <anistor> made a comment on jira ISPN-2858 So which test method failed? Could you also attach the trace log please?
Created attachment 702832 [details] Added console output
Adrian Nistor <anistor> made a comment on jira ISPN-2858 From the attached output: {noformat} 2013-02-25 12:55:30,993 ERROR [UnitTestTestNGListener] (testng-WriteSkewTest) Test testWriteSkewWithOnlyPut(org.infinispan.api.mvcc.repeatable_read.WriteSkewTest) failed. {noformat} This is a duplicate of ISPN-2771.
Adrian Nistor <anistor> updated the status of jira ISPN-2858 to Resolved
Pedro Ruivo <pedroruivo2> updated the status of jira ISPN-2771 to Coding In Progress
Pedro Ruivo <pedroruivo2> updated the status of jira ISPN-2771 to Reopened
Pedro Ruivo <pedroruivo2> made a comment on jira ISPN-2771 This test is still failing because it performs the local write skew check during the copyForUpdate(). Solutions: easy: don't perform the local write skew check in the copyForUpdate because it will be performed in the prepare phase anyway. complex: the correct behavior here is to perform the local write skew check when * the key has previous read || the command does not ignore the return value try to do a test case for this race condition...
Dan Berindei <dberinde> made a comment on jira ISPN-2771 [~pruivo] why is the second approach more correct than the first? Shouldn't one write skew check be enough?
Pedro Ruivo <pedroruivo2> made a comment on jira ISPN-2771 [~dan.berindei] don't miss understand me. I think the most correct is only to perform the write skew check at prepare time (as it is done in clustered mode).