You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@geode.apache.org by "ASF subversion and git services (JIRA)" <ji...@apache.org> on 2016/10/04 22:37:20 UTC
[jira] [Commented] (GEODE-1588) Starting and stopping wan sender
can cause OOME
[ https://issues.apache.org/jira/browse/GEODE-1588?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15546884#comment-15546884 ]
ASF subversion and git services commented on GEODE-1588:
--------------------------------------------------------
Commit 0b61ae69d8486c137a30160c22d8985c37f76324 in incubator-geode's branch refs/heads/develop from [~nnag]
[ https://git-wip-us.apache.org/repos/asf?p=incubator-geode.git;h=0b61ae6 ]
GEODE-1364: Resolved as a part of GEODE-1588
> Starting and stopping wan sender can cause OOME
> ------------------------------------------------
>
> Key: GEODE-1588
> URL: https://issues.apache.org/jira/browse/GEODE-1588
> Project: Geode
> Issue Type: Bug
> Components: wan
> Affects Versions: 1.0.0-incubating.M3
> Reporter: Jason Huynh
> Assignee: Jason Huynh
> Fix For: 1.0.0-incubating.M3
>
>
> The following test will more than likely cause an OOME due to a timing issue in stopping the gateway sender.
> {noformat}
> public void closingSenderWhileBatchOperationsAreProcessingShouldNotHaveMultipleThreadsReadFromSameStream() throws Exception {
> Integer lnPort = (Integer)vm0.invoke(() -> WANTestBase.createFirstLocatorWithDSId( 1 ));
> Integer nyPort = (Integer)vm1.invoke(() -> WANTestBase.createFirstRemoteLocator( 2, lnPort ));
> createCacheInVMs(nyPort, vm2);
> createReceiverInVMs(vm2);
> createCacheInVMs(lnPort, vm4);
> //keep the maxQueueMemory low enough to trigger eviction
> vm4.invoke(() -> WANTestBase.createConcurrentSender( "ln", 2,
> false, 100, 101, false, false, null, true, 3, OrderPolicy.KEY ));
> vm2.invoke(() -> WANTestBase.createPartitionedRegion(
> getTestMethodName() + "_RR", null, 0, 10, isOffHeap() ));
> // vm2.invoke(() -> WANTestBase.createPartitionedRegion(
> // getTestMethodName() + "_RR", null, 0, 10, isOffHeap() ));
> startSenderInVMs("ln", vm4);
> vm2.invoke(() -> addListenerToSleepAfterCreateEvent(10, getTestMethodName() + "_RR"));
> // vm4.invoke(() -> WANTestBase.createPartitionedRegion(
> // getTestMethodName() + "_RR", null, 0, 10, isOffHeap() ));
> vm4.invoke(() -> WANTestBase.createReplicatedRegion(
> getTestMethodName() + "_RR", "ln", isOffHeap() ));
> vm4.invoke(() -> addListenerToSleepAfterCreateEvent(1, getTestMethodName() + "_RR"));
> vm4.invokeAsync(() -> WANTestBase.doPutsAfter300(
> getTestMethodName() + "_RR", 1000000 ));
> Thread.sleep(5000);
> stopSenderInVMsAsync("ln", vm4);
> Thread.sleep(10000);
> for (int i = 0; i < 100; i++) {
> startSenderInVMs("ln", vm4);
> Thread.sleep(10000);
> stopSenderInVMs("ln", vm4);
> Thread.sleep(5000);
> }
> //
> // stopSenderInVMsAsync("ln", vm4);
> // Thread.sleep(1000);
> // startSenderInVMs("ln", vm4);
> // Thread.sleep(1000);
> vm2.invoke(() -> WANTestBase.validateRegionSize(
> getTestMethodName() + "_RR", 10000, 240000));
> }
> {noformat}
> Due to the way this test is written, I wouldn't necessarily want it checked in as it is very time based and possibly flakey. It will run into the OOME eventually but it's all based on timing.
> The issue is that the ack reader thread is reading off the same socket as the gateway sender closing thread, which causes the stream to be corrupted.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)