You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@geode.apache.org by "xiaojian zhou (JIRA)" <ji...@apache.org> on 2019/03/13 17:48:00 UTC
[jira] [Issue Comment Deleted] (GEODE-6518) if the region's data
policy is empty, create jdbc-mapping will failed with NPE
[ https://issues.apache.org/jira/browse/GEODE-6518?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
xiaojian zhou updated GEODE-6518:
---------------------------------
Comment: was deleted
(was: {noformat}
In my test, it failed with following exception:
distcache.DistCacheException: remote server on rs-gesterjdbc-client-1(edgegemfire1_host1_7376:7376:loner):55429:9830d075:edgegemfire1_host1_7376: : While performing a remote put
at distcache.gemfire.GemFireCacheTestImpl.create(GemFireCacheTestImpl.java:259)
at cacheperf.CachePerfClient.create(CachePerfClient.java:1088)
at cacheperf.CachePerfClient.createData(CachePerfClient.java:1075)
at cacheperf.CachePerfClient.createDataTask(CachePerfClient.java:1064)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at hydra.MethExecutor.execute(MethExecutor.java:173)
at hydra.MethExecutor.execute(MethExecutor.java:141)
at hydra.TestTask.execute(TestTask.java:197)
at hydra.RemoteTestModule$1.run(RemoteTestModule.java:213)
Caused by: org.apache.geode.cache.client.ServerOperationException: remote server on rs-gesterjdbc-client-1(edgegemfire1_host1_7376:7376:loner):55429:9830d075:edgegemfire1_host1_7376: : While performing a remote put
at org.apache.geode.cache.client.internal.PutOp$PutOpImpl.processAck(PutOp.java:389)
at org.apache.geode.cache.client.internal.PutOp$PutOpImpl.processResponse(PutOp.java:313)
at org.apache.geode.cache.client.internal.PutOp$PutOpImpl.attemptReadResponse(PutOp.java:454)
at org.apache.geode.cache.client.internal.AbstractOp.attempt(AbstractOp.java:387)
at org.apache.geode.cache.client.internal.ConnectionImpl.execute(ConnectionImpl.java:289)
at org.apache.geode.cache.client.internal.pooling.PooledConnection.execute(PooledConnection.java:338)
at org.apache.geode.cache.client.internal.OpExecutorImpl.executeWithPossibleReAuthentication(OpExecutorImpl.java:912)
at org.apache.geode.cache.client.internal.OpExecutorImpl.execute(OpExecutorImpl.java:174)
at org.apache.geode.cache.client.internal.OpExecutorImpl.execute(OpExecutorImpl.java:130)
at org.apache.geode.cache.client.internal.PoolImpl.execute(PoolImpl.java:792)
at org.apache.geode.cache.client.internal.PutOp.execute(PutOp.java:90)
at org.apache.geode.cache.client.internal.ServerRegionProxy.put(ServerRegionProxy.java:155)
at org.apache.geode.internal.cache.LocalRegion.serverPut(LocalRegion.java:3038)
at org.apache.geode.internal.cache.LocalRegion.cacheWriteBeforePut(LocalRegion.java:3187)
at org.apache.geode.internal.cache.ProxyRegionMap.basicPut(ProxyRegionMap.java:238)
at org.apache.geode.internal.cache.LocalRegion.virtualPut(LocalRegion.java:5708)
at org.apache.geode.internal.cache.LocalRegionDataView.putEntry(LocalRegionDataView.java:162)
at org.apache.geode.internal.cache.LocalRegion.basicPut(LocalRegion.java:5134)
at org.apache.geode.internal.cache.LocalRegion.validatedCreate(LocalRegion.java:1103)
at org.apache.geode.internal.cache.LocalRegion.create(LocalRegion.java:1085)
at org.apache.geode.internal.cache.AbstractRegion.create(AbstractRegion.java:405)
at distcache.gemfire.GemFireCacheTestImpl.create(GemFireCacheTestImpl.java:252)
... 11 more
Caused by: org.apache.geode.internal.cache.wan.GatewaySenderConfigurationException: Region DefaultRegion has [JDBC#DefaultRegion] AsyncEvent queue IDs. Another cache has same region with [] AsyncEvent queue IDs. For region across all members, AsyncEvent queue IDs should be same.
at Remote Member 'rs-gesterjdbc-client-1(bridgegemfire1_host1_7371:7371)<ec><v1>:41001' in org.apache.geode.internal.cache.PartitionedRegion.checkSameSenderIdsAvailableOnAllNodes(PartitionedRegion.java:1291)
at Remote Member 'rs-gesterjdbc-client-1(bridgegemfire1_host1_7371:7371)<ec><v1>:41001' in org.apache.geode.internal.cache.LocalRegion.notifyGatewaySender(LocalRegion.java:6228)
at Remote Member 'rs-gesterjdbc-client-1(bridgegemfire1_host1_7371:7371)<ec><v1>:41001' in org.apache.geode.internal.cache.BucketRegion.notifyGatewaySender(BucketRegion.java:723)
at Remote Member 'rs-gesterjdbc-client-1(bridgegemfire1_host1_7371:7371)<ec><v1>:41001' in org.apache.geode.internal.cache.LocalRegion.basicPutPart2(LocalRegion.java:5874)
at Remote Member 'rs-gesterjdbc-client-1(bridgegemfire1_host1_7371:7371)<ec><v1>:41001' in org.apache.geode.internal.cache.BucketRegion.basicPutPart2(BucketRegion.java:707)
at Remote Member 'rs-gesterjdbc-client-1(bridgegemfire1_host1_7371:7371)<ec><v1>:41001' in org.apache.geode.internal.cache.map.RegionMapPut.doBeforeCompletionActions(RegionMapPut.java:268)
at Remote Member 'rs-gesterjdbc-client-1(bridgegemfire1_host1_7371:7371)<ec><v1>:41001' in org.apache.geode.internal.cache.map.AbstractRegionMapPut.doPutAndDeliverEvent(AbstractRegionMapPut.java:301)
at Remote Member 'rs-gesterjdbc-client-1(bridgegemfire1_host1_7371:7371)<ec><v1>:41001' in org.apache.geode.internal.cache.map.AbstractRegionMapPut.runWithIndexUpdatingInProgress(AbstractRegionMapPut.java:308)
at Remote Member 'rs-gesterjdbc-client-1(bridgegemfire1_host1_7371:7371)<ec><v1>:41001' in org.apache.geode.internal.cache.map.AbstractRegionMapPut.doPutIfPreconditionsSatisified(AbstractRegionMapPut.java:296)
at Remote Member 'rs-gesterjdbc-client-1(bridgegemfire1_host1_7371:7371)<ec><v1>:41001' in org.apache.geode.internal.cache.map.AbstractRegionMapPut.doPutOnSynchronizedRegionEntry(AbstractRegionMapPut.java:282)
at Remote Member 'rs-gesterjdbc-client-1(bridgegemfire1_host1_7371:7371)<ec><v1>:41001' in org.apache.geode.internal.cache.map.AbstractRegionMapPut.doPutOnRegionEntryInMap(AbstractRegionMapPut.java:273)
at Remote Member 'rs-gesterjdbc-client-1(bridgegemfire1_host1_7371:7371)<ec><v1>:41001' in org.apache.geode.internal.cache.map.AbstractRegionMapPut.addRegionEntryToMapAndDoPut(AbstractRegionMapPut.java:251)
at Remote Member 'rs-gesterjdbc-client-1(bridgegemfire1_host1_7371:7371)<ec><v1>:41001' in org.apache.geode.internal.cache.map.AbstractRegionMapPut.doPutRetryingIfNeeded(AbstractRegionMapPut.java:216)
at Remote Member 'rs-gesterjdbc-client-1(bridgegemfire1_host1_7371:7371)<ec><v1>:41001' in org.apache.geode.internal.cache.map.AbstractRegionMapPut.doWithIndexInUpdateMode(AbstractRegionMapPut.java:198)
at Remote Member 'rs-gesterjdbc-client-1(bridgegemfire1_host1_7371:7371)<ec><v1>:41001' in org.apache.geode.internal.cache.map.AbstractRegionMapPut.doPut(AbstractRegionMapPut.java:180)
at Remote Member 'rs-gesterjdbc-client-1(bridgegemfire1_host1_7371:7371)<ec><v1>:41001' in org.apache.geode.internal.cache.map.AbstractRegionMapPut.runWhileLockedForCacheModification(AbstractRegionMapPut.java:119)
at Remote Member 'rs-gesterjdbc-client-1(bridgegemfire1_host1_7371:7371)<ec><v1>:41001' in org.apache.geode.internal.cache.map.RegionMapPut.runWhileLockedForCacheModification(RegionMapPut.java:150)
at Remote Member 'rs-gesterjdbc-client-1(bridgegemfire1_host1_7371:7371)<ec><v1>:41001' in org.apache.geode.internal.cache.map.AbstractRegionMapPut.put(AbstractRegionMapPut.java:169)
at Remote Member 'rs-gesterjdbc-client-1(bridgegemfire1_host1_7371:7371)<ec><v1>:41001' in org.apache.geode.internal.cache.AbstractRegionMap.basicPut(AbstractRegionMap.java:2044)
at Remote Member 'rs-gesterjdbc-client-1(bridgegemfire1_host1_7371:7371)<ec><v1>:41001' in org.apache.geode.internal.cache.BucketRegion.virtualPut(BucketRegion.java:532)
at Remote Member 'rs-gesterjdbc-client-1(bridgegemfire1_host1_7371:7371)<ec><v1>:41001' in org.apache.geode.internal.cache.PartitionedRegionDataStore.putLocally(PartitionedRegionDataStore.java:1204)
at Remote Member 'rs-gesterjdbc-client-1(bridgegemfire1_host1_7371:7371)<ec><v1>:41001' in org.apache.geode.internal.cache.PartitionedRegionDataStore.putLocally(PartitionedRegionDataStore.java:1187)
at Remote Member 'rs-gesterjdbc-client-1(bridgegemfire1_host1_7371:7371)<ec><v1>:41001' in org.apache.geode.internal.cache.PartitionedRegionDataView.putEntryOnRemote(PartitionedRegionDataView.java:99)
at Remote Member 'rs-gesterjdbc-client-1(bridgegemfire1_host1_7371:7371)<ec><v1>:41001' in org.apache.geode.internal.cache.partitioned.PutMessage.operateOnPartitionedRegion(PutMessage.java:707)
at Remote Member 'rs-gesterjdbc-client-1(bridgegemfire1_host1_7371:7371)<ec><v1>:41001' in org.apache.geode.internal.cache.partitioned.PartitionMessage.process(PartitionMessage.java:330)
at Remote Member 'rs-gesterjdbc-client-1(bridgegemfire1_host1_7371:7371)<ec><v1>:41001' in org.apache.geode.distributed.internal.DistributionMessage.scheduleAction(DistributionMessage.java:369)
at Remote Member 'rs-gesterjdbc-client-1(bridgegemfire1_host1_7371:7371)<ec><v1>:41001' in org.apache.geode.distributed.internal.DistributionMessage.schedule(DistributionMessage.java:426)
at Remote Member 'rs-gesterjdbc-client-1(bridgegemfire1_host1_7371:7371)<ec><v1>:41001' in org.apache.geode.distributed.internal.ClusterDistributionManager.scheduleIncomingMessage(ClusterDistributionManager.java:2891)
at Remote Member 'rs-gesterjdbc-client-1(bridgegemfire1_host1_7371:7371)<ec><v1>:41001' in org.apache.geode.distributed.internal.ClusterDistributionManager.handleIncomingDMsg(ClusterDistributionManager.java:2571)
at Remote Member 'rs-gesterjdbc-client-1(bridgegemfire1_host1_7371:7371)<ec><v1>:41001' in org.apache.geode.distributed.internal.ClusterDistributionManager.access$1300(ClusterDistributionManager.java:110)
at Remote Member 'rs-gesterjdbc-client-1(bridgegemfire1_host1_7371:7371)<ec><v1>:41001' in org.apache.geode.distributed.internal.ClusterDistributionManager$DMListener.messageReceived(ClusterDistributionManager.java:3429)
at Remote Member 'rs-gesterjdbc-client-1(bridgegemfire1_host1_7371:7371)<ec><v1>:41001' in org.apache.geode.distributed.internal.membership.gms.mgr.GMSMembershipManager.dispatchMessage(GMSMembershipManager.java:1108)
at Remote Member 'rs-gesterjdbc-client-1(bridgegemfire1_host1_7371:7371)<ec><v1>:41001' in org.apache.geode.distributed.internal.membership.gms.mgr.GMSMembershipManager.handleOrDeferMessage(GMSMembershipManager.java:1027)
at Remote Member 'rs-gesterjdbc-client-1(bridgegemfire1_host1_7371:7371)<ec><v1>:41001' in org.apache.geode.distributed.internal.membership.gms.mgr.GMSMembershipManager$MyDCReceiver.messageReceived(GMSMembershipManager.java:407)
at Remote Member 'rs-gesterjdbc-client-1(bridgegemfire1_host1_7371:7371)<ec><v1>:41001' in org.apache.geode.distributed.internal.direct.DirectChannel.receive(DirectChannel.java:701)
at Remote Member 'rs-gesterjdbc-client-1(bridgegemfire1_host1_7371:7371)<ec><v1>:41001' in org.apache.geode.internal.tcp.TCPConduit.messageReceived(TCPConduit.java:702)
at Remote Member 'rs-gesterjdbc-client-1(bridgegemfire1_host1_7371:7371)<ec><v1>:41001' in org.apache.geode.internal.tcp.Connection.dispatchMessage(Connection.java:3427)
at Remote Member 'rs-gesterjdbc-client-1(bridgegemfire1_host1_7371:7371)<ec><v1>:41001' in org.apache.geode.internal.tcp.Connection.readMessage(Connection.java:3164)
at Remote Member 'rs-gesterjdbc-client-1(bridgegemfire1_host1_7371:7371)<ec><v1>:41001' in org.apache.geode.internal.tcp.Connection.processInputBuffer(Connection.java:2959)
at Remote Member 'rs-gesterjdbc-client-1(bridgegemfire1_host1_7371:7371)<ec><v1>:41001' in org.apache.geode.internal.tcp.Connection.readMessages(Connection.java:1743)
at Remote Member 'rs-gesterjdbc-client-1(bridgegemfire1_host1_7371:7371)<ec><v1>:41001' in org.apache.geode.internal.tcp.Connection.run(Connection.java:1579)
at Remote Member 'rs-gesterjdbc-client-1(bridgegemfire1_host1_7371:7371)<ec><v1>:41001' in java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at Remote Member 'rs-gesterjdbc-client-1(bridgegemfire1_host1_7371:7371)<ec><v1>:41001' in java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at Remote Member 'rs-gesterjdbc-client-1(bridgegemfire1_host1_7371:7371)<ec><v1>:41001' in java.lang.Thread.run(Thread.java:748)
at org.apache.geode.distributed.internal.ReplyException.handleCause(ReplyException.java:86)
at org.apache.geode.internal.cache.partitioned.PartitionMessage$PartitionResponse.waitForCacheException(PartitionMessage.java:846)
at org.apache.geode.internal.cache.partitioned.PutMessage$PutResponse.waitForResult(PutMessage.java:1031)
at org.apache.geode.internal.cache.PartitionedRegion.putRemotely(PartitionedRegion.java:3261)
at org.apache.geode.internal.cache.PartitionedRegion.putInBucket(PartitionedRegion.java:2895)
at org.apache.geode.internal.cache.PartitionedRegion.virtualPut(PartitionedRegion.java:2090)
at org.apache.geode.internal.cache.LocalRegionDataView.putEntry(LocalRegionDataView.java:162)
at org.apache.geode.internal.cache.LocalRegion.basicUpdate(LocalRegion.java:5688)
at org.apache.geode.internal.cache.LocalRegion.basicBridgePut(LocalRegion.java:5325)
at org.apache.geode.internal.cache.tier.sockets.command.Put65.cmdExecute(Put65.java:393)
at org.apache.geode.internal.cache.tier.sockets.BaseCommand.execute(BaseCommand.java:183)
at org.apache.geode.internal.cache.tier.sockets.ServerConnection.doNormalMessage(ServerConnection.java:851)
at org.apache.geode.internal.cache.tier.sockets.OriginalServerConnection.doOneMessage(OriginalServerConnection.java:75)
at org.apache.geode.internal.cache.tier.sockets.ServerConnection.run(ServerConnection.java:1227)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at org.apache.geode.internal.cache.tier.sockets.AcceptorImpl.lambda$initializeServerConnectionThreadPool$3(AcceptorImpl.java:616)
at org.apache.geode.internal.logging.LoggingThreadFactory.lambda$newThread$0(LoggingThreadFactory.java:121)
at java.lang.Thread.run(Thread.java:748)
{noformat})
> if the region's data policy is empty, create jdbc-mapping will failed with NPE
> ------------------------------------------------------------------------------
>
> Key: GEODE-6518
> URL: https://issues.apache.org/jira/browse/GEODE-6518
> Project: Geode
> Issue Type: Bug
> Components: jdbc
> Reporter: xiaojian zhou
> Priority: Major
>
> {noformat}
> We never had a test case to create a region on one member with data, and on another member as accessor (i.e. data policy is empty). Then create a jdbc-mapping. This is a valid use case.
> Apply the following diff, it will modify the test case to test above scenario.
> diff --git a/geode-connectors/src/distributedTest/java/org/apache/geode/connectors/jdbc/internal/cli/CreateMappingCommandDUnitTest.java b/geode-connectors/src/distributedTest/java/org/apache/geode/connectors/jdbc/internal/cli/CreateMappingCommandDUnitTest.java
> index 06043f1657..ccb79b56c6 100644
> --- a/geode-connectors/src/distributedTest/java/org/apache/geode/connectors/jdbc/internal/cli/CreateMappingCommandDUnitTest.java
> +++ b/geode-connectors/src/distributedTest/java/org/apache/geode/connectors/jdbc/internal/cli/CreateMappingCommandDUnitTest.java
> @@ -119,7 +119,7 @@ public class CreateMappingCommandDUnitTest {
> server1 = startupRule.startServerVM(1, locator.getPort());
> server2 = startupRule.startServerVM(2, TEST_GROUP1, locator.getPort());
> server3 = startupRule.startServerVM(3, TEST_GROUP2, locator.getPort());
> - server4 = startupRule.startServerVM(4, TEST_GROUP1 + "," + TEST_GROUP2, locator.getPort());
> + server4 = startupRule.startServerVM(4, "Gester", locator.getPort());
> gfsh.connectAndVerify(locator);
> setupDatabase();
> @@ -196,10 +196,10 @@ public class CreateMappingCommandDUnitTest {
> .statusIsSuccess();
> }
> - private void setupGroupPartition(String regionName, String groupNames) {
> + private void setupGroupPartition(String regionName, String groupNames, boolean isAccessor) {
> gfsh.executeAndAssertThat(
> - "create region --name=" + regionName + " --type=PARTITION --groups=" + groupNames)
> - .statusIsSuccess();
> + "create region --name=" + regionName + (isAccessor ? " --type=PARTITION_PROXY"
> + : " --type=PARTITION") + " --groups=" + groupNames).statusIsSuccess();
> }
> private void setupAsyncEventQueue(String regionName) {
> @@ -346,7 +346,7 @@ public class CreateMappingCommandDUnitTest {
> @Test
> public void createMappingPartitionedUpdatesServiceAndClusterConfigForServerGroup() {
> String regionName = GROUP2_REGION;
> - setupGroupPartition(regionName, TEST_GROUP2);
> + setupGroupPartition(regionName, TEST_GROUP2, false);
> CommandStringBuilder csb = new CommandStringBuilder(CREATE_MAPPING);
> csb.addOption(REGION_NAME, regionName);
> csb.addOption(DATA_SOURCE_NAME, "connection");
> @@ -424,7 +424,8 @@ public class CreateMappingCommandDUnitTest {
> @Test
> public void createMappingPartitionedUpdatesServiceAndClusterConfigForMultiServerGroup() {
> String regionName = "/" + GROUP1_GROUP2_REGION;
> - setupGroupPartition(regionName, TEST_GROUP1 + "," + TEST_GROUP2);
> + setupGroupPartition(regionName, TEST_GROUP1, false);
> + setupGroupPartition(regionName, TEST_GROUP2, true);
> CommandStringBuilder csb = new CommandStringBuilder(CREATE_MAPPING);
> csb.addOption(REGION_NAME, regionName);
> csb.addOption(DATA_SOURCE_NAME, "connection");
> {noformat}
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)