right forgot to set remove on cancel flag on, will do in a min
Romain Manni-Bucau @rmannibucau <https://twitter.com/rmannibucau> | Blog <http://rmannibucau.wordpress.com> | Github <https://github.com/rmannibucau> | LinkedIn <https://www.linkedin.com/in/rmannibucau> | Tomitriber <http://www.tomitribe.com> 2015-06-17 1:34 GMT+02:00 David Blevins <david.blev...@gmail.com>: > On Jun 16, 2015, at 4:41 AM, Romain Manni-Bucau <rmannibu...@gmail.com> > wrote: > > > Le 16 juin 2015 02:04, "David Blevins" <david.blev...@gmail.com> a > écrit : > >> > >> On Jun 15, 2015, at 7:26 PM, Romain Manni-Bucau <rmannibu...@gmail.com> > > wrote: > >> > >>>> > >>>> > >>>>> The trick is we need to rely on shutdown() being called when the bean > > is > >>>>> undeployed to ensure the application can successfully terminate and > > not > >>>>> leak timers. > >>>>> > >>>> > >>> > >>> we can use ScheduledTask#cancel then > >>> > >>> will change it and add a flag to go back to previous behavior if > desired > >> > >> No need for a flag if it works. > >> > >> The cancel as opposed to shutdown has no wait time yet can return false > > signifying the timer will continue to fire. > >> > >> We'd have to test it to ensure it works, but in the event cancel returns > > false we might want to call get(long, TimeUnit) on the future to see if > we > > can wait for completion and try the cancel again. > >> > > > > No, would block shutdown. We already wait for completion not interrupting > > the task. > > Can you expand on that? The goal is definitely to block undeploy till > undeploy is actually complete. > > I checked out the code for ScheduledExecutorService yesterday and it > appeared the cancel call will not remove the timer if the timer is being > currently fired nor will it wait for the timer to complete and remove it > afterwards. This means that the sweeper will stay running and the app will > leak. > > > -David > >