Author: pero Date: Mon Aug 13 11:32:58 2007 New Revision: 565469 URL: http://svn.apache.org/viewvc?view=rev&rev=565469 Log: Backport Tomcat 6 cluster socket parameter.
Modified: tomcat/container/tc5.5.x/modules/cluster/src/share/org/apache/catalina/cluster/tcp/ClusterReceiverBase.java tomcat/container/tc5.5.x/modules/cluster/src/share/org/apache/catalina/cluster/tcp/DataSender.java tomcat/container/tc5.5.x/modules/cluster/src/share/org/apache/catalina/cluster/tcp/ReplicationListener.java tomcat/container/tc5.5.x/modules/cluster/src/share/org/apache/catalina/cluster/tcp/SocketReplicationListener.java tomcat/container/tc5.5.x/modules/cluster/src/share/org/apache/catalina/cluster/tcp/mbeans-descriptors.xml tomcat/container/tc5.5.x/webapps/docs/changelog.xml Modified: tomcat/container/tc5.5.x/modules/cluster/src/share/org/apache/catalina/cluster/tcp/ClusterReceiverBase.java URL: http://svn.apache.org/viewvc/tomcat/container/tc5.5.x/modules/cluster/src/share/org/apache/catalina/cluster/tcp/ClusterReceiverBase.java?view=diff&rev=565469&r1=565468&r2=565469 ============================================================================== --- tomcat/container/tc5.5.x/modules/cluster/src/share/org/apache/catalina/cluster/tcp/ClusterReceiverBase.java (original) +++ tomcat/container/tc5.5.x/modules/cluster/src/share/org/apache/catalina/cluster/tcp/ClusterReceiverBase.java Mon Aug 13 11:32:58 2007 @@ -93,6 +93,16 @@ private long lastChecked = System.currentTimeMillis(); + private int rxBufSize = 43800; + private int txBufSize = 25188; + private boolean tcpNoDelay = true; + private boolean soKeepAlive = false; + private boolean ooBInline = true; + private boolean soReuseAddress = true; + private boolean soLingerOn = true; + private int soLingerTime = 3; + private int soTrafficClass = 0x04 | 0x08 | 0x010; + private int timeout = 3000; //3 seconds /** * Compress message data bytes @@ -104,6 +114,146 @@ */ private ObjectName objectName; + /** + * @return the ooBInline + */ + public boolean isOoBInline() { + return ooBInline; + } + + /** + * @param ooBInline the ooBInline to set + */ + public void setOoBInline(boolean ooBInline) { + this.ooBInline = ooBInline; + } + + /** + * @return the rxBufSize + */ + public int getRxBufSize() { + return rxBufSize; + } + + /** + * @param rxBufSize the rxBufSize to set + */ + public void setRxBufSize(int rxBufSize) { + this.rxBufSize = rxBufSize; + } + + /** + * @return the soKeepAlive + */ + public boolean isSoKeepAlive() { + return soKeepAlive; + } + + /** + * @param soKeepAlive the soKeepAlive to set + */ + public void setSoKeepAlive(boolean soKeepAlive) { + this.soKeepAlive = soKeepAlive; + } + + /** + * @return the soLingerOn + */ + public boolean isSoLingerOn() { + return soLingerOn; + } + + /** + * @param soLingerOn the soLingerOn to set + */ + public void setSoLingerOn(boolean soLingerOn) { + this.soLingerOn = soLingerOn; + } + + /** + * @return the soLingerTime + */ + public int getSoLingerTime() { + return soLingerTime; + } + + /** + * @param soLingerTime the soLingerTime to set + */ + public void setSoLingerTime(int soLingerTime) { + this.soLingerTime = soLingerTime; + } + + /** + * @return the soReuseAddress + */ + public boolean isSoReuseAddress() { + return soReuseAddress; + } + + /** + * @param soReuseAddress the soReuseAddress to set + */ + public void setSoReuseAddress(boolean soReuseAddress) { + this.soReuseAddress = soReuseAddress; + } + + /** + * @return the soTrafficClass + */ + public int getSoTrafficClass() { + return soTrafficClass; + } + + /** + * @param soTrafficClass the soTrafficClass to set + */ + public void setSoTrafficClass(int soTrafficClass) { + this.soTrafficClass = soTrafficClass; + } + + /** + * @return the tcpNoDelay + */ + public boolean isTcpNoDelay() { + return tcpNoDelay; + } + + /** + * @param tcpNoDelay the tcpNoDelay to set + */ + public void setTcpNoDelay(boolean tcpNoDelay) { + this.tcpNoDelay = tcpNoDelay; + } + + /** + * @return the timeout + */ + public int getTimeout() { + return timeout; + } + + /** + * @param timeout the timeout to set + */ + public void setTimeout(int timeout) { + this.timeout = timeout; + } + + /** + * @return the txBufSize + */ + public int getTxBufSize() { + return txBufSize; + } + + /** + * @param txBufSize the txBufSize to set + */ + public void setTxBufSize(int txBufSize) { + this.txBufSize = txBufSize; + } + /** * @return Returns the doListen. */ Modified: tomcat/container/tc5.5.x/modules/cluster/src/share/org/apache/catalina/cluster/tcp/DataSender.java URL: http://svn.apache.org/viewvc/tomcat/container/tc5.5.x/modules/cluster/src/share/org/apache/catalina/cluster/tcp/DataSender.java?view=diff&rev=565469&r1=565468&r2=565469 ============================================================================== --- tomcat/container/tc5.5.x/modules/cluster/src/share/org/apache/catalina/cluster/tcp/DataSender.java (original) +++ tomcat/container/tc5.5.x/modules/cluster/src/share/org/apache/catalina/cluster/tcp/DataSender.java Mon Aug 13 11:32:58 2007 @@ -54,7 +54,7 @@ /** * The descriptive information about this implementation. */ - private static final String info = "DataSender/2.1"; + private static final String info = "DataSender/2.2"; /** * receiver address @@ -92,11 +92,17 @@ */ private SenderState senderState = new SenderState(); - /** - * wait time for ack - */ - private long ackTimeout; - + private int rxBufSize = 25188; + private int txBufSize = 43800; + private long timeout = 3000; + private boolean tcpNoDelay = true; + private boolean soKeepAlive = false; + private boolean ooBInline = true; + private boolean soReuseAddress = true; + private boolean soLingerOn = false; + private int soLingerTime = 3; + private int soTrafficClass = 0x04 | 0x08 | 0x010; + /** * number of requests */ @@ -489,12 +495,178 @@ this.senderState.setReady(); } + /** + * @return the ooBInline + * @since 5.5.25 + */ + public boolean isOoBInline() { + return ooBInline; + } + + /** + * @param ooBInline the ooBInline to set + * @since 5.5.25 + */ + public void setOoBInline(boolean ooBInline) { + this.ooBInline = ooBInline; + } + + /** + * @return the rxBufSize + * @since 5.5.25 + */ + public int getRxBufSize() { + return rxBufSize; + } + + /** + * @param rxBufSize the rxBufSize to set + * @since 5.5.25 + */ + public void setRxBufSize(int rxBufSize) { + this.rxBufSize = rxBufSize; + } + + /** + * @return the soKeepAlive + * @since 5.5.25 + */ + public boolean isSoKeepAlive() { + return soKeepAlive; + } + + /** + * @param soKeepAlive the soKeepAlive to set + * @since 5.5.25 + */ + public void setSoKeepAlive(boolean soKeepAlive) { + this.soKeepAlive = soKeepAlive; + } + + /** + * @return the soLingerOn + * @since 5.5.25 + */ + public boolean isSoLingerOn() { + return soLingerOn; + } + + /** + * @param soLingerOn the soLingerOn to set + * @since 5.5.25 + */ + public void setSoLingerOn(boolean soLingerOn) { + this.soLingerOn = soLingerOn; + } + + /** + * @return the soLingerTime + * @since 5.5.25 + */ + public int getSoLingerTime() { + return soLingerTime; + } + + /** + * @param soLingerTime the soLingerTime to set + * @since 5.5.25 + */ + public void setSoLingerTime(int soLingerTime) { + this.soLingerTime = soLingerTime; + } + + /** + * @return the soReuseAddress + * @since 5.5.25 + */ + public boolean isSoReuseAddress() { + return soReuseAddress; + } + + /** + * @param soReuseAddress the soReuseAddress to set + * @since 5.5.25 + */ + public void setSoReuseAddress(boolean soReuseAddress) { + this.soReuseAddress = soReuseAddress; + } + + /** + * @return the soTrafficClass + * @since 5.5.25 + */ + public int getSoTrafficClass() { + return soTrafficClass; + } + + /** + * @param soTrafficClass the soTrafficClass to set + * @since 5.5.25 + */ + public void setSoTrafficClass(int soTrafficClass) { + this.soTrafficClass = soTrafficClass; + } + + /** + * @return the tcpNoDelay + * @since 5.5.25 + */ + public boolean isTcpNoDelay() { + return tcpNoDelay; + } + + /** + * @param tcpNoDelay the tcpNoDelay to set + * @since 5.5.25 + */ + public void setTcpNoDelay(boolean tcpNoDelay) { + this.tcpNoDelay = tcpNoDelay; + } + + /** + * @return the timeout + * @since 5.5.25 + */ + public long getTimeout() { + return timeout; + } + + /** + * @param timeout the timeout to set + * @since 5.5.25 + */ + public void setTimeout(long timeout) { + this.timeout = timeout; + } + + /** + * @return the txBufSize + * @since 5.5.25 + */ + public int getTxBufSize() { + return txBufSize; + } + + /** + * @param txBufSize the txBufSize to set + * @since 5.5.25 + */ + public void setTxBufSize(int txBufSize) { + this.txBufSize = txBufSize; + } + + /** + * @deprecated since 5.5.25 use timeout instead + */ public long getAckTimeout() { - return ackTimeout; + return timeout; } + /** + * @deprecated since 5.5.25 use timeout instead + */ public void setAckTimeout(long ackTimeout) { - this.ackTimeout = ackTimeout; + this.timeout = ackTimeout; } public long getKeepAliveTimeout() { @@ -693,7 +865,7 @@ try { createSocket(); if (isWaitForAck()) - socket.setSoTimeout((int) ackTimeout); + socket.setSoTimeout((int) getTimeout()); isSocketConnected = true; socketOpenCounter++; this.keepAliveCount = 0; @@ -720,12 +892,22 @@ protected void createSocket() throws IOException, SocketException { SocketAddress sockAddr = new InetSocketAddress(getAddress(), getPort()); socket = new Socket(); - int timeout = (int) getAckTimeout(); + int timeout = (int) getTimeout(); if (timeout > 0) { socket.connect(sockAddr, timeout); } else { socket.connect(sockAddr); } + socket.setSendBufferSize(getTxBufSize()); + socket.setReceiveBufferSize(getRxBufSize()); + socket.setSoTimeout( (int) getTimeout()); + socket.setTcpNoDelay(isTcpNoDelay()); + socket.setKeepAlive(isSoKeepAlive()); + socket.setReuseAddress(isSoReuseAddress()); + socket.setOOBInline(isOoBInline()); + socket.setSoLinger(isSoLingerOn(),getSoLingerTime()); + socket.setTrafficClass(getSoTrafficClass()); + } /** @@ -894,7 +1076,7 @@ out.write(XByteBuffer.createDataPackage(message,data.getCompress())); out.flush(); if (isWaitForAck()) - waitForAck(ackTimeout); + waitForAck(getTimeout()); } finally { synchronized(this) { isMessageTransferStarted = false ; @@ -940,7 +1122,7 @@ missingAckCounter++; String errmsg = sm.getString("IDataSender.ack.missing", getAddress(), new Integer(socket.getLocalPort()), - new Long(this.ackTimeout)); + new Long(this.timeout)); if ( !this.isSuspect() ) { this.setSuspect(true); if ( log.isWarnEnabled() ) log.warn(errmsg, x); Modified: tomcat/container/tc5.5.x/modules/cluster/src/share/org/apache/catalina/cluster/tcp/ReplicationListener.java URL: http://svn.apache.org/viewvc/tomcat/container/tc5.5.x/modules/cluster/src/share/org/apache/catalina/cluster/tcp/ReplicationListener.java?view=diff&rev=565469&r1=565468&r2=565469 ============================================================================== --- tomcat/container/tc5.5.x/modules/cluster/src/share/org/apache/catalina/cluster/tcp/ReplicationListener.java (original) +++ tomcat/container/tc5.5.x/modules/cluster/src/share/org/apache/catalina/cluster/tcp/ReplicationListener.java Mon Aug 13 11:32:58 2007 @@ -123,6 +123,7 @@ serverChannel.configureBlocking (false); // register the ServerSocketChannel with the Selector serverChannel.register (selector, SelectionKey.OP_ACCEPT); + while (doListen && selector != null) { // this may block for a long time, upon return the // selected set contains keys of the ready channels @@ -135,11 +136,11 @@ //selector wakeup(). //if that happens, we must ensure that that //thread has enough time to call interestOps - synchronized (interestOpsMutex) { + //synchronized (interestOpsMutex) { //if we got the lock, means there are no //keys trying to register for the //interestOps method - } + //} continue; // nothing to do } // get an iterator over the set of selected keys @@ -151,7 +152,18 @@ if (key.isAcceptable()) { ServerSocketChannel server = (ServerSocketChannel) key.channel(); + // get channel SocketChannel channel = server.accept(); + channel.socket().setReceiveBufferSize(getRxBufSize()); + channel.socket().setSendBufferSize(getTxBufSize()); + channel.socket().setTcpNoDelay(isTcpNoDelay()); + channel.socket().setKeepAlive(isSoKeepAlive()); + channel.socket().setOOBInline(isOoBInline()); + channel.socket().setReuseAddress(isSoReuseAddress()); + channel.socket().setSoLinger(isSoLingerOn(),getSoLingerTime()); + channel.socket().setTrafficClass(getSoTrafficClass()); + channel.socket().setSoTimeout(getTimeout()); + // attach Reader and register channel Object attach = new ObjectReader(channel, selector, this) ; registerChannel(selector, Modified: tomcat/container/tc5.5.x/modules/cluster/src/share/org/apache/catalina/cluster/tcp/SocketReplicationListener.java URL: http://svn.apache.org/viewvc/tomcat/container/tc5.5.x/modules/cluster/src/share/org/apache/catalina/cluster/tcp/SocketReplicationListener.java?view=diff&rev=565469&r1=565468&r2=565469 ============================================================================== --- tomcat/container/tc5.5.x/modules/cluster/src/share/org/apache/catalina/cluster/tcp/SocketReplicationListener.java (original) +++ tomcat/container/tc5.5.x/modules/cluster/src/share/org/apache/catalina/cluster/tcp/SocketReplicationListener.java Mon Aug 13 11:32:58 2007 @@ -44,7 +44,7 @@ /** * The descriptive information about this implementation. */ - private static final String info = "SocketReplicationListener/1.2"; + private static final String info = "SocketReplicationListener/1.3"; // ---------------------------------------------------- Properties private ServerSocket serverSocket = null; @@ -100,6 +100,8 @@ this.tcpListenTimeout = tcpListenTimeout; } + + // ---------------------------------------------------- public methods /** @@ -130,7 +132,8 @@ // ---------------------------------------------------- protected methods /** - * Master/Slave Sender handling / bind Server Socket at addres and port + * Master/Slave sender handling + * bind server socket to address and port * * @throws Exception */ @@ -141,7 +144,7 @@ return; } - // Get the associated ServerSocket to bind it with + // Get the associated ServerSocket to bind it with client try { serverSocket = createServerSocket(); if(serverSocket != null) { @@ -150,6 +153,17 @@ try { Socket socket = serverSocket.accept(); if (doListen) { + if ( socket == null ) continue; + socket.setReceiveBufferSize(getRxBufSize()); + socket.setSendBufferSize(getTxBufSize()); + socket.setTcpNoDelay(isTcpNoDelay()); + socket.setKeepAlive(isSoKeepAlive()); + socket.setOOBInline(isOoBInline()); + socket.setReuseAddress(isSoReuseAddress()); + socket.setSoLinger(isSoLingerOn(),getSoLingerTime()); + socket.setTrafficClass(getSoTrafficClass()); + socket.setSoTimeout(getTimeout()); + // Switch to separate thread and read all messages SocketReplicationThread t = new SocketReplicationThread( this, socket); t.setDaemon(true); @@ -203,6 +217,7 @@ inet.getHostAddress(), Integer.toString(i), ex.toString())); + try {Thread.sleep(25);}catch( InterruptedException ti) {} continue; } } Modified: tomcat/container/tc5.5.x/modules/cluster/src/share/org/apache/catalina/cluster/tcp/mbeans-descriptors.xml URL: http://svn.apache.org/viewvc/tomcat/container/tc5.5.x/modules/cluster/src/share/org/apache/catalina/cluster/tcp/mbeans-descriptors.xml?view=diff&rev=565469&r1=565468&r2=565469 ============================================================================== --- tomcat/container/tc5.5.x/modules/cluster/src/share/org/apache/catalina/cluster/tcp/mbeans-descriptors.xml (original) +++ tomcat/container/tc5.5.x/modules/cluster/src/share/org/apache/catalina/cluster/tcp/mbeans-descriptors.xml Mon Aug 13 11:32:58 2007 @@ -123,6 +123,41 @@ <attribute name="tcpSelectorTimeout" description="tcp listener Selector timeout" type="long"/> + <attribute name="soTrafficClass" + description="traffic class (default 0x04 | 0x08 | 0x010)" + type="int"/> + <attribute name="rxBufSize" + description="receiver buffer size (default 43800)" + type="int"/> + <attribute name="txBufSize" + description="send buffer size (default 25188)" + type="int"/> + <attribute name="tcpNoDelay" + description="set tcpNoDelay (default true)" + is="true" + type="boolean" /> + <attribute name="soKeepAlive" + description="set soKeepAlive (default false)" + is="true" + type="boolean" /> + <attribute name="ooBInline" + description="set ooBInline (default true)" + is="true" + type="boolean" /> + <attribute name="soReuseAddress" + description="set soReuseAddress (default true)" + is="true" + type="boolean" /> + <attribute name="soLingerOn" + description="set soLingerOn (default false)" + is="true" + type="boolean" /> + <attribute name="soLingerTime" + description="if soLingerOn use soLingerTime (default 3)" + type="int"/> + <attribute name="timeout" + description="soTimeout and acknowledge timeout (default 3000 msec)" + type="long"/> <attribute name="nrOfMsgsReceived" description="number of messages received from other nodes" type="long" @@ -220,6 +255,41 @@ description="number of messages received from other nodes" type="long" writeable="false"/> + <attribute name="soTrafficClass" + description="traffic class (default 0x04 | 0x08 | 0x010)" + type="int"/> + <attribute name="rxBufSize" + description="receiver buffer size (default 43800)" + type="int"/> + <attribute name="txBufSize" + description="send buffer size (default 25188)" + type="int"/> + <attribute name="tcpNoDelay" + description="set tcpNoDelay (default true)" + is="true" + type="boolean" /> + <attribute name="soKeepAlive" + description="set soKeepAlive (default false)" + is="true" + type="boolean" /> + <attribute name="ooBInline" + description="set ooBInline (default true)" + is="true" + type="boolean" /> + <attribute name="soReuseAddress" + description="set soReuseAddress (default true)" + is="true" + type="boolean" /> + <attribute name="soLingerOn" + description="set soLingerOn (default false)" + is="true" + type="boolean" /> + <attribute name="soLingerTime" + description="if soLingerOn use soLingerTime (default 3)" + type="int"/> + <attribute name="timeout" + description="soTimeout and acknowledge timeout (default 3000 msec)" + type="long"/> <attribute name="receivedTime" description="total time message send time" type="long" @@ -395,8 +465,37 @@ is="true" type="boolean" writeable="false"/> + <attribute name="txBufSize" + description="send buffer size (default 43800)" + type="int"/> + <attribute name="tcpNoDelay" + description="set tcpNoDelay (default true)" + is="true" + type="boolean" /> + <attribute name="soKeepAlive" + description="set soKeepAlive (default false)" + is="true" + type="boolean" /> + <attribute name="ooBInline" + description="set ooBInline (default true)" + is="true" + type="boolean" /> + <attribute name="soReuseAddress" + description="set soReuseAddress (default true)" + is="true" + type="boolean" /> + <attribute name="soLingerOn" + description="set soLingerOn (default false)" + is="true" + type="boolean" /> + <attribute name="soLingerTime" + description="if soLingerOn use soLingerTime (default 3)" + type="int"/> + <attribute name="timeout" + description="connect and acknowledge timeout (default 3000 msec)" + type="long"/> <attribute name="ackTimeout" - description="acknowledge timeout" + description="acknowledge timeout acknowledge timeout (deprecated use timeout)" type="long"/> <attribute name="avgMessageSize" writeable="false" @@ -577,8 +676,43 @@ is="true" type="boolean" writeable="false"/> + <attribute name="soTrafficClass" + description="traffic class (default 0x04 | 0x08 | 0x010)" + type="int"/> + <attribute name="rxBufSize" + description="receiver buffer size (default 25188)" + type="int"/> + <attribute name="txBufSize" + description="send buffer size (default 43800)" + type="int"/> + <attribute name="tcpNoDelay" + description="set tcpNoDelay (default true)" + is="true" + type="boolean" /> + <attribute name="soKeepAlive" + description="set soKeepAlive (default false)" + is="true" + type="boolean" /> + <attribute name="ooBInline" + description="set ooBInline (default true)" + is="true" + type="boolean" /> + <attribute name="soReuseAddress" + description="set soReuseAddress (default true)" + is="true" + type="boolean" /> + <attribute name="soLingerOn" + description="set soLingerOn (default false)" + is="true" + type="boolean" /> + <attribute name="soLingerTime" + description="if soLingerOn use soLingerTime (default 3)" + type="int"/> + <attribute name="timeout" + description="connect and acknowledge timeout (default 3000 msec)" + type="long"/> <attribute name="ackTimeout" - description="acknowledge timeout" + description="acknowledge timeout (deprecated use timeout)" type="long"/> <attribute name="avgMessageSize" writeable="false" @@ -782,8 +916,43 @@ <attribute name="suspect" description="Socket is gone" type="boolean"/> + <attribute name="soTrafficClass" + description="traffic class (default 0x04 | 0x08 | 0x010)" + type="int"/> + <attribute name="rxBufSize" + description="receiver buffer size (default 25188)" + type="int"/> + <attribute name="txBufSize" + description="send buffer size (default 43800)" + type="int"/> + <attribute name="tcpNoDelay" + description="set tcpNoDelay (default true)" + is="true" + type="boolean" /> + <attribute name="soKeepAlive" + description="set soKeepAlive (default false)" + is="true" + type="boolean" /> + <attribute name="ooBInline" + description="set ooBInline (default true)" + is="true" + type="boolean" /> + <attribute name="soReuseAddress" + description="set soReuseAddress (default true)" + is="true" + type="boolean" /> + <attribute name="soLingerOn" + description="set soLingerOn (default false)" + is="true" + type="boolean" /> + <attribute name="soLingerTime" + description="if soLingerOn use soLingerTime (default 3)" + type="int"/> + <attribute name="timeout" + description="connect and acknowledge timeout (default 3000 msec)" + type="long"/> <attribute name="ackTimeout" - description="acknowledge timeout" + description="acknowledge timeout (deprecated use timeout)" type="long"/> <attribute name="waitForAck" description="Wait for ack after data send" @@ -816,7 +985,7 @@ writeable="false"/> <attribute name="avgMessageSize" writeable="false" - description="avg message size (totalbytes/nrOfRequests" + description="avg message size (totalbytes/nrOfRequests)" type="long"/> <attribute name="nrOfRequests" description="number of send messages to other members" @@ -868,8 +1037,43 @@ <attribute name="suspect" description="Socket is gone" type="boolean"/> + <attribute name="soTrafficClass" + description="traffic class (default 0x04 | 0x08 | 0x010)" + type="int"/> + <attribute name="rxBufSize" + description="receiver buffer size (default 25188)" + type="int"/> + <attribute name="txBufSize" + description="send buffer size (default 43800)" + type="int"/> + <attribute name="tcpNoDelay" + description="set tcpNoDelay (default true)" + is="true" + type="boolean" /> + <attribute name="soKeepAlive" + description="set soKeepAlive (default false)" + is="true" + type="boolean" /> + <attribute name="ooBInline" + description="set ooBInline (default true)" + is="true" + type="boolean" /> + <attribute name="soReuseAddress" + description="set soReuseAddress (default true)" + is="true" + type="boolean" /> + <attribute name="soLingerOn" + description="set soLingerOn (default false)" + is="true" + type="boolean" /> + <attribute name="soLingerTime" + description="if soLingerOn use soLingerTime (default 3)" + type="int"/> + <attribute name="timeout" + description="connect and acknowledge timeout (default 3000 msec)" + type="long"/> <attribute name="ackTimeout" - description="acknowledge timeout" + description="acknowledge timeout (deprecated use timeout)" type="long"/> <attribute name="waitForAck" description="Wait for ack after data send" Modified: tomcat/container/tc5.5.x/webapps/docs/changelog.xml URL: http://svn.apache.org/viewvc/tomcat/container/tc5.5.x/webapps/docs/changelog.xml?view=diff&rev=565469&r1=565468&r2=565469 ============================================================================== --- tomcat/container/tc5.5.x/webapps/docs/changelog.xml (original) +++ tomcat/container/tc5.5.x/webapps/docs/changelog.xml Mon Aug 13 11:32:58 2007 @@ -132,6 +132,9 @@ <subsection name="Cluster"> <changelog> <fix> + Backport Tomcat 6 cluster socket parameter. (pero) + </fix> + <fix> Fix typo in new MBean attribute which lead to errors in the manager webapp JMXProxy output. (rjung) </fix> <fix> --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]