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 <eric.sm...@fks.be <mailto:eric.sm...@fks.be>> 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 <eric.sm...@fks.be
    <mailto:eric.sm...@fks.be>> 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
        <christian.muel...@os-solutions.at
        <mailto:christian.muel...@os-solutions.at>> 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
        Geoserver-users@lists.sourceforge.net  
<mailto:Geoserver-users@lists.sourceforge.net>
        https://lists.sourceforge.net/lists/listinfo/geoserver-users


-- Eric smetseric.sm...@fks.be <mailto:eric.sm...@fks.be>
        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
        Geoserver-users@lists.sourceforge.net
        <mailto:Geoserver-users@lists.sourceforge.net>
        https://lists.sourceforge.net/lists/listinfo/geoserver-users




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



-- Eric smetseric.sm...@fks.be <mailto:eric.sm...@fks.be>
    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
Geoserver-users@lists.sourceforge.net
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
Geoserver-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/geoserver-users

Reply via email to