Author: fhanik Date: Tue Mar 21 12:35:39 2006 New Revision: 387616 URL: http://svn.apache.org/viewcvs?rev=387616&view=rev Log: Worked out some bugs in the map
Modified: tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/ChannelException.java tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/tcp/AbstractSender.java tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/tcp/nio/NioSender.java tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/tcp/nio/ParallelNioSender.java tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/tipis/AbstractReplicatedMap.java tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/tipis/LazyReplicatedMap.java Modified: tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/ChannelException.java URL: http://svn.apache.org/viewcvs/tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/ChannelException.java?rev=387616&r1=387615&r2=387616&view=diff ============================================================================== --- tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/ChannelException.java (original) +++ tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/ChannelException.java Tue Mar 21 12:35:39 2006 @@ -43,6 +43,21 @@ super(cause); } + public String getMessage() { + StringBuffer buf = new StringBuffer(super.getMessage()); + if (faultyMembers==null || faultyMembers.size() == 0 ) { + buf.append("; No faulty members identified."); + } else { + buf.append("; Faulty members:"); + for ( int i=0; i<faultyMembers.size(); i++ ) { + Member mbr = (Member)faultyMembers.get(i); + buf.append(mbr.getName()); + buf.append("; "); + } + } + return buf.toString(); + } + public void addFaultyMember(Member mbr) { if ( this.faultyMembers==null ) this.faultyMembers = new ArrayList(); faultyMembers.add(mbr); Modified: tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/tcp/AbstractSender.java URL: http://svn.apache.org/viewcvs/tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/tcp/AbstractSender.java?rev=387616&r1=387615&r2=387616&view=diff ============================================================================== --- tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/tcp/AbstractSender.java (original) +++ tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/tcp/AbstractSender.java Tue Mar 21 12:35:39 2006 @@ -48,7 +48,7 @@ private Member destination; private InetAddress address; private int port; - private int maxRetryAttempts = 0;//zero resends + private int maxRetryAttempts = 2;//zero resends private int attempt; public AbstractSender() { Modified: tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/tcp/nio/NioSender.java URL: http://svn.apache.org/viewcvs/tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/tcp/nio/NioSender.java?rev=387616&r1=387615&r2=387616&view=diff ============================================================================== --- tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/tcp/nio/NioSender.java (original) +++ tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/tcp/nio/NioSender.java Tue Mar 21 12:35:39 2006 @@ -147,9 +147,7 @@ ackbuf.append(readbuf,read); readbuf.clear(); if (ackbuf.doesPackageExist() ) { - System.out.print("Reading ack:"); boolean result = Arrays.equals(ackbuf.extractDataPackage(true),org.apache.catalina.tribes.tcp.Constants.ACK_DATA); - System.out.println(result); return result; } else { return false; Modified: tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/tcp/nio/ParallelNioSender.java URL: http://svn.apache.org/viewcvs/tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/tcp/nio/ParallelNioSender.java?rev=387616&r1=387615&r2=387616&view=diff ============================================================================== --- tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/tcp/nio/ParallelNioSender.java (original) +++ tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/tcp/nio/ParallelNioSender.java Tue Mar 21 12:35:39 2006 @@ -120,7 +120,7 @@ state.setSuspect(); byte[] data = sender.getMessage(); int attempt = sender.getAttempt()+1; - if ( sender.getAttempt() >= maxAttempts && maxAttempts>0 ) { + if ( sender.getAttempt() <= maxAttempts && maxAttempts>0 ) { try { sender.disconnect(); sender.connect(); @@ -130,7 +130,7 @@ state.setFailing(); } } else { - ChannelException cx = new ChannelException(x); + ChannelException cx = new ChannelException("Send failed, attempt:"+sender.getAttempt()+" max:"+maxAttempts,x); cx.addFaultyMember(sender.getDestination()); throw cx; }//end if Modified: tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/tipis/AbstractReplicatedMap.java URL: http://svn.apache.org/viewcvs/tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/tipis/AbstractReplicatedMap.java?rev=387616&r1=387615&r2=387616&view=diff ============================================================================== --- tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/tipis/AbstractReplicatedMap.java (original) +++ tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/tipis/AbstractReplicatedMap.java Tue Mar 21 12:35:39 2006 @@ -152,6 +152,7 @@ MapMessage msg = new MapMessage(this.mapContextName, MapMessage.MSG_STOP, false, null, null, null, wrap(channel.getLocalMember(false))); if (channel != null) channel.send(channel.getMembers(), msg,channel.SEND_OPTIONS_DEFAULT); + } catch (ChannelException x) { log.warn("Unable to send stop message.", x); } @@ -225,7 +226,9 @@ } try { - channel.send(entry.getBackupNodes(), msg,channel.SEND_OPTIONS_DEFAULT); + if ( entry.getBackupNodes()!= null && entry.getBackupNodes().length > 0 ) { + channel.send(entry.getBackupNodes(), msg, channel.SEND_OPTIONS_DEFAULT); + } } catch (ChannelException x) { log.error("Unable to replicate data.", x); } @@ -401,7 +404,12 @@ } } else { entry.setValue(mapmsg.getValue()); + diff.setOwner(getMapOwner()); } //end if + } else if (mapmsg.getValue() instanceof ReplicatedMapEntry) { + ReplicatedMapEntry re = (ReplicatedMapEntry)mapmsg.getValue(); + re.setOwner(getMapOwner()); + entry.setValue(mapmsg.getValue()); } else { entry.setValue(mapmsg.getValue()); } //end if @@ -420,7 +428,7 @@ public void mapMemberAdded(Member member) { //select a backup node if we don't have one synchronized (mapMembers) { - mapMembers.add(member); + if (!mapMembers.contains(member) ) mapMembers.add(member); } synchronized (stateMutex) { Iterator i = super.entrySet().iterator(); @@ -725,7 +733,7 @@ break; } case MSG_START: - MSG_STOP: { + case MSG_STOP: { nodes = readMembers(in); break; } @@ -779,13 +787,17 @@ break; } case MSG_START: - MSG_STOP: { - writeMembers(out,nodes); - break; + case MSG_STOP: { + writeMembers(out,nodes); + break; } } //switch } //writeExternal - + + /** + * shallow clone + * @return Object + */ public Object clone() { return new MapMessage(this.mapId, this.msgtype, this.diff, this.key, this.value, this.diffvalue, this.nodes); } Modified: tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/tipis/LazyReplicatedMap.java URL: http://svn.apache.org/viewcvs/tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/tipis/LazyReplicatedMap.java?rev=387616&r1=387615&r2=387616&view=diff ============================================================================== --- tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/tipis/LazyReplicatedMap.java (original) +++ tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/tipis/LazyReplicatedMap.java Tue Mar 21 12:35:39 2006 @@ -158,7 +158,10 @@ msg = (MapMessage) resp[0].getMessage(); Member[] backup = entry.getBackupNodes(); - + if ( entry.getValue() instanceof ReplicatedMapEntry ) { + ReplicatedMapEntry val = (ReplicatedMapEntry)entry.getValue(); + val.setOwner(getMapOwner()); + } if (entry.isBackup()) { //select a new backup node backup = publishEntryInfo(key, msg.getValue()); --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]