I've seen this issue before, many years ago too. Where it bit me was where I 
touched sessions and contexts in my component without testing to see if I in 
fact had either to work with.

You mentioned creating a context for your email. Are you then touching 
context.session()? It will lazy load a session. As will component.session().

Search across your project for "session()" and "context()". There's typically a 
culprit out there.

Here's a helper we use in our components for accessing a current session, but 
only if one already exists. It may be overkill, but at the time it helped 
remove our zombie sessions.

    public WOSession currentSession()
        {
        if (hasSession())
            {
            return session();
            }
        else if (context() != null)
            {
            if (context().hasSession())
                {
                return context().session();
                }
            else
                {
                return null;
                }
            }
        else
            {
            return null;
            }
        }

-George
On Mar 21, 2013, at 6:47 AM, Altera WO Team <webobje...@altera.it> wrote:

> I tried anyway and I can confirm. I'm not creating needless sessions. 
> 
> The app locks up anyway though… 
> 
> I lost hope in finding the real reason, for now I would be happy to find a 
> dirty workaround. I need those apps to bounce anyway.
> 
> I already tried using ERTimeToKill and it's ineffective.
> 
> The lockups are quite rare: I have 10 instances running, bouncing every 6 
> hours and it happens maybe 2 times a week, but if an instance locks up the 
> instances running become 9 and in the long run I'll have everything locked up.
> 
> Any suggestions?
> 
> 
> Matteo
> 
> 
> On 20/mar/2013, at 01:16, Chuck Hill <ch...@global-village.net> wrote:
> 
>> I think the problem is not that it is creating needless sessions, but that a 
>> checked-out session is not getting checked back in.
>> 
>> Chuck
>> 
>> 
>> On 2013-03-19, at 5:08 PM, Simon wrote:
>> 
>>> if we have this kind of issue the first thing we do is log out session 
>>> creation and check the stack traces. stick something like this in your 
>>> session constructor then check the output:
>>> 
>>> public Session() {
>>> super();
>>> StringWriter stringWriter = new StringWriter();
>>> 
>>> PrintWriter printWriter = new PrintWriter(stringWriter);
>>> 
>>> (new Throwable()).printStackTrace(printWriter);
>>> 
>>> String trace = stringWriter.toString(); <---- log this somewhere that you 
>>> can get easy access to
>>> 
>>> }
>>> 
>>> 
>>> 
>>> 
>>> 
>>> 
>>> On 19 March 2013 23:15, Altera WO Team <webobje...@altera.it> wrote:
>>> Wow, good hint!
>>> 
>>> In theory I'm not touching a Session but sometimes, when something in an EO 
>>> changes I trigger e-mail sending. 
>>> I use ERMailDeliveryHTML using a component instantiated with a brand new 
>>> wocontext using ERXWOContext.newContext()
>>> the component is not referencing a Session in any part. 
>>> 
>>> Could it be the cause?
>>> 
>>> Matteo
>>> 
>>> 
>>> On 19/mar/2013, at 21:24, Simon <si...@potwells.co.uk> wrote:
>>> 
>>>> ...or you are touching the session object outside the RR loop. the classic 
>>>> gotcha is rendering a component in a thread that touches the session in 
>>>> some way e.g. delivering an email in a thread that uses a component to 
>>>> render it's content... been caught by that one soooo many times!
>>>> 
>>>> 
>>>> On 19 March 2013 17:51, Chuck Hill <ch...@global-village.net> wrote:
>>>> Hi Matteo,
>>>> 
>>>> You have one or more Zombie (aka Immortal) Sessions, as shown by stack 
>>>> traces like this:
>>>> "WorkerThread11" prio=10 tid=0x0000000041848800 nid=0x1010 in 
>>>> Object.wait() [0x00007f16f7cfa000]
>>>>  java.lang.Thread.State: WAITING (on object monitor)
>>>>       at java.lang.Object.wait(Native Method)
>>>>       - waiting on <0x00000000d120b328> (a 
>>>> com.webobjects.appserver.WOSessionStore$TimeoutEntry)
>>>>       at java.lang.Object.wait(Object.java:485)
>>>>       at 
>>>> com.webobjects.appserver.WOSessionStore.checkOutSessionWithID(WOSessionStore.java:191)
>>>>       - locked <0x00000000d120b328> (a 
>>>> com.webobjects.appserver.WOSessionStore$TimeoutEntry)
>>>>       at 
>>>> com.webobjects.appserver.WOApplication.restoreSessionWithID(WOApplication.java:1913)
>>>>       at 
>>>> er.extensions.appserver.ERXApplication.restoreSessionWithID(ERXApplication.java:2403)
>>>>       at 
>>>> er.extensions.appserver.ERXWOContext.existingSession(ERXWOContext.java:57)
>>>>       at 
>>>> er.extensions.appserver.ERXWOContext.hasSession(ERXWOContext.java:69)
>>>>       at 
>>>> com.webobjects.appserver.WOAction.existingSession(WOAction.java:190)
>>>>       at com.tla.calendar.DirectAction.goToAction(DirectAction.java:454)
>>>> 
>>>> 
>>>> This likely has one of two causes:
>>>> 1. The application is getting OutOfMemory errors, which can leave the 
>>>> session store in an insane state
>>>> 2. The app is throwing an exception from sleep() in Session.  If you 
>>>> overrride sleep() it should use a try...finally block
>>>> 
>>>> public void sleep() {
>>>>       try {
>>>>               // Your code here!
>>>>       } finally {
>>>>               super.sleep();
>>>>       }
>>>> }
>>>> 
>>>> 
>>>> Chuck
>>>> 
>>>> 
>>>> 
>>>> On 2013-03-19, at 9:38 AM, Altera WO Team wrote:
>>>> 
>>>>> Hi all,
>>>>> 
>>>>> I'm having a strange issue on a WO installation on EC2 (oracle jvm).
>>>>> Same strange application which had immortal sessions…
>>>>> 
>>>>> Sometimes (quite rarely) a bounced application (put in refuse new 
>>>>> sessions) never quits and it's not accessible from JavaMonitor.
>>>>> If I look at the logs i see:
>>>>> 
>>>>> Mar 19 12:38:52 B2C[2002] (ERXNSLogLog4jBridge.java:44) WARN  NSLog  - 
>>>>> <com.tla.calendar.Application>: refusing new clients and below min active 
>>>>> session threshold
>>>>> Mar 19 12:38:52 B2C[2002] (ERXNSLogLog4jBridge.java:44) WARN  NSLog  - 
>>>>> <com.tla.calendar.Application>: about to terminate...
>>>>> 
>>>>> The only thing left is to kill the instance… Which is not nice.
>>>>> 
>>>>> I'm not overriding the terminate() method in Application.
>>>>> 
>>>>> I am attaching a stack trace if it helps.
>>>>> <B2Cjstack.txt>
>>>>> 
>>>>> Thanks,
>>>>> 
>>>>> 
>>>>> 
>>>>> Matteo Centro
>>>>> _______________________________________________
>>>>> 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
>>>> Executive Managing Partner, VP Development and Technical Services
>>>> 
>>>> 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/simon%40potwells.co.uk
>>>> 
>>>> This email sent to si...@potwells.co.uk
>>>> 
>>> 
>>> 
>> 
>> -- 
>> Chuck Hill             
>> Executive Managing Partner, VP Development and Technical Services
>> 
>> 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/mastermind%40knuckleheads.net
> 
> This email sent to masterm...@knuckleheads.net


 _______________________________________________
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