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

Jianxia Chen commented on GEODE-10308:
--------------------------------------

Looking the standard error and the test code, it is a test issue.

The root cause is at end of the test (tearDown), the client cache is closed too 
early before stopping the Tomcat container. In 
Tomcat8SessionsClientServerDUnitTest:
{code:java}
  @After
  public void tearDown() {
    clientCache.close();
    clientCache = null;
    port = -1;    
    server.stopContainer();
    server = null;
    servlet = null;    
    sessionManager = null;
    region = null;  
  } {code}
In the standard error:
{code:java}
SEVERE: A child container failed during stop
java.util.concurrent.ExecutionException: 
org.apache.catalina.LifecycleException: A child container failed during stop
        at java.base/java.util.concurrent.FutureTask.report(FutureTask.java:122)
        at java.base/java.util.concurrent.FutureTask.get(FutureTask.java:191)
        at 
org.apache.catalina.core.ContainerBase.stopInternal(ContainerBase.java:990)
        at org.apache.catalina.util.LifecycleBase.stop(LifecycleBase.java:257)
        at 
org.apache.catalina.core.StandardService.stopInternal(StandardService.java:486)
        at org.apache.catalina.util.LifecycleBase.stop(LifecycleBase.java:257)
        at 
org.apache.catalina.core.StandardServer.stopInternal(StandardServer.java:787)
        at org.apache.catalina.util.LifecycleBase.stop(LifecycleBase.java:257)
        at org.apache.catalina.startup.Tomcat.stop(Tomcat.java:450)
        at 
org.apache.geode.modules.session.EmbeddedTomcat8.stopContainer(EmbeddedTomcat8.java:95)
        at 
org.apache.geode.modules.session.Tomcat8SessionsClientServerDUnitTest.tearDown(Tomcat8SessionsClientServerDUnitTest.java:111)
Caused by: org.apache.catalina.LifecycleException: A child container failed 
during stop
        at 
org.apache.catalina.core.ContainerBase.stopInternal(ContainerBase.java:997)
        at org.apache.catalina.util.LifecycleBase.stop(LifecycleBase.java:257)
        at 
org.apache.catalina.core.ContainerBase$StopChild.call(ContainerBase.java:1428)
        at 
org.apache.catalina.core.ContainerBase$StopChild.call(ContainerBase.java:1417)
        at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
        at 
java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
        at 
java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
        ... 1 more {code}
Because of CacheClosedException :
{code:java}
java.util.concurrent.ExecutionException: 
org.apache.catalina.LifecycleException: Failed to stop component 
[Tomcat8DeltaSessionManager[container=StandardEngine[localEngine].StandardHost[localhost].StandardContext[];
 regionName=gemfire_modules_sessions; regionAttributesId=PARTITION_REDUNDANT]]
        at java.base/java.util.concurrent.FutureTask.report(FutureTask.java:122)
        at java.base/java.util.concurrent.FutureTask.get(FutureTask.java:191)
        at 
org.apache.catalina.core.ContainerBase.stopInternal(ContainerBase.java:990)
        at org.apache.catalina.util.LifecycleBase.stop(LifecycleBase.java:257)
        at 
org.apache.catalina.core.ContainerBase$StopChild.call(ContainerBase.java:1428)
        at 
org.apache.catalina.core.ContainerBase$StopChild.call(ContainerBase.java:1417)
        at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
        at 
java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
        at 
java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
        at java.base/java.lang.Thread.run(Thread.java:829)
Caused by: org.apache.catalina.LifecycleException: Failed to stop component 
[Tomcat8DeltaSessionManager[container=StandardEngine[localEngine].StandardHost[localhost].StandardContext[];
 regionName=gemfire_modules_sessions; regionAttributesId=PARTITION_REDUNDANT]]
        at 
org.apache.catalina.util.LifecycleBase.handleSubClassException(LifecycleBase.java:440)
        at org.apache.catalina.util.LifecycleBase.stop(LifecycleBase.java:267)
        at 
org.apache.catalina.core.StandardContext.stopInternal(StandardContext.java:5398)
        ... 7 more
Caused by: org.apache.geode.cache.CacheClosedException: The cache is closed.
        at 
org.apache.geode.internal.cache.GemFireCacheImpl$Stopper.generateCancelledException(GemFireCacheImpl.java:5207)
        at 
org.apache.geode.CancelCriterion.checkCancelInProgress(CancelCriterion.java:83)
        at 
org.apache.geode.internal.cache.LocalRegion.checkRegionDestroyed(LocalRegion.java:7382)
        at 
org.apache.geode.internal.cache.LocalRegion.checkReadiness(LocalRegion.java:2788)
        at 
org.apache.geode.internal.cache.AbstractRegion.localClear(AbstractRegion.java:514)
        at 
