Sent from my iPhone

On 30/gen/2013, at 17:59, Matteo Centro <woli...@matteocentro.it> wrote:

> Regarding the deployment environment (which is not under my control,
> as I said before) There are 6 boxes:
> 2 webservers (one each for 2 different apps)
> 2 WO nodes with wonder's latest wotaskd
> 1 Mysql DB
> 1 JavaMonitor box
> 
> I noticed that the box that runs JavaMonitor doesn't have wotaskd
> running, is this normal?

Yes. JavaMonitor don't have to be in the same machine that runs wotaskd

> 
> Matteo
> 
> On Wed, Jan 30, 2013 at 5:56 PM, Matteo Centro <woli...@matteocentro.it> 
> wrote:
>> From what I see some instances don't log the DB Connection error and
>> still have immortal sessions.
>> The main problems with immortal sessions is that eventually they end
>> up with a memory problem, I recall there is a way to make the instance
>> restart if memory errors happen but I can't remember how.
>> 
>> I'm still in dire straits, no idea how to fix this... no idea what's
>> happening either. Any suggestions?
>> 
>> Matteo
>> 
>> On Tue, Jan 15, 2013 at 6:14 PM, Chuck Hill <ch...@global-village.net> wrote:
>>> 
>>> On 2013-01-15, at 3:20 AM, Matteo Centro wrote:
>>> 
>>>> Unfortunately I don't have full control of the deployment
>>>> environment... It looks like at some times the DB stops responding
>>>> with no apparent reason.
>>>> Could a simple DB Connection glitch cause a EOObjectStoreCoordinator lock?
>>> 
>>> I recall a bug at some level related to this.  I could be wrong.
>>> 
>>> 
>>>> Maybe I can tweak the connection dictionary to enable auto reconnect.
>>>> I'll try
>>> 
>>> Chuck
>>> 
>>> 
>>>> On Mon, Jan 14, 2013 at 8:17 PM, Chuck Hill <ch...@global-village.net> 
>>>> wrote:
>>>>> Hi Matteo,
>>>>> 
>>>>> Something locked the EOObjectStoreCoordinator and did not unlock it.  
>>>>> Does the log for this instance show any exceptions?
>>>>> 
>>>>> This exception could perhaps cause this problem:
>>>>> 
>>>>>>> ava.io.EOFException
>>>>>>>      at com.mysql.jdbc.MysqlIO.readFully(MysqlIO.java:1394)
>>>>>>>      at com.mysql.jdbc.MysqlIO.reuseAndReadPacket(MysqlIO.java:1538)
>>>>>>>      at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:1929)
>>>>>>>      at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1167)
>>>>>>>      at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1278)
>>>>>>>      at com.mysql.jdbc.Connection.execSQL(Connection.java:2247)
>>>>>>>      at 
>>>>>>> com.mysql.jdbc.PreparedStatement.execute(PreparedStatement.java:1371)
>>>>>>>      at 
>>>>>>> com.webobjects.jdbcadaptor.JDBCChannel._bindInputVariablesWithBindingsAndExecute(JDBCChannel.java:265)
>>>>>>>      at 
>>>>>>> com.webobjects.jdbcadaptor.JDBCChannel._evaluateExpression(JDBCChannel.java:337)
>>>>>>>      at 
>>>>>>> com.webobjects.jdbcadaptor.JDBCChannel.evaluateExpression(JDBCChannel.java:296)
>>>>>>>      at 
>>>>>>> com.webobjects.jdbcadaptor.JDBCChannel.selectAttributes(JDBCChannel.java:220)
>>>>>>>      at 
>>>>>>> com.webobjects.eoaccess.EODatabaseChannel._selectWithFetchSpecificationEditingContext(EODatabaseChannel.java:897)
>>>>>>>      at 
>>>>>>> com.webobjects.eoaccess.EODatabaseChannel.selectObjectsWithFetchSpecification(EODatabaseChannel.java:234)
>>>>>>>      at 
>>>>>>> com.webobjects.eoaccess.EODatabaseContext._objectsWithFetchSpecificationEditingContext(EODatabaseContext.java:3055)
>>>>>>>      at 
>>>>>>> com.webobjects.eoaccess.EODatabaseContext.objectsWithFetchSpecification(EODatabaseContext.java:3195)
>>>>>>>      at 
>>>>>>> com.webobjects.eocontrol.EOObjectStoreCoordinator.objectsWithFetchSpecification(EOObjectStoreCoordinator.java:488)
>>>>>>>      at 
>>>>>>> com.webobjects.eocontrol.EOEditingContext.objectsWithFetchSpecification(EOEditingContext.java:4069)
>>>>>>>      at 
>>>>>>> er.extensions.eof.ERXEC.objectsWithFetchSpecification(ERXEC.java:1305)
>>>>>>>      at 
>>>>>>> com.webobjects.eocontrol.EOEditingContext.objectsWithFetchSpecification(EOEditingContext.java:4444)
>>>>> 
>>>>> 
>>>>> Chuck
>>>>> 
>>>>> 
>>>>> On 2013-01-14, at 10:05 AM, Matteo Centro wrote:
>>>>> 
>>>>>> Hi all, suspecting there was some sort of deadlock I ran jstack
>>>>>> against one of the immortal sessions instances, I'm attaching the
>>>>>> output, anything helps...
>>>>>> 
>>>>>> Thanks,
>>>>>> 
>>>>>> 
>>>>>> Matteo
>>>>>> 
>>>>>> On Mon, Jan 14, 2013 at 12:35 PM, Matteo Centro 
>>>>>> <woli...@matteocentro.it> wrote:
>>>>>>> Sure, here it is:
>>>>>>> Hi Chuck,
>>>>>>> 
>>>>>>> I'm posting just to you, I can't have google to index this...
>>>>>>> 
>>>>>>> anyway, here is the stack trace:
>>>>>>> java.lang.IllegalMonitorStateException
>>>>>>>      at 
>>>>>>> java.util.concurrent.locks.ReentrantLock$Sync.tryRelease(ReentrantLock.java:127)
>>>>>>>      at 
>>>>>>> java.util.concurrent.locks.AbstractQueuedSynchronizer.release(AbstractQueuedSynchronizer.java:1239)
>>>>>>>      at 
>>>>>>> java.util.concurrent.locks.ReentrantLock.unlock(ReentrantLock.java:431)
>>>>>>>      at 
>>>>>>> com.webobjects.eocontrol.EOObjectStoreCoordinator.unlock(EOObjectStoreCoordinator.java:448)
>>>>>>>      at 
>>>>>>> com.webobjects.eocontrol.EOEditingContext.unlockObjectStore(EOEditingContext.java:4684)
>>>>>>>      at er.extensions.eof.ERXEC.unlockObjectStore(ERXEC.java:805)
>>>>>>>      at 
>>>>>>> com.webobjects.eocontrol.EOCustomObject.willReadRelationship(EOCustomObject.java:1281)
>>>>>>>      at 
>>>>>>> er.extensions.eof.ERXGenericRecord.willReadRelationship(ERXGenericRecord.java:378)
>>>>>>>      at 
>>>>>>> com.webobjects.eocontrol._EOMutableKnownKeyDictionary$Initializer$_LazyGenericRecordBinding.valueInObject(_EOMutableKnownKeyDictionary.java:614)
>>>>>>>      at 
>>>>>>> com.webobjects.eocontrol.EOCustomObject.storedValueForKey(EOCustomObject.java:1634)
>>>>>>>      at 
>>>>>>> com.tla.logic._RigaCarrello.clientiPerTicket(_RigaCarrello.java:275)
>>>>>>>      at com.tla.logic.RigaCarrello.setPosti(RigaCarrello.java:94)
>>>>>>>      at com.tla.logic.Carrello.cancellaTutto(Carrello.java:164)
>>>>>>>      at com.tla.calendar.Session.terminate(Session.java:81)
>>>>>>>      at 
>>>>>>> com.webobjects.appserver.WOSession._terminateByTimeout(WOSession.java:610)
>>>>>>>      at 
>>>>>>> com.webobjects.appserver.WOSessionStore$_SessionTimeoutManager.run(WOSessionStore.java:115)
>>>>>>>      at java.lang.Thread.run(Thread.java:662)
>>>>>>> 
>>>>>>> Sorry for the italian Class Names and Methods, as I said I inherited 
>>>>>>> that...
>>>>>>> 
>>>>>>> The exception is caught, that printout is the printStackTrace of the
>>>>>>> exception...
>>>>>>> But anyway, I'm not sure that's the real problem, I found this morning
>>>>>>> an instance with 295 sessions (still alive) and the only exception
>>>>>>> logged was a weird
>>>>>>> 
>>>>>>> er.transaction.adaptor.Exceptions  - Database Exception occured: No
>>>>>>> operations allowed after connection closed.
>>>>>>> 
>>>>>>> Connection was closed due to the following exception:
>>>>>>> 
>>>>>>> ** BEGIN NESTED EXCEPTION **
>>>>>>> 
>>>>>>> java.sql.SQLException
>>>>>>> MESSAGE: Communication link failure: java.io.EOFException, underlying
>>>>>>> cause: null
>>>>>>> 
>>>>>>> ** BEGIN NESTED EXCEPTION **
>>>>>>> 
>>>>>>> java.io.EOFException
>>>>>>> 
>>>>>>> STACKTRACE:
>>>>>>> 
>>>>>>> java.io.EOFException
>>>>>>>      at com.mysql.jdbc.MysqlIO.readFully(MysqlIO.java:1394)
>>>>>>>      at com.mysql.jdbc.MysqlIO.reuseAndReadPacket(MysqlIO.java:1538)
>>>>>>>      at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:1929)
>>>>>>>      at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1167)
>>>>>>>      at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1278)
>>>>>>>      at com.mysql.jdbc.Connection.execSQL(Connection.java:2247)
>>>>>>>      at 
>>>>>>> com.mysql.jdbc.PreparedStatement.execute(PreparedStatement.java:1371)
>>>>>>>      at 
>>>>>>> com.webobjects.jdbcadaptor.JDBCChannel._bindInputVariablesWithBindingsAndExecute(JDBCChannel.java:265)
>>>>>>>      at 
>>>>>>> com.webobjects.jdbcadaptor.JDBCChannel._evaluateExpression(JDBCChannel.java:337)
>>>>>>>      at 
>>>>>>> com.webobjects.jdbcadaptor.JDBCChannel.evaluateExpression(JDBCChannel.java:296)
>>>>>>>      at 
>>>>>>> com.webobjects.jdbcadaptor.JDBCChannel.selectAttributes(JDBCChannel.java:220)
>>>>>>>      at 
>>>>>>> com.webobjects.eoaccess.EODatabaseChannel._selectWithFetchSpecificationEditingContext(EODatabaseChannel.java:897)
>>>>>>>      at 
>>>>>>> com.webobjects.eoaccess.EODatabaseChannel.selectObjectsWithFetchSpecification(EODatabaseChannel.java:234)
>>>>>>>      at 
>>>>>>> com.webobjects.eoaccess.EODatabaseContext._objectsWithFetchSpecificationEditingContext(EODatabaseContext.java:3055)
>>>>>>>      at 
>>>>>>> com.webobjects.eoaccess.EODatabaseContext.objectsWithFetchSpecification(EODatabaseContext.java:3195)
>>>>>>>      at 
>>>>>>> com.webobjects.eocontrol.EOObjectStoreCoordinator.objectsWithFetchSpecification(EOObjectStoreCoordinator.java:488)
>>>>>>>      at 
>>>>>>> com.webobjects.eocontrol.EOEditingContext.objectsWithFetchSpecification(EOEditingContext.java:4069)
>>>>>>>      at 
>>>>>>> er.extensions.eof.ERXEC.objectsWithFetchSpecification(ERXEC.java:1305)
>>>>>>>      at 
>>>>>>> com.webobjects.eocontrol.EOEditingContext.objectsWithFetchSpecification(EOEditingContext.java:4444)
>>>>>>>      at 
>>>>>>> com.tla.logic.Performance.fetchFreshPerformancesWithQualifier(Performance.java:414)
>>>>>>>      at com.tla.logic.Carrello.cancellaTutto(Carrello.java:154)
>>>>>>>      at 
>>>>>>> com.tla.calendar.components.ALTComponent.invokeAction(ALTComponent.java:167)
>>>>>>>      at 
>>>>>>> com.webobjects.appserver.WOSession.invokeAction(WOSession.java:1357)
>>>>>>>      at 
>>>>>>> com.webobjects.appserver.WOApplication.invokeAction(WOApplication.java:1745)
>>>>>>>      at 
>>>>>>> er.extensions.appserver.ajax.ERXAjaxApplication.invokeAction(ERXAjaxApplication.java:117)
>>>>>>>      at 
>>>>>>> er.extensions.appserver.ERXApplication.invokeAction(ERXApplication.java:2018)
>>>>>>>      at 
>>>>>>> er.extensions.appserver.ERXComponentRequestHandler._dispatchWithPreparedPage(ERXComponentRequestHandler.java:157)
>>>>>>>      at 
>>>>>>> er.extensions.appserver.ERXComponentRequestHandler._dispatchWithPreparedSession(ERXComponentRequestHandler.java:235)
>>>>>>>      at 
>>>>>>> er.extensions.appserver.ERXComponentRequestHandler._dispatchWithPreparedApplication(ERXComponentRequestHandler.java:268)
>>>>>>>      at 
>>>>>>> er.extensions.appserver.ERXComponentRequestHandler._handleRequest(ERXComponentRequestHandler.java:302)
>>>>>>>      at 
>>>>>>> er.extensions.appserver.ERXComponentRequestHandler.handleRequest(ERXComponentRequestHandler.java:377)
>>>>>>>      at 
>>>>>>> com.webobjects.appserver.WOApplication.dispatchRequest(WOApplication.java:1687)
>>>>>>>      at 
>>>>>>> er.extensions.appserver.ERXApplication.dispatchRequestImmediately(ERXApplication.java:2139)
>>>>>>>      at 
>>>>>>> er.extensions.appserver.ERXApplication.dispatchRequest(ERXApplication.java:2104)
>>>>>>>      at 
>>>>>>> com.webobjects.appserver._private.WOWorkerThread.runOnce(WOWorkerThread.java:144)
>>>>>>>      at 
>>>>>>> com.webobjects.appserver._private.WOWorkerThread.run(WOWorkerThread.java:226)
>>>>>>>      at java.lang.Thread.run(Thread.java:662)
>>>>>>> 
>>>>>>> So I'm not that confident that I am on the right track...
>>>>>>> Looks like if anything goes wrong in the life of the instance sessions
>>>>>>> won't die... Which is kind of disturbing.
>>>>>>> 
>>>>>>> 
>>>>>>> Matteo
>>>>>>> 
>>>>>>> On Sun, Jan 13, 2013 at 7:01 PM, Chuck Hill <ch...@global-village.net> 
>>>>>>> wrote:
>>>>>>>> Can you post the entire stack trace?
>>>>>>>> 
>>>>>>>> At the very least, I would catch that exception and now allow it out 
>>>>>>>> of your finalize method.
>>>>>>> 
>>>>>>> 
>>>>>>> On Sun, Jan 13, 2013 at 7:01 PM, Chuck Hill <ch...@global-village.net> 
>>>>>>> wrote:
>>>>>>>> Can you post the entire stack trace?
>>>>>>>> 
>>>>>>>> At the very least, I would catch that exception and now allow it out 
>>>>>>>> of your finalize method.
>>>>>>>> 
>>>>>>>> 
>>>>>>>> On 2013-01-12, at 2:01 PM, Matteo Centro wrote:
>>>>>>>> 
>>>>>>>>> Thanks, I'll try that.
>>>>>>>>> Anyway (I can't say it's that but this happens often in instances with
>>>>>>>>> immortal sessions):
>>>>>>>>> I get this in my terminate() method
>>>>>>>>> java.lang.IllegalMonitorStateException
>>>>>>>>>    at 
>>>>>>>>> java.util.concurrent.locks.ReentrantLock$Sync.tryRelease(ReentrantLock.java:127)
>>>>>>>>>    at 
>>>>>>>>> java.util.concurrent.locks.AbstractQueuedSynchronizer.release(AbstractQueuedSynchronizer.java:1239)
>>>>>>>>>    at 
>>>>>>>>> java.util.concurrent.locks.ReentrantLock.unlock(ReentrantLock.java:431)
>>>>>>>>>    at 
>>>>>>>>> com.webobjects.eocontrol.EOObjectStoreCoordinator.unlock(EOObjectStoreCoordinator.java:460)
>>>>>>>>>    at 
>>>>>>>>> com.webobjects.eocontrol.EOEditingContext.unlockObjectStore(EOEditingContext.java:4684)
>>>>>>>>>    at er.extensions.eof.ERXEC.unlockObjectStore(ERXEC.java:805)
>>>>>>>>>    at 
>>>>>>>>> com.webobjects.eocontrol.EOCustomObject.willReadRelationship(EOCustomObject.java:1281)
>>>>>>>>>    at 
>>>>>>>>> er.extensions.eof.ERXGenericRecord.willReadRelationship(ERXGenericRecord.java:378)
>>>>>>>>>    at 
>>>>>>>>> com.webobjects.eocontrol._EOMutableKnownKeyDictionary$Initializer$_LazyGenericRecordBinding.valueInObject(_EOMutableKnownKeyDictionary.java:614)
>>>>>>>>>    at 
>>>>>>>>> com.webobjects.eocontrol.EOCustomObject.storedValueForKey(EOCustomObject.java:1634)
>>>>>>>>> 
>>>>>>>>> I'm using ERXEC everywhere and I'm not locking explicitly, should I
>>>>>>>>> lock the ec in the terminate method?
>>>>>>>>> 
>>>>>>>>> 
>>>>>>>>> Matteo
>>>>>>>>> 
>>>>>>>>> On Sat, Jan 12, 2013 at 8:39 PM, Simon <si...@potwells.co.uk> wrote:
>>>>>>>>>> stick this in your session constructor, it will log out whenever a
>>>>>>>>>> session is created. then you can start figuring out where you are
>>>>>>>>>> creating a session outside the RR loop which is the normal culprit...
>>>>>>>>>> 
>>>>>>>>>>                     StringWriter stringWriter = new StringWriter();
>>>>>>>>>>                     PrintWriter printWriter = new 
>>>>>>>>>> PrintWriter(stringWriter);
>>>>>>>>>>                     (new Throwable()).printStackTrace(printWriter);
>>>>>>>>>>                     String trace = stringWriter.toString();
>>>>>>>>>>                     log.debug("Session count = " + 
>>>>>>>>>> application().activeSessionsCount());
>>>>>>>>>>                     
>>>>>>>>>> ClickEventLogger2.getLogger().fatal(ClickEventCode.E00129, "Session
>>>>>>>>>> Created:\n\n " + trace,
>>>>>>>>>>                                     this.getClass().getSimpleName());
>>>>>>>>>> 
>>>>>>>>>> hmmm, you'll have to replace the "ClickEventLogger2" line because
>>>>>>>>>> that's our logging mechanism. you could log.fatal it and set up an
>>>>>>>>>> email appender in log4j.
>>>>>>>>>> 
>>>>>>>>>> simon
>>>>>>>>>> 
>>>>>>>>>> 
>>>>>>>>>> On 12 January 2013 17:43, Matteo Centro <woli...@matteocentro.it> 
>>>>>>>>>> wrote:
>>>>>>>>>>> Sorry to resuscitate such an old discussion but I'm having the exact
>>>>>>>>>>> same issue...
>>>>>>>>>>> It's an old application that we "inherited", we wonderized it as 
>>>>>>>>>>> much
>>>>>>>>>>> as it's possible but something weird happens in production, sessions
>>>>>>>>>>> on some instances simply won't die.
>>>>>>>>>>> Some instances go out of memory and they hang there.
>>>>>>>>>>> I'm in trouble and I needs some hints, both to fix the issue
>>>>>>>>>>> temporarily and to fix it for good (of course in that case I assume
>>>>>>>>>>> I'll have to rewrite the app, if only I could find the budget).
>>>>>>>>>>> What are the most common causes of sessions not dying?
>>>>>>>>>>> 
>>>>>>>>>>> Thanks,
>>>>>>>>>>> 
>>>>>>>>>>> 
>>>>>>>>>>> Matteo
>>>>>>>>>>> 
>>>>>>>>>>> On Thu, Aug 21, 2008 at 5:35 AM, Joe Little <jmlit...@gmail.com> 
>>>>>>>>>>> wrote:
>>>>>>>>>>>> I had something similar with sessions going bonkers on a public WO
>>>>>>>>>>>> page that our internal google search engine completely trashed. In 
>>>>>>>>>>>> the
>>>>>>>>>>>> end, robots.txt and explicit rules to deny certain patterns were 
>>>>>>>>>>>> added
>>>>>>>>>>>> to prevent this.
>>>>>>>>>>>> 
>>>>>>>>>>>> 
>>>>>>>>>>>> On Wed, Aug 20, 2008 at 8:17 PM, D Tim Cummings <ti...@tpg.com.au> 
>>>>>>>>>>>> wrote:
>>>>>>>>>>>>> We have a couple of sessionless apps that have started showing 
>>>>>>>>>>>>> this problem
>>>>>>>>>>>>> with sessions that don't terminate.  It turned out the sessions 
>>>>>>>>>>>>> were being
>>>>>>>>>>>>> created by malformed urls coming from malicious robot web 
>>>>>>>>>>>>> crawlers.  The
>>>>>>>>>>>>> urls were of the form
>>>>>>>>>>>>> http://www.courses.qut.edu.au/cgi-bin/WebObjects/Courses.woa/wa/cgi-bin/WebObjects/Courses.woa
>>>>>>>>>>>>> Maybe see if you are getting incorrect links to your sessionless 
>>>>>>>>>>>>> login page.
>>>>>>>>>>>>> We solved the problem by catching unknown direct actions in
>>>>>>>>>>>>> DirectAction.java
>>>>>>>>>>>>> @Override
>>>>>>>>>>>>> public WOActionResults performActionNamed(String actionName) {
>>>>>>>>>>>>> try {
>>>>>>>>>>>>> return super.performActionNamed(actionName);
>>>>>>>>>>>>> } catch (NSForwardException nsfe) {
>>>>>>>>>>>>> log.info("ns forward exception - prbalby no such method for " + 
>>>>>>>>>>>>> actionName);
>>>>>>>>>>>>> }
>>>>>>>>>>>>> return defaultAction();
>>>>>>>>>>>>> }
>>>>>>>>>>>>> and in Application.java directing exceptions back to the Main 
>>>>>>>>>>>>> page (for URLs
>>>>>>>>>>>>> with more than one / after wa).
>>>>>>>>>>>>> @Override
>>>>>>>>>>>>> public WOComponent pageWithName(String namePage, WOContext 
>>>>>>>>>>>>> context) {
>>>>>>>>>>>>> if ( "WOExceptionPage".equals(namePage) ) {
>>>>>>>>>>>>> namePage = "Main";
>>>>>>>>>>>>> }
>>>>>>>>>>>>> if ( "WOSessionRestorationError".equals(namePage) ) {
>>>>>>>>>>>>> namePage = "Main";
>>>>>>>>>>>>> }
>>>>>>>>>>>>> return super.pageWithName(namePage, context);
>>>>>>>>>>>>> }
>>>>>>>>>>>>> 
>>>>>>>>>>>>> and in Main.java
>>>>>>>>>>>>> public void setException ( Exception e ) {
>>>>>>>>>>>>> log.error("an exception occurred " + e);
>>>>>>>>>>>>> }
>>>>>>>>>>>>> 
>>>>>>>>>>>>> We are running apps with embedded Wonder 4 and WebObjects 5.3.3 
>>>>>>>>>>>>> on Mac OS X
>>>>>>>>>>>>> Server 10.5.4 with WebObjects 5.4.2 deployment.  We didn't have 
>>>>>>>>>>>>> the problem
>>>>>>>>>>>>> before we went to this setup, but maybe we weren't getting hit 
>>>>>>>>>>>>> with the same
>>>>>>>>>>>>> url format then.
>>>>>>>>>>>>> Tim
>>>>>>>>>>>>> On 21/08/2008, at 4:02 AM, Chuck Hill wrote:
>>>>>>>>>>>>> 
>>>>>>>>>>>>> On Aug 20, 2008, at 9:54 AM, Simon McLean wrote:
>>>>>>>>>>>>> 
>>>>>>>>>>>>> Hi All -
>>>>>>>>>>>>> Wondering if someone can throw me some ideas on solving what 
>>>>>>>>>>>>> looks like an
>>>>>>>>>>>>> immortal session problem.
>>>>>>>>>>>>> - Start up 1 instance in java monitor.
>>>>>>>>>>>>> - User lands on sessionless login page. No sessions.
>>>>>>>>>>>>> - User logs in. 1 session.
>>>>>>>>>>>>> - User logs out. 0 sessions.
>>>>>>>>>>>>> - User logs in. 1 session.
>>>>>>>>>>>>> - User does nothing. Session times out. 0 sessions.
>>>>>>>>>>>>> All looks good. However, we get to the end of the day and the 
>>>>>>>>>>>>> instance has
>>>>>>>>>>>>> 376 active sessions. But I know for this particular app there are 
>>>>>>>>>>>>> only 6
>>>>>>>>>>>>> users, because they are all sitting next door :-) Also, If i now 
>>>>>>>>>>>>> leave this
>>>>>>>>>>>>> instance overnight none of those active sessions will go away.
>>>>>>>>>>>>> So what could be going on ? Something appears to be creating 
>>>>>>>>>>>>> immortal
>>>>>>>>>>>>> sessions, but forced session termination (by the user logging 
>>>>>>>>>>>>> out) and
>>>>>>>>>>>>> session expiration seem to be behaving themselves.
>>>>>>>>>>>>> 
>>>>>>>>>>>>> If the users don't notice any problems, my money would be on an 
>>>>>>>>>>>>> exception
>>>>>>>>>>>>> thrown from your Session.terminate().  Also check the sleep() 
>>>>>>>>>>>>> method to
>>>>>>>>>>>>> ensure it can never throw.
>>>>>>>>>>>>> I have seen a related problem where two requests come in for the 
>>>>>>>>>>>>> same
>>>>>>>>>>>>> session (user double clicks, Ajax etc), and the first calls 
>>>>>>>>>>>>> terminate() on
>>>>>>>>>>>>> the session.  The second thread is stuck and the app can't 
>>>>>>>>>>>>> gracefully shut
>>>>>>>>>>>>> down.  IIRC, you would see zero sessions in this case.  The "fix" 
>>>>>>>>>>>>> for this
>>>>>>>>>>>>> is to not call terminate() and instead set the session timeout to 
>>>>>>>>>>>>> a small
>>>>>>>>>>>>> number of seconds.
>>>>>>>>>>>>> Chuck
>>>>>>>>>>>>> --
>>>>>>>>>>>>> Chuck Hill             Senior Consultant / VP Development
>>>>>>>>>>>>> Practical WebObjects - for developers who want to increase their 
>>>>>>>>>>>>> overall
>>>>>>>>>>>>> knowledge of WebObjects or who are trying to solve specific 
>>>>>>>>>>>>> problems.
>>>>>>>>>>>>> http://www.global-village.net/products/practical_webobjects
>>>>>>>>>>>>> 
>>>>>>>>>>>>> 
>>>>>>>>>>>>> 
>>>>>>>>>>>>> 
>>>>>>>>>>>>> 
>>>>>>>>>>>>> _______________________________________________
>>>>>>>>>>>>> Do not post admin requests to the list. They will be ignored.
>>>>>>>>>>>>> Webobjects-dev mailing list      (Webobjects-dev@lists.apple.com)
>>>>>>>>>>>>> Help/Unsubscribe/Update your Subscription:
>>>>>>>>>>>>> http://lists.apple.com/mailman/options/webobjects-dev/timcu%40tpg.com.au
>>>>>>>>>>>>> This email sent to ti...@tpg.com.au
>>>>>>>>>>>>> 
>>>>>>>>>>>>> 
>>>>>>>>>>>>> 
>>>>>>>>>>>>> _______________________________________________
>>>>>>>>>>>>> Do not post admin requests to the list. They will be ignored.
>>>>>>>>>>>>> Webobjects-dev mailing list      (Webobjects-dev@lists.apple.com)
>>>>>>>>>>>>> Help/Unsubscribe/Update your Subscription:
>>>>>>>>>>>>> http://lists.apple.com/mailman/options/webobjects-dev/jmlittle%40gmail.com
>>>>>>>>>>>>> 
>>>>>>>>>>>>> This email sent to jmlit...@gmail.com
>>>>>>>>>>>> _______________________________________________
>>>>>>>>>>>> Do not post admin requests to the list. They will be ignored.
>>>>>>>>>>>> Webobjects-dev mailing list      (Webobjects-dev@lists.apple.com)
>>>>>>>>>>>> Help/Unsubscribe/Update your Subscription:
>>>>>>>>>>>> http://lists.apple.com/mailman/options/webobjects-dev/wolists%40matteocentro.it
>>>>>>>>>>>> 
>>>>>>>>>>>> This email sent to woli...@matteocentro.it
>>>>>>>>>>> _______________________________________________
>>>>>>>>>>> Do not post admin requests to the list. They will be ignored.
>>>>>>>>>>> Webobjects-dev mailing list      (Webobjects-dev@lists.apple.com)
>>>>>>>>>>> Help/Unsubscribe/Update your Subscription:
>>>>>>>>>>> https://lists.apple.com/mailman/options/webobjects-dev/simon%40potwells.co.uk
>>>>>>>>>>> 
>>>>>>>>>>> This email sent to si...@potwells.co.uk
>>>>>>>>> _______________________________________________
>>>>>>>>> Do not post admin requests to the list. They will be ignored.
>>>>>>>>> Webobjects-dev mailing list      (Webobjects-dev@lists.apple.com)
>>>>>>>>> Help/Unsubscribe/Update your Subscription:
>>>>>>>>> https://lists.apple.com/mailman/options/webobjects-dev/chill%40global-village.net
>>>>>>>>> 
>>>>>>>>> This email sent to ch...@global-village.net
>>>>>>>> 
>>>>>>>> --
>>>>>>>> Chuck Hill             Senior Consultant / VP Development
>>>>>>>> 
>>>>>>>> Practical WebObjects - for developers who want to increase their 
>>>>>>>> overall knowledge of WebObjects or who are trying to solve specific 
>>>>>>>> problems.
>>>>>>>> http://www.global-village.net/gvc/practical_webobjects
>>>>>>>> 
>>>>>>>> Global Village Consulting ranks 13th in 2012 in BIV's Top 100 Fastest 
>>>>>>>> Growing Companies in B.C!
>>>>>>>> Global Village Consulting ranks 76th in 24th annual PROFIT 200 ranking 
>>>>>>>> of Canada’s Fastest-Growing Companies by PROFIT Magazine!
>>>>>> <jstackoutput.txt>
>>>>> 
>>>>> --
>>>>> Chuck Hill             Senior Consultant / VP Development
>>>>> 
>>>>> Practical WebObjects - for developers who want to increase their overall 
>>>>> knowledge of WebObjects or who are trying to solve specific problems.
>>>>> http://www.global-village.net/gvc/practical_webobjects
>>>>> 
>>>>> Global Village Consulting ranks 13th in 2012 in BIV's Top 100 Fastest 
>>>>> Growing Companies in B.C!
>>>>> Global Village Consulting ranks 76th in 24th annual PROFIT 200 ranking of 
>>>>> Canada’s Fastest-Growing Companies by PROFIT Magazine!
>>> 
>>> --
>>> Chuck Hill             Senior Consultant / VP Development
>>> 
>>> Practical WebObjects - for developers who want to increase their overall 
>>> knowledge of WebObjects or who are trying to solve specific problems.
>>> http://www.global-village.net/gvc/practical_webobjects
>>> 
>>> Global Village Consulting ranks 13th in 2012 in BIV's Top 100 Fastest 
>>> Growing Companies in B.C!
>>> Global Village Consulting ranks 76th in 24th annual PROFIT 200 ranking of 
>>> Canada’s Fastest-Growing Companies by PROFIT Magazine!
> 
> _______________________________________________
> Do not post admin requests to the list. They will be ignored.
> Webobjects-dev mailing list      (Webobjects-dev@lists.apple.com)
> Help/Unsubscribe/Update your Subscription:
> https://lists.apple.com/mailman/options/webobjects-dev/amedeomantica%40me.com
> 
> This email sent to amedeomant...@me.com

 _______________________________________________
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list      (Webobjects-dev@lists.apple.com)
Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/webobjects-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com

Reply via email to