Slightly different outcome this time around for me. By the end of the day all of my AJP threads ended up in a RUNNABLE state, though not apparently doing anything. I'm not sure whether this is a progression of this issue or something entirely different but the result is the same - an unresponsive application.

"ajp-bio-8109-exec-937" daemon prio=10 tid=0x00002aaab533d000 nid=0x14d0 runnable [0x000000004d9b1000]
   java.lang.Thread.State: RUNNABLE
        at java.net.SocketInputStream.socketRead0(Native Method)
        at java.net.SocketInputStream.read(SocketInputStream.java:129)
        at org.apache.coyote.ajp.AjpProcessor.read(AjpProcessor.java:309)
at org.apache.coyote.ajp.AjpProcessor.readMessage(AjpProcessor.java:364) at org.apache.coyote.ajp.AjpProcessor.process(AjpProcessor.java:128) at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589) at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310) - locked <0x0000000785dfec70> (a org.apache.tomcat.util.net.SocketWrapper) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
        at java.lang.Thread.run(Thread.java:662)

Has anyone else done any testing of the new code?

Regards,
Andrew

On 23/08/2013 09:51, Andrew Miskelly wrote:
Hi Christian and Eric,

Thanks for the work you've put in thus far. I have deployed the updated classes and will let you know how things are going once GeoServer has been running for a while.

Regards,
Andrew

On 23/08/2013 01:33, Christian Mueller wrote:
Hi  all

I attached LRUAuthenticationCacheImpl.class and LRUAuthenticationCacheImpl$1.class for testing. These classes includes the code snippet proposed by Eric. Please replace these classes in

WEB-INF/lib/main-<version>.jar

Let me know about the results.

If the problem persists, I will publish a version without the timer task. This should resolve the issue. The disadvantage would be that authentication tokens are hold in memory longer than needed, the functionality would not change.

Cheers
Christian




