-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256

Konstantin,

On 6/5/14, 4:27 PM, Konstantin Kolinko wrote:
> 2014-06-05 23:06 GMT+04:00 Christopher Schultz
> <ch...@christopherschultz.net>:
>> On 6/5/14, 11:58 AM, Konstantin Kolinko wrote:
>>> 2014-06-05 19:19 GMT+04:00 Christopher Schultz 
>>> <ch...@christopherschultz.net>:
>>>> I tried invoking "backgroundProcess" on my Manager bean via
>>>> JMX but it didn't seem to actually clean anything up. Is
>>>> there any hope of recovery without bouncing the web
>>>> application?
>>>> 
>>>> Also, it would be nice to get a notification if the thread
>>>> is dying due to some exception. I searched-though
>>>> catalina.out and found nothing relevant. Any suggestions?
>>> 
>>> In general, dying threads are handled via 
>>> Thread.setUncaughtExceptionHandler(...) and 
>>> ThreadGroup.uncaughtException(...)
>>> 
>>> The default behaviour in JRE it so log to System.err. So 
>>> catalina.out is the place where I expect it to be written.
>> 
>> That's what I would have thought, too. I didn't see anything, 
>> unfortunately.
>> 
>>> (It is not nice as it bypasses logging framework, but that is
>>> how it is currently).
>>> 
>>> A unusual culprit is OutOfMemoryError.
>> 
>> I think you mean "a usual culprit" and I agree: this has happened
>> in the past where the background processor thread dies due to
>> OOME.
>> 
> 
> Yes, a typo. I meant "a usual one".
> 
>>>> I tried invoking "backgroundProcess" on my Manager bean via
>>>> JMX but it didn't seem to actually clean anything up. Is
>>>> there any hope of recovery without bouncing the web
>>>> application?
>>> 
>>> The background thread is started via threadStart() which is
>>> called from ContainerBase.startInternal() / 
>>> StandardContext.startInternal().
>>> 
>>> So I see no hope of recovering unless the container that owns
>>> the thread is stopped/started.  I think that by default the
>>> thread is started by Engine, so Engine needs to be bounced
>>> here.
>> 
>> The JMX method "backgroundProcess" should call 
>> ManagerBase.backgroundProcess which should go ahead and expire
>> the sessions. I don't see a reason why it wouldn't work.
>> Unfortunately, Tomcat's Manager wasn't in debug-log mode or I
>> would have been able to see what happened when I invoked
>> backgroundProcess.
>> 
> 
> 1. If you have Manager webapp installed, it has API to expire
> sessions (on the "list" page in HTML gui)
> 
> 2. I think logging level can be manipulated via JMX.

I hadn't thought of that. Next time. ;)

>>> BTW, javadoc for ContainerBase.backgroundProcess() says "This 
>>> method will be invoked inside the classloading context of this 
>>> container."  I think that is not true when it is being invoked
>>> via JMX.
>> 
>> This is ManagerBase.backgroundProcess, which does not have the
>> same documentation. While ContainerBase.backgroundProcess would
>> usually invoke ManagerBase.backgroundProcess, using JMX goes
>> directly to ManagerBase.
> 
> OK.
> 
>> I'm still curious why invoking ManagerBase.backgroundProcess via
>> JMX had no effect. I'm not sure what the "count" and 
>> "processExpiresFrequency" values were at the time, so my calls
>> could have been rejected due to
>> background-processing-throttling.
> 
> //ManagerBase.java @Override public void backgroundProcess() { 
> count = (count + 1) % processExpiresFrequency; if (count == 0) 
> processExpires(); }
> 
> processExpiresFrequency should be readable via JMX.
> 
> Default is '6', so you have to call the method 6 times in a row.

Aah. I gave up after 3. Next time.

Thanks for the info!

- -chris
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1
Comment: GPGTools - http://gpgtools.org
Comment: Using GnuPG with Thunderbird - http://www.enigmail.net/

iQIcBAEBCAAGBQJTkOEWAAoJEBzwKT+lPKRY9hwP/Azf+FdBNpEl/V29SjuVfAb/
GTkEwzcVyxFh0uzr1wydcjdw8vE/SeVYcL0++dWmjzV6qGPeVLY0/wbrASBfJckc
Cka8gbLpSnIaVkrGqEAqWvfisSXYY2UGpCh2raOzgRW8/kqKcwriNrxRyZ7vPXXo
v4Ql+J4mjBC+XN4RRqHnz//l0bRBuwYGUgfeew7Tv5hO32PfGV2GS6FtgsbceIP7
GDRpqFoBo9xQtmgYHvHIVYrRD7zSBFcf72YZdY23PIlQum6TdvxWjkt0KipNrRE8
N7mDBprddiuRv1q6vNjWJbkz+y+YROd4PlHpK/sCxhdQMfvpl4SpNXp2Uo0b6cBB
KiFjJ6i9HUcEbaHrRZXCS+UoOxBOhQM/WBRtPXv/Vy+k7hIyjtfs1QCojrwnQQcl
EMff7iDdukk+m2FlnK3SdbxJALGtVh1Y+Q3eYa+X3IqBoz7/RQDt1tBUjpm4eKkF
G+cg7/+JubJJh+2TMOHzi7YFsBo978TMMO3rmu+Bl3E4YHayzt0RMfde2V0Dj4jD
WJCQOFz/JYHRjZoeY/lJSx0Y9kydfNeqF/aQ5hlF1+c2PKVYVkwp5NG5H48yXjpo
E3HcDV0nSV69VmbWQKiZpGn74B5J9tHTLQ7KYFJRH0BpyOk+QZc0Zzh2zTtAnbyq
tRA2omkbjAifP0PA0IMg
=jS15
-----END PGP SIGNATURE-----

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org
For additional commands, e-mail: users-h...@tomcat.apache.org

Reply via email to