asmuts      02/05/09 14:47:11

  Modified:    src/java/org/apache/jcs/engine/memory/shrinking
                        ShrinkerThread.java
  Log:
  There is a small memory leak.  Fixed a bug and added more logging.
  
  Will look into the leak tomorrow.
  
  Revision  Changes    Path
  1.4       +40 -23    
jakarta-turbine-jcs/src/java/org/apache/jcs/engine/memory/shrinking/ShrinkerThread.java
  
  Index: ShrinkerThread.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-turbine-jcs/src/java/org/apache/jcs/engine/memory/shrinking/ShrinkerThread.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- ShrinkerThread.java       9 May 2002 19:11:51 -0000       1.3
  +++ ShrinkerThread.java       9 May 2002 21:47:11 -0000       1.4
  @@ -67,7 +67,6 @@
   import org.apache.jcs.engine.control.event.behavior.IElementEvent;
   import org.apache.jcs.engine.control.event.behavior.IElementEventConstants;
   
  -
   /**
    *  A background memory shrinker. Just started. <u>DON'T USE</u>
    *
  @@ -138,7 +137,7 @@
               log.debug( "Shrinking" );
           }
   
  -        // not thread safe.  Copuld cause problems.  Only call remove directly
  +        // not thread safe.  Could cause problems.  Only call remove directly
           // to the map.
           try
           {
  @@ -152,6 +151,15 @@
   
                   long now = System.currentTimeMillis();
   
  +                if ( log.isDebugEnabled() )
  +                {
  +                    log.debug( "now = " + now );
  +                    log.debug( "!me.ce.getElementAttributes().getIsEternal() = " + 
!me.ce.getElementAttributes().getIsEternal() );
  +                    log.debug( "me.ce.getElementAttributes().getMaxLifeSeconds() = 
" + me.ce.getElementAttributes().getMaxLifeSeconds() );
  +                    log.debug( "now - me.ce.getElementAttributes().getCreateTime() 
= " + String.valueOf( now - me.ce.getElementAttributes().getCreateTime() ) );
  +                    log.debug( "me.ce.getElementAttributes().getMaxLifeSeconds() * 
1000 = " + me.ce.getElementAttributes().getMaxLifeSeconds() * 1000 );
  +                }
  +
                   // Memory idle, to disk shrinkage
                   if ( cache.getCacheAttributes().getMaxMemoryIdleTimeSeconds() != -1 
)
                   {
  @@ -166,7 +174,8 @@
                           cache.waterfal( me );
                       }
                   }
  -                else if ( !me.ce.getElementAttributes().getIsEternal() )
  +
  +                if ( !me.ce.getElementAttributes().getIsEternal() )
                   {
                       // Exceeded maxLifeSeconds
                       if ( ( me.ce.getElementAttributes().getMaxLifeSeconds() != -1 ) 
&& ( now - me.ce.getElementAttributes().getCreateTime() ) > ( 
me.ce.getElementAttributes().getMaxLifeSeconds() * 1000 ) )
  @@ -178,17 +187,19 @@
   
                           // handle event, might move to a new method
                           ArrayList eventHandlers = 
me.ce.getElementAttributes().getElementEventHandlers();
  -                        if ( log.isDebugEnabled() )
  +                        if ( eventHandlers != null )
                           {
  -                            log.debug( "Handlers are registered.  Event -- 
ELEMENT_EVENT_EXCEEDED_MAXLIFE_BACKGROUND" );
  -                        }
  -                        if ( eventHandlers != null ) {
  -                          IElementEvent event = new ElementEvent(me.ce, 
IElementEventConstants.ELEMENT_EVENT_EXCEEDED_MAXLIFE_BACKGROUND);
  -                          Iterator hIt = eventHandlers.iterator();
  -                          while ( hIt.hasNext() ) {
  -                            IElementEventHandler hand = 
(IElementEventHandler)hIt.next();
  -                            hand.handleElementEvent(event);
  -                          }
  +                            if ( log.isDebugEnabled() )
  +                            {
  +                                log.debug( "Handlers are registered.  Event -- 
ELEMENT_EVENT_EXCEEDED_MAXLIFE_BACKGROUND" );
  +                            }
  +                            IElementEvent event = new ElementEvent( me.ce, 
IElementEventConstants.ELEMENT_EVENT_EXCEEDED_MAXLIFE_BACKGROUND );
  +                            Iterator hIt = eventHandlers.iterator();
  +                            while ( hIt.hasNext() )
  +                            {
  +                                IElementEventHandler hand = ( IElementEventHandler 
) hIt.next();
  +                                hand.handleElementEvent( event );
  +                            }
                           }
   
                           itr.remove();
  @@ -209,25 +220,31 @@
   
                           // handle event, might move to a new method
                           ArrayList eventHandlers = 
me.ce.getElementAttributes().getElementEventHandlers();
  -                        if ( log.isDebugEnabled() )
  +                        if ( eventHandlers != null )
                           {
  -                            log.debug( "Handlers are registered.  Event -- 
ELEMENT_EVENT_EXCEEDED_IDLETIME_BACKGROUND" );
  -                        }
  -                        if ( eventHandlers != null ) {
  -                          IElementEvent event = new ElementEvent(me.ce, 
IElementEventConstants.ELEMENT_EVENT_EXCEEDED_IDLETIME_BACKGROUND);
  -                          Iterator hIt = eventHandlers.iterator();
  -                          while ( hIt.hasNext() ) {
  -                            IElementEventHandler hand = 
(IElementEventHandler)hIt.next();
  -                            hand.handleElementEvent(event);
  -                          }
  +                            if ( log.isDebugEnabled() )
  +                            {
  +                                log.debug( "Handlers are registered.  Event -- 
ELEMENT_EVENT_EXCEEDED_IDLETIME_BACKGROUND" );
  +                            }
  +                            IElementEvent event = new ElementEvent( me.ce, 
IElementEventConstants.ELEMENT_EVENT_EXCEEDED_IDLETIME_BACKGROUND );
  +                            Iterator hIt = eventHandlers.iterator();
  +                            while ( hIt.hasNext() )
  +                            {
  +                                IElementEventHandler hand = ( IElementEventHandler 
) hIt.next();
  +                                hand.handleElementEvent( event );
  +                            }
                           }
   
                           itr.remove();
  +
                           //cache.remove( me.ce.getKey() );
                       }
                   }
   
               }
  +
  +            itr = null;
  +
           }
           catch ( Throwable t )
           {
  
  
  

--
To unsubscribe, e-mail:   <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>

Reply via email to