My fix is not in CVS.  I checked the trunk of LateralCacheFactory yesterday.
I attached the LateralCacheFactory with the initial email I sent (and
yeserdays email), however since this was back in June, this may not be the
latest LateralCacheFactory I modified.

If there is something else I need to do to get this checked in, let me know.
Thanks.

Karl


----- Original Message -----
From: "Aaron Smuts" <[EMAIL PROTECTED]>
To: "'Turbine JCS Developers List'" <[EMAIL PROTECTED]>;
<[EMAIL PROTECTED]>
Sent: Wednesday, December 03, 2003 1:01 AM
Subject: RE: Problem configuring Lateral TCP Cache


> Is your fix in cvs?
>
> > -----Original Message-----
> > From: Karl Baum [mailto:[EMAIL PROTECTED]
> > Sent: Tuesday, December 02, 2003 1:30 PM
> > To: [EMAIL PROTECTED]
> > Subject: RE: Problem configuring Lateral TCP Cache
> >
> >
> > In regards to the Lateral cache and three servers.  I noticed a bug
> back
> > in June in regards to having more than 2 laterally configured cache
> > servers.  It is a few lines of code to fix and from what I could tell,
> > three or more lateral servers will not work correctly without the fix.
> > I checked the laters LateralCacheFactory from the trunk and did not
> > notice the fix.  All of the information from the email is below.
> >
> >
> > -----Original Message-----
> > From: Baum, Karl
> > To: Turbine JCS Developers List
> > Sent: 6/15/2003 10:22 PM
> > Subject: TCP Lateral Caching bug fix
> >
> > I noticed a problem with lateral caching when configuring two or more
> > TCP servers.  The problem has to do with lateral cache recovery
> process
> > when losing connections.  I have attached a fix.
> >
> >
> >
> >
> >
> > Main Issue:
> >
> >
> >
> > I have three lateral cache servers.  I start one server first.
> Because
> > the other lateral TCP servers are not yet running, the first server
> > fails to connect to the others and begins recovery mode.  In recovery
> > mode, a LateralCacheMonitor thread runs every 20 seconds trying to
> > create connections to the other servers.  I noticed the thread was
> only
> > trying to create a connection to one of the other cache servers.  The
> > result was that when I brought the other two servers up, the initial
> > server only successfully connected to one out of the other two
> servers.
> > This was always the last of the TCP servers in the comma separated
> list.
> >
> >
> >
> > Cause:
> >
> >
> >
> > The problem is caused by the reuse of the same LateralCacheAttributes
> > object.  For each of the TCP servers, a LateralCacheManager is
> created.
> > Each LateralCacheManager is created with an instance of
> > LateraCacheAttributes.  Before instantiating the LateralCacheManager,
> > the specific TCP server is set on the LateralCacheAttributes object.
> > Since the same instance of LateralCacheAttributes is used each time,
> the
> > call to set the TCP server overwrites the previous TCP server each
> time.
> > In recovery mode, the TCP server property on the
> LateralCacheAttributes
> > is used to reestablish the connections.  Recovery mode will always
> > attempt to reestablish a connection to the last of the TCP servers
> since
> > this was the last server to be set in the LateralCacheAttributes
> object.
> >
> >
> >
> > Fix:
> >
> >
> >
> > To fix this issue, I modified the class LateralCacheFactory.  Now
> > LateralCacheFactory calls set TCP server on a clone of the
> > LateralCacheAttributes object.  As a result, the previous TCP server
> is
> > not overwritten.
> >
> >
> >
> > CVS diff:
> >
> >
> >
> > $ cvs -d :pserver:[EMAIL PROTECTED]:/home/cvspublic diff -u
> > LateralCacheFactory.java
> >
> > Index: LateralCacheFactory.java
> >
> > ===================================================================
> >
> > RCS file:
> >
> /home/cvspublic/jakarta-turbine-jcs/src/java/org/apache/jcs/auxiliary/la
> > teral/LateralCacheFactory.java,v
> >
> > retrieving revision 1.4
> >
> > diff -u -r1.4 LateralCacheFactory.java
> >
> > --- LateralCacheFactory.java    7 Aug 2002 15:28:12 -0000       1.4
> >
> > +++ LateralCacheFactory.java    16 Jun 2003 02:14:43 -0000
> >
> > @@ -73,15 +73,16 @@
> >
> >              StringTokenizer it = new StringTokenizer( lac.tcpServers,
> > "," );
> >
> >              while ( it.hasMoreElements() )
> >
> >              {
> >
> > +               LateralCacheAttributes lacClone =
> > (LateralCacheAttributes)lac.copy();
> >
> >                  //String server = (String)it.next();
> >
> >                  String server = ( String ) it.nextElement();
> >
> >                  if ( log.isDebugEnabled() )
> >
> >                  {
> >
> >                    log.debug( "tcp server = " +  server );
> >
> >                  }
> >
> > -                lac.setTcpServer( server );
> >
> > -                LateralCacheManager lcm =
> > LateralCacheManager.getInstance( lac );
> >
> > -                ICache ic = lcm.getCache( lac.getCacheName() );
> >
> > +                lacClone.setTcpServer( server );
> >
> > +                LateralCacheManager lcm =
> > LateralCacheManager.getInstance( lacClone );
> >
> > +                ICache ic = lcm.getCache( lacClone.getCacheName() );
> >
> >                  if ( ic != null )
> >
> >                  {
> >
> >                      noWaits.add( ic );
> >
> >  <<LateralCacheFactory.java>>  <<LateralCacheAttributes.java>>
> > <<LateralCacheFactory.java>>
>

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

Reply via email to