[
https://issues.apache.org/jira/browse/GEODE-110?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14653148#comment-14653148
]
ASF subversion and git services commented on GEODE-110:
-------------------------------------------------------
Commit bc4508c13bdf23c5c664ecc08d03c706d640403f in incubator-geode's branch
refs/heads/develop from shirishd
[ https://git-wip-us.apache.org/repos/asf?p=incubator-geode.git;h=bc4508c ]
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
> Assignee: vivek bhaskar
>
> {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)