org.apache.geode.modules.session.catalina.DeltaSessionManager.clearLocalCache(DeltaSessionManager.java:686)
        at 
org.apache.geode.modules.session.catalina.DeltaSessionManager.unload(DeltaSessionManager.java:579)
        at 
org.apache.geode.modules.session.catalina.Tomcat8DeltaSessionManager.stopInternal(Tomcat8DeltaSessionManager.java:93)
        at org.apache.catalina.util.LifecycleBase.stop(LifecycleBase.java:257)
        ... 8 more{code}
Similarly, another CacheClosedException during function execution when stopping 
a container at the end of the test, also because the client cache is closed, 
but the timer thread is still running:
{code:java}
May 07, 2022 3:26:39 AM org.apache.geode.modules.session.EmbeddedTomcat8 
stopContainer
WARNING: Cannot Stop TomcatA child container failed during stop
Exception in thread "Timer for 
Tomcat8DeltaSessionManager[container=StandardEngine[localEngine].StandardHost[localhost].StandardContext[];
 regionName=gemfire_modules_sessions; regionAttributesId=PARTITION_REDUNDANT]" 
org.apache.geode.cache.CacheClosedException: The cache is closed.
        at 
org.apache.geode.internal.cache.GemFireCacheImpl$Stopper.generateCancelledException(GemFireCacheImpl.java:5207)
        at 
org.apache.geode.internal.cache.LocalRegion$Stopper.generateCancelledException(LocalRegion.java:11342)
        at 
org.apache.geode.CancelCriterion.checkCancelInProgress(CancelCriterion.java:83)
        at 
org.apache.geode.CancelCriterion.checkCancelInProgress(CancelCriterion.java:87)
        at 
org.apache.geode.internal.cache.execute.InternalFunctionExecutionServiceImpl.onRegion(InternalFunctionExecutionServiceImpl.java:122)
        at 
org.apache.geode.cache.execute.FunctionService.onRegion(FunctionService.java:79)
        at 
org.apache.geode.modules.session.catalina.ClientServerSessionCache.getExecutionForFunctionOnRegionWithFilter(ClientServerSessionCache.java:283)
        at 
org.apache.geode.modules.session.catalina.ClientServerSessionCache.touchSessions(ClientServerSessionCache.java:101)
        at 
org.apache.geode.modules.session.catalina.DeltaSessionManager$1.run(DeltaSessionManager.java:534)
        at java.base/java.util.TimerThread.mainLoop(Timer.java:556)
        at java.base/java.util.TimerThread.run(Timer.java:506) {code}
If we close the client cache after stopping the Tomcat container, there will be 
no more CacheClosedException. The test then have warnings about memory leak, 
for example:
{code:java}
May 27, 2022 5:28:14 PM org.apache.coyote.AbstractProtocol pause
INFO: Pausing ProtocolHandler ["http-nio-20012"]
May 27, 2022 5:28:14 PM org.apache.catalina.core.StandardService stopInternal
INFO: Stopping service [Tomcat]
May 27, 2022 5:28:14 PM org.apache.catalina.loader.WebappClassLoaderBase 
clearReferencesThreads
WARNING: The web application [ROOT] appears to have started a thread named 
[poolTimer-DEFAULT-1] but has failed to stop it. This is very likely to create 
a memory leak. Stack trace of thread:
 sun.misc.Unsafe.park(Native Method)
 java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:215)
 
java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:2078)
 
java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1093)
 
java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:809)
 java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1074)
 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1134)
 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
 java.lang.Thread.run(Thread.java:748)
May 27, 2022 5:28:14 PM org.apache.catalina.loader.WebappClassLoaderBase 
clearReferencesThreads
WARNING: The web application [ROOT] appears to have started a thread named 
[poolTimer-DEFAULT-2] but has failed to stop it. This is very likely to create 
a memory leak. Stack trace of thread:
 sun.misc.Unsafe.park(Native Method)
 java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:215)
 
java.util.concurrent.SynchronousQueue$TransferStack.awaitFulfill(SynchronousQueue.java:460)
 
java.util.concurrent.SynchronousQueue$TransferStack.transfer(SynchronousQueue.java:362)
 java.util.concurrent.SynchronousQueue.poll(SynchronousQueue.java:941)
 java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1073)
 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1134)
 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
 java.lang.Thread.run(Thread.java:748)
May 27, 2022 5:28:14 PM org.apache.catalina.loader.WebappClassLoaderBase 
clearReferencesThreads
WARNING: The web application [ROOT] appears to have started a thread named 
[ClientMembership Event Invoker1] but has failed to stop it. This is very 
likely to create a memory leak. Stack trace of thread:
 sun.misc.Unsafe.park(Native Method)
 java.util.concurrent.locks.LockSupport.park(LockSupport.java:175)
 
