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]
