Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Quartz : Memory Leak?

I am using Quartz to run a job every hour. The servlet is running on Tomcat and I am using the ServletConextListener to listen for when the context is destroyed.

When I shut down tomcat, I get the message:

"appears to have started a thread named [MyScheduler_Worker-1] but has failed to stop it".

But later I see this message:

"[DEBUG] 28 Sep 11:45:26.671 AM MyScheduler_Worker-1 [org.quartz.simpl.SimpleThreadPool]

WorkerThread is shut down."

So is it safe to assume that there is no memory leak because of this thread?

Here is how my log looks:

{SEVERE: The web application [/*************] appears to have started a thread

named [MyScheduler_Worker-1] but has failed to stop it. This is very likely to c

reate a memory leak.

Sep 28, 2011 11:45:26 AM org.apache.catalina.loader.WebappClassLoader clearRefer

encesThreads

SEVERE: The web application [/*************] appears to have started a thread

named [MyScheduler_Worker-2] but has failed to stop it. This is very likely to c

reate a memory leak.

Sep 28, 2011 11:45:26 AM org.apache.catalina.loader.WebappClassLoader clearRefer

encesThreads

SEVERE: The web application [/*************] appears to have started a thread

named [MyScheduler_Worker-3] but has failed to stop it. This is very likely to c

reate a memory leak.

[DEBUG] 28 Sep 11:45:26.671 AM MyScheduler_Worker-2 [org.quartz.simpl.SimpleThre

adPool]

WorkerThread is shut down.



[DEBUG] 28 Sep 11:45:26.671 AM MyScheduler_Worker-1 [org.quartz.simpl.SimpleThre

adPool]

WorkerThread is shut down.



[DEBUG] 28 Sep 11:45:26.671 AM MyScheduler_Worker-3 [org.quartz.simpl.SimpleThre

adPool]

WorkerThread is shut down.
like image 899
sabman Avatar asked Sep 28 '11 16:09

sabman


1 Answers

I know this is an old thread but in case others are looking for it.

We use to get the warnings of threads all the time until we added code to shutdown the Quartz Scheduler in our ServletContextListener.shutDown() method.

To shutdown the Scheduler:

            quartzScheduler.shutdown();

            int ct = 0;

            // Try waiting for the scheduler to shutdown. Only wait 30 seconds.
            while(ct < 30) {
                ct++;
                // Sleep for a second so the quartz worker threads die.  This 
                // suppresses a warning from Tomcat during shutdown.
                Thread.sleep(1000);
                if (quartzScheduler.isShutdown()) {
                    break;
                }
            }
like image 89
km1 Avatar answered Oct 29 '22 06:10

km1