On 17/10/2013 12:21, Konstantin Preißer wrote: > > >> -----Original Message----- >> From: Konstantin Preißer [mailto:kpreis...@apache.org] >> Sent: Thursday, October 17, 2013 1:18 PM >> To: 'Tomcat Developers List' >> Subject: RE: svn commit: r1533035 - >> /tomcat/tc7.0.x/trunk/webapps/examples/WEB- >> INF/classes/websocket/drawboard/Room.java >> >> Hi Mark, >> >>> -----Original Message----- >>> From: Mark Thomas [mailto:ma...@apache.org] >>> Sent: Thursday, October 17, 2013 1:10 PM >>> To: Tomcat Developers List >>> Subject: Re: svn commit: r1533035 - >>> /tomcat/tc7.0.x/trunk/webapps/examples/WEB- >>> INF/classes/websocket/drawboard/Room.java >>> >>> On 17/10/2013 11:53, Mark Thomas wrote: >>>> On 17/10/2013 11:50, Konstantin Preißer wrote: >>>>> Hi Mark, >>>>> >>>>>> -----Original Message----- >>>>>> From: Mark Thomas [mailto:ma...@apache.org] >>>>>> Sent: Thursday, October 17, 2013 12:49 PM >>>>>> To: Tomcat Developers List >>>>>> Subject: Re: svn commit: r1533035 - >>>>>> /tomcat/tc7.0.x/trunk/webapps/examples/WEB- >>>>>> INF/classes/websocket/drawboard/Room.java >>>>>> >>>>>> On 17/10/2013 11:39, Konstantin Kolinko wrote: >>>>>>> 2013/10/17 <ma...@apache.org>: >>>>>>>> Author: markt >>>>>>>> Date: Thu Oct 17 10:32:21 2013 >>>>>>>> New Revision: 1533035 >>>>>>>> >>>>>>>> URL: http://svn.apache.org/r1533035 >>>>>>>> Log: >>>>>>>> Avoid hangs on shutdown >>>>>>>> >>>>>>>> Modified: >>>>>>>> tomcat/tc7.0.x/trunk/webapps/examples/WEB- >>>>>> INF/classes/websocket/drawboard/Room.java >>>>>>>> >>>>>>> >>>>>>> I expect this to >>>>>>> a) fail when running with a security manager >>>>>>> b) cause a memory leak when examples app is reloaded, as you will >> get >>>>>>> a new instance of ShutdownDetection class in webapp's classloader >>> and >>>>>>> new instance of shutdown hook. >>>>>> >>>>>> I'm open to better suggestions. Another option I considered was just >>>>>> removing the call to roomGraphics.dispose(); and letting GC take care >> of >>>>>> things. >>>>>> >>>>>> Alternatively, we could provide some form of global flag. >>>>>> >>>>>> I think I prefer the global flag that indicates that a shutdown is in >>>>>> process. I can think of several other places where such a flag would >>>>>> have been useful and we can expose it through a custom servlet >> context >>>>>> attribute such as >>> "org.apache.tomcat.JVM_SHUTDOWN_IN_PROGRESS". >>>>>> >>>>>> I'll start looking at the global flag option. Meanwhile, any suggestions >>>>>> on how to improve the fix or an alternative fix welcome. >>>>> >>>>> Can you give me some insight of why Grahpics2D.dispose() may cause a >>> hang on shutdown? I have never seen .dispose() causing a hang, at least >> not >>> on Windows. >>>>> If it hangs, might this be a result of different threads using the >>>>> Grahpics >>> object? >>>> >>>> Clean 7.0.x build >>>> catalina.bat start >>>> CTRL-C in the Tomcat Window >>>> >>>> The result is an exception written to stderr (I assume err rather than >>>> out) and Tomcat fails to stop. The exception is triggered by AWT trying >>>> to register a shutdown hook after the shutdown process has started. >>> >>> Ah. More info. It only occurs with Java 6. >>> >>> We could just classify this as a JVM bug and more on. That said, I think >>> some changes to the init code could probably avoid this in Java 6 as >>> well. I'll take a quick look. >> >> OK, thanks. >> However, I can reproduce the hang now with Tomcat 7 on Java 7. Although I >> do not get a exception, I get a short hang and a warning: "The executor >> associated with thread pool [http-bio-8080] has not fully shutdown. Some >> application threads may still be running." After that, Tomcat closed. >> I do not get this with Tomcat 8. >> >> My reaction also would have been to just remove the dispose() in the >> Tomcat 7 example since it is unlikely that the examples application is >> reloaded many times on a Tomcat run and creates too much Graphics2D >> objects that the GC does not dispose. But of course, I have nothing against a >> better solution if you find one. :) > > OK, that was not the full story: > > I can reproduce the short hang (and the warning) on Tomcat 8 with BIO > connector, but not with NIO or APR...
OK. I think I'm done. Mark --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org