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)