On Thu, Aug 22, 2013 at 5:18 PM, Eric Smets <[email protected] <mailto:[email protected]>> wrote:

    Op 22/08/2013 16:30, Christian Mueller schreef:
    Hi Eric

    Only to be sure, the above code snippet solves the issue ?
    We have only tested this modification, this came up after an
    internal discussion.
    We can not confirm that this solves the original issue, but this
    solution should do a better job.

    We could use the testscript from Andrew to confirm the solution.




    If it does, I will publish a modified class file for the other
    users to test.

    My current idea was to remove the time task completely, but your
    solution would be better and safer.

    Please let me know








    On Thu, Aug 22, 2013 at 4:09 PM, Eric Smets <[email protected]
    <mailto:[email protected]>> wrote:

        Hello,

        We had/have  on a production machine the same issue.
        Following the discuss we looked into the implementation of
        LRUAuthenticationCacheImpl

        The origin of the problem is not clear but the result is
        only one loop over the keys.

        LRUAuthenticationCacheImpl. Some addional logging is also
        added but could be removed

        The changed snipped follows
        ----

           TimerTask removeExpiredTask = new TimerTask() {
                @Override
                public void run() {
                    LOGGER.fine("Start searching for expired
        authentication tokens");
                    writeLock.lock();
                    try {
                         int removed = 0;
                         long currentTime=System.currentTimeMillis();

                         if (cache.size() > 50) LOGGER.info("AuthKey
        Cache entries: " + cache.size());

        Iterator<AuthenticationCacheEntry> iter =
        cache.values().iterator();

                         while (iter.hasNext())
                         {
                            if (iter.next().hasExpired(currentTime))
                            {
                               iter.remove();
                               removed++;
                            }
                         }
                        LOGGER.fine("Number of expired
        authentication tokens found: " + removed);
                    } finally {
                        writeLock.unlock();
                    }
                    LOGGER.fine("End searching for expired
        authentication tokens");
                }
            };

        Op 22/08/2013 11:58, Andrea Aime schreef:
        On Thu, Aug 22, 2013 at 11:52 AM, Christian Mueller
        <[email protected]
        <mailto:[email protected]>> wrote:

            Hi Andrea

            The problem is that most cache implementations have
            global expire time settings. We need global expire
            times as default but it must be possible to assign
            expire times to individual entries. As an example,
            digest authentication has its own expire times and it
            does not make sense if the cache has expire times
            larger than the configured expire times of the digest
            authentication filter. A cache entry created by digest
            authentication has expire times limited by the digest
            authentication configuration.

            The cleaner thread is here to guarantee that an unused
            authentication token is not cached for a long time
            period, this is a security risk.


            I am thinking about using
            Collections.synchronizedMap(..) and to kick out all the
            locking stuff.


        Ugh, it would limit scalability quite a bit. The Guava
        CacheBuilder should be a much more performant solution.
        Once built you can treat it as a regular map, it handles
        LRU and concurrency internally.

        Cheers
        Andrea

-- ==
        Our support, Your Success! Visit
        http://opensdi.geo-solutions.it for more information.
        ==

        Ing. Andrea Aime
        @geowolf
        Technical Lead

        GeoSolutions S.A.S.
        Via Poggio alle Viti 1187
        55054  Massarosa (LU)
        Italy
        phone: +39 0584 962313 <tel:%2B39%200584%20962313>
        fax: +39 0584 1660272 <tel:%2B39%200584%201660272>
        mob: +39  339 8844549 <tel:%2B39%20%C2%A0339%208844549>

        http://www.geo-solutions.it
        http://twitter.com/geosolutions_it

        -------------------------------------------------------


        
------------------------------------------------------------------------------
        Introducing Performance Central, a new site from SourceForge and
        AppDynamics. Performance Central is your source for news, insights,
        analysis and resources for efficient Application Performance Management.
        Visit us today!
        
http://pubads.g.doubleclick.net/gampad/clk?id=48897511&iu=/4140/ostg.clktrk


        _______________________________________________
        Geoserver-users mailing list
        [email protected]  
<mailto:[email protected]>
        https://lists.sourceforge.net/lists/listinfo/geoserver-users


-- Eric [email protected] <mailto:[email protected]>
        FKS bvba - Formal and Knowledge Systemshttp://www.fks.be/
        Schampbergstraat 32                           Tel:++32-(0)11-21 49 11  
<tel:%2B%2B32-%280%2911-21%2049%2011>
        B-3511 Hasselt                                Fax:++32-(0)11-22 04 19  
<tel:%2B%2B32-%280%2911-22%2004%2019>


        
------------------------------------------------------------------------------
        Introducing Performance Central, a new site from SourceForge and
        AppDynamics. Performance Central is your source for news,
        insights,
        analysis and resources for efficient Application Performance
        Management.
        Visit us today!
        
http://pubads.g.doubleclick.net/gampad/clk?id=48897511&iu=/4140/ostg.clktrk
        _______________________________________________
        Geoserver-users mailing list
        [email protected]
        <mailto:[email protected]>
        https://lists.sourceforge.net/lists/listinfo/geoserver-users




-- DI Christian Mueller MSc (GIS), MSc (IT-Security)
    OSS Open Source Solutions GmbH



-- Eric [email protected] <mailto:[email protected]>
    FKS bvba - Formal and Knowledge Systemshttp://www.fks.be/
    Schampbergstraat 32                           Tel:++32-(0)11-21 49 11  
<tel:%2B%2B32-%280%2911-21%2049%2011>
    B-3511 Hasselt                                Fax:++32-(0)11-22 04 19  
<tel:%2B%2B32-%280%2911-22%2004%2019>




--
DI Christian Mueller MSc (GIS), MSc (IT-Security)
OSS Open Source Solutions GmbH



------------------------------------------------------------------------------
Introducing Performance Central, a new site from SourceForge and
AppDynamics. Performance Central is your source for news, insights,
analysis and resources for efficient Application Performance Management.
Visit us today!
http://pubads.g.doubleclick.net/gampad/clk?id=48897511&iu=/4140/ostg.clktrk


_______________________________________________
Geoserver-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/geoserver-users



------------------------------------------------------------------------------
Introducing Performance Central, a new site from SourceForge and
AppDynamics. Performance Central is your source for news, insights,
analysis and resources for efficient Application Performance Management.
Visit us today!
http://pubads.g.doubleclick.net/gampad/clk?id=48897511&iu=/4140/ostg.clktrk


_______________________________________________
Geoserver-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/geoserver-users

------------------------------------------------------------------------------
Introducing Performance Central, a new site from SourceForge and 
AppDynamics. Performance Central is your source for news, insights, 
analysis and resources for efficient Application Performance Management. 
Visit us today!
http://pubads.g.doubleclick.net/gampad/clk?id=48897511&iu=/4140/ostg.clktrk
_______________________________________________
Geoserver-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/geoserver-users

Reply via email to