java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:2039)
 java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:442)
 java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1074)
 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1134)
 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
 java.lang.Thread.run(Thread.java:748)
May 27, 2022 5:28:14 PM org.apache.catalina.loader.WebappClassLoaderBase 
clearReferencesThreads
WARNING: The web application [ROOT] appears to have started a thread named 
[poolLoadConditioningMonitor-DEFAULT1] but has failed to stop it. This is very 
likely to create a memory leak. Stack trace of thread:
 sun.misc.Unsafe.park(Native Method)
 java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:215)
 
java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:2078)
 
java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1093)
 
java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:809)
 java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1074)
 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1134)
 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
 java.lang.Thread.run(Thread.java:748)
May 27, 2022 5:28:14 PM org.apache.catalina.loader.WebappClassLoaderBase 
clearReferencesThreads
WARNING: The web application [ROOT] appears to have started a thread named 
[Cache Client Updater Thread  on t2000-z4(server-1:77808)<v1>:41005 port 20010] 
but has failed to stop it. This is very likely to create a memory leak. Stack 
trace of thread:
 java.net.SocketInputStream.socketRead0(Native Method)
 java.net.SocketInputStream.socketRead(SocketInputStream.java:116)
 java.net.SocketInputStream.read(SocketInputStream.java:171)
 java.net.SocketInputStream.read(SocketInputStream.java:141)
 
org.apache.geode.internal.cache.tier.sockets.Message.fetchHeader(Message.java:830)
 
org.apache.geode.internal.cache.tier.sockets.Message.readHeaderAndBody(Message.java:677)
 
org.apache.geode.internal.cache.tier.sockets.Message.receiveWithHeaderReadTimeout(Message.java:1141)
 
org.apache.geode.internal.cache.tier.sockets.CacheClientUpdater.processMessages(CacheClientUpdater.java:1595)
 
org.apache.geode.internal.cache.tier.sockets.CacheClientUpdater.run(CacheClientUpdater.java:486)
May 27, 2022 5:28:14 PM org.apache.coyote.AbstractProtocol stop
INFO: Stopping ProtocolHandler ["http-nio-20012"]
May 27, 2022 5:28:14 PM org.apache.geode.modules.session.EmbeddedTomcat8 
stopContainer
INFO: Stopped container {code}
These warnings are reported when stopping the Tomcat container. At this time, 
the client cache is not closed yet. Once the client cache is closed, it will 
stop those threads. So I wouldn't worry about memory leak.

> CI Failure: Tomcat8SessionsClientServerDUnitTest.testSessionExpiration1 failed
> ------------------------------------------------------------------------------
>
>                 Key: GEODE-10308
>                 URL: https://issues.apache.org/jira/browse/GEODE-10308
>             Project: Geode
>          Issue Type: Bug
>          Components: tests
>    Affects Versions: 1.16.0
>            Reporter: Eric Shu
>            Assignee: Jianxia Chen
>            Priority: Major
>              Labels: needsTriage
>
> {noformat}
> org.apache.geode.cache.CacheClosedException: The cache is closed.
>       at 
> org.apache.geode.internal.cache.GemFireCacheImpl$Stopper.generateCancelledException(GemFireCacheImpl.java:5207)
>       at 
> org.apache.geode.internal.cache.LocalRegion$Stopper.generateCancelledException(LocalRegion.java:11342)
>       at 
> org.apache.geode.CancelCriterion.checkCancelInProgress(CancelCriterion.java:83)
>       at 
> org.apache.geode.CancelCriterion.checkCancelInProgress(CancelCriterion.java:87)
>       at 
> org.apache.geode.internal.cache.execute.InternalFunctionExecutionServiceImpl.onRegion(InternalFunctionExecutionServiceImpl.java:122)
>       at 
> org.apache.geode.cache.execute.FunctionService.onRegion(FunctionService.java:79)
>       at 
> org.apache.geode.modules.session.catalina.ClientServerSessionCache.getExecutionForFunctionOnRegionWithFilter(ClientServerSessionCache.java:283)
>       at 
> org.apache.geode.modules.session.catalina.ClientServerSessionCache.touchSessions(ClientServerSessionCache.java:101)
>       at 
> org.apache.geode.modules.session.catalina.DeltaSessionManager$1.run(DeltaSessionManager.java:534)
>       at java.util.TimerThread.mainLoop(Timer.java:556)
>       at java.util.TimerThread.run(Timer.java:506)
> {noformat}
> Artifacts can be found here: 
> https://concourse.apachegeode-ci.info/teams/main/pipelines/apache-develop-main/jobs/distributed-test-openjdk11/builds/334



--
This message was sent by Atlassian Jira
(v8.20.7#820007)

Reply via email to