[ 
https://issues.apache.org/jira/browse/GEODE-110?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14654393#comment-14654393
 ] 

ASF subversion and git services commented on GEODE-110:
-------------------------------------------------------

Commit be622538eb1021f0bb6dba893f268439bb4ffcf2 in incubator-geode's branch 
refs/heads/feature/GEODE-181 from shirishd
[ https://git-wip-us.apache.org/repos/asf?p=incubator-geode.git;h=be62253 ]

Fix for GEODE-110

In the context of distributed transactions, 
DistributedPutAllOperation.createPRMessages calls 
putAllData[i].setFakeEventID() to set event ID for each entry in put all op 
(called from 
DistTXStateProxyImplOnCoordinator.postPutAll->DistPeerTXStateStub.postPutAll->TXStateStub.postPutAll
 -> PartitionedTXRegionStub.postPutAll). However when the data node itself is a 
transaction coordinator, createPRMessages is not called and the data is locally 
put by calling 
DistTXStateProxyImplOnCoordinator.postPutAll->DistTXStateOnCoordinator.postPutAll().
 This call sequence does not call putAllData[i].setFakeEventID(). At the commit 
time when the coordinator sends TX events to secondaries, some of the events 
from different buckets had same event ID. This caused TXState.txPutEntry() to 
skip those events (assuming that the entry has been processed already) and 
therefore the test failed. The fix is to call 
putallOp.putAllData[i].setFakeEventID() in 
DistTXStateProxyImplOnCoordinator.postPutAll so that eventID is set for all 
entries. Similar fix is done for remove all.

Also enabled the assertion that was surrounded by logger.isDebugEnabled() call 
due to this issue


> DistributedTransactionDUnitTest.testPutAllWithTransactions failed with 
> CommitIncompleteException
> ------------------------------------------------------------------------------------------------
>
>                 Key: GEODE-110
>                 URL: https://issues.apache.org/jira/browse/GEODE-110
>             Project: Geode
>          Issue Type: Bug
>            Reporter: Kirk Lund
>
> {code}
> com.gemstone.gemfire.disttx.DistributedTransactionDUnitTest > 
> testPutAllWithTransactions FAILED
>     dunit.RMIException: While invoking 
> com.gemstone.gemfire.disttx.DistributedTransactionDUnitTest$33.call in VM 0 
> running on Host pietas.apache.org with 4 VMs
>         at dunit.VM.invoke(VM.java:359)
>         at dunit.VM.invoke(VM.java:303)
>         at dunit.VM.invoke(VM.java:271)
>         at 
> com.gemstone.gemfire.disttx.DistributedTransactionDUnitTest.execute(DistributedTransactionDUnitTest.java:118)
>         at 
> com.gemstone.gemfire.disttx.DistributedTransactionDUnitTest.testPutAllWithTransactions(DistributedTransactionDUnitTest.java:983)
>         Caused by:
>         com.gemstone.gemfire.cache.CommitIncompleteException: Incomplete 
> commit of transaction TXId: pietas(30637)<v362>:53897:3.  Caused by the 
> following exceptions:  From member: pietas(30663)<v366>:34083 
> com.gemstone.gemfire.distributed.internal.ReplyException: From 
> pietas(30663)<v366>:34083: 
> com.gemstone.gemfire.cache.UnsupportedOperationInTransactionException: 
> Expected entry size of 1 for region /__PR/_B__customerPRRegion_3 during a 
> distributed transaction but got 2
>               at 
> com.gemstone.gemfire.internal.cache.TXMessage.process(TXMessage.java:114)
>               at 
> com.gemstone.gemfire.distributed.internal.DistributionMessage.scheduleAction(DistributionMessage.java:371)
>               at 
> com.gemstone.gemfire.distributed.internal.DistributionMessage.schedule(DistributionMessage.java:434)
>               at 
> com.gemstone.gemfire.distributed.internal.DistributionManager.scheduleIncomingMessage(DistributionManager.java:3862)
>               at 
> com.gemstone.gemfire.distributed.internal.DistributionManager.handleIncomingDMsg(DistributionManager.java:3486)
>               at 
> com.gemstone.gemfire.distributed.internal.DistributionManager$MyListener.messageReceived(DistributionManager.java:4683)
>               at 
> com.gemstone.gemfire.distributed.internal.membership.jgroup.JGroupMembershipManager.processMessage(JGroupMembershipManager.java:2160)
>               at 
> com.gemstone.gemfire.distributed.internal.membership.jgroup.JGroupMembershipManager.handleOrDeferMessage(JGroupMembershipManager.java:2069)
>               at 
> com.gemstone.gemfire.distributed.internal.membership.jgroup.JGroupMembershipManager$MyDCReceiver.messageReceived(JGroupMembershipManager.java:668)
>               at 
> com.gemstone.gemfire.distributed.internal.direct.DirectChannel.receive(DirectChannel.java:804)
>               at 
> com.gemstone.gemfire.internal.tcp.TCPConduit.messageReceived(TCPConduit.java:835)
>               at 
> com.gemstone.gemfire.internal.tcp.Connection.dispatchMessage(Connection.java:3932)
>               at 
> com.gemstone.gemfire.internal.tcp.Connection.processNIOBuffer(Connection.java:3515)
>               at 
> com.gemstone.gemfire.internal.tcp.Connection.runNioReader(Connection.java:1827)
>               at 
> com.gemstone.gemfire.internal.tcp.Connection.run(Connection.java:1702)
>               at java.lang.Thread.run(Thread.java:745)
> {code}



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to