fhanik 2003/12/19 16:48:52 Modified: modules/cluster/src/share/org/apache/catalina/cluster/io XByteBuffer.java modules/cluster/src/share/org/apache/catalina/cluster/tcp ReplicationListener.java ReplicationTransmitter.java TcpReplicationThread.java ThreadPool.java WorkerThread.java Log: removed a lot of synchronization that created overhead. Revision Changes Path 1.4 +10 -10 jakarta-tomcat-catalina/modules/cluster/src/share/org/apache/catalina/cluster/io/XByteBuffer.java Index: XByteBuffer.java =================================================================== RCS file: /home/cvs/jakarta-tomcat-catalina/modules/cluster/src/share/org/apache/catalina/cluster/io/XByteBuffer.java,v retrieving revision 1.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- XByteBuffer.java 19 Dec 2003 21:22:13 -0000 1.3 +++ XByteBuffer.java 20 Dec 2003 00:48:52 -0000 1.4 @@ -128,7 +128,7 @@ * Returns the bytes in the buffer, in its exact length * @return */ - public synchronized byte[] getBytes() { + public byte[] getBytes() { byte[] b = new byte[bufSize]; System.arraycopy(buf,0,b,0,bufSize); return b; @@ -137,7 +137,7 @@ /** * Resets the buffer */ - public synchronized void clear() { + public void clear() { bufSize = 0; } @@ -149,7 +149,7 @@ * @param len - the number of bytes to append. * @return true if the data was appended correctly. Returns false if the package is incorrect, ie missing header or something, or the length of data is 0 */ - public synchronized boolean append(byte[] b, int off, int len) { + public boolean append(byte[] b, int off, int len) { if ((off < 0) || (off > b.length) || (len < 0) || ((off + len) > b.length) || ((off + len) < 0)) { throw new IndexOutOfBoundsException(); @@ -180,7 +180,7 @@ * within the buffer * @return - true if a complete package (header,size,data,footer) exists within the buffer */ - protected synchronized int packageExists() + protected int packageExists() { int pos = START_DATA.length; //first check start header @@ -204,7 +204,7 @@ * Method to check if a package exists in this byte buffer. * @return - true if a complete package (header,size,data,footer) exists within the buffer */ - public synchronized boolean doesPackageExist() { + public boolean doesPackageExist() { return (packageExists()>0); }//doesPackageExist @@ -214,7 +214,7 @@ * @param clearFromBuffer - if true, the package will be removed from the byte buffer * @return - returns the actual message bytes (header, size and footer not included). */ - public synchronized byte[] extractPackage(boolean clearFromBuffer) throws java.io.IOException { + public byte[] extractPackage(boolean clearFromBuffer) throws java.io.IOException { int size = packageExists(); if ( size == 0 ) throw new java.lang.IllegalStateException("No package exists in XByteBuffer"); byte[] data = new byte[size]; 1.7 +8 -5 jakarta-tomcat-catalina/modules/cluster/src/share/org/apache/catalina/cluster/tcp/ReplicationListener.java Index: ReplicationListener.java =================================================================== RCS file: /home/cvs/jakarta-tomcat-catalina/modules/cluster/src/share/org/apache/catalina/cluster/tcp/ReplicationListener.java,v retrieving revision 1.6 retrieving revision 1.7 diff -u -r1.6 -r1.7 --- ReplicationListener.java 18 Dec 2003 04:20:15 -0000 1.6 +++ ReplicationListener.java 20 Dec 2003 00:48:52 -0000 1.7 @@ -229,8 +229,11 @@ // thread becomes available. This design could // be improved. return; + } else { + // invoking this wakes up the worker thread then returns + worker.serviceChannel(key, synchronous); + return; } - // invoking this wakes up the worker thread then returns - worker.serviceChannel (key,synchronous); } + } 1.11 +4 -4 jakarta-tomcat-catalina/modules/cluster/src/share/org/apache/catalina/cluster/tcp/ReplicationTransmitter.java Index: ReplicationTransmitter.java =================================================================== RCS file: /home/cvs/jakarta-tomcat-catalina/modules/cluster/src/share/org/apache/catalina/cluster/tcp/ReplicationTransmitter.java,v retrieving revision 1.10 retrieving revision 1.11 diff -u -r1.10 -r1.11 --- ReplicationTransmitter.java 19 Dec 2003 21:29:22 -0000 1.10 +++ ReplicationTransmitter.java 20 Dec 2003 00:48:52 -0000 1.11 @@ -123,7 +123,7 @@ }//while }//stop - public synchronized IDataSender[] getSenders() + public IDataSender[] getSenders() { java.util.Iterator i = map.entrySet().iterator(); java.util.Vector v = new java.util.Vector(); 1.5 +4 -4 jakarta-tomcat-catalina/modules/cluster/src/share/org/apache/catalina/cluster/tcp/TcpReplicationThread.java Index: TcpReplicationThread.java =================================================================== RCS file: /home/cvs/jakarta-tomcat-catalina/modules/cluster/src/share/org/apache/catalina/cluster/tcp/TcpReplicationThread.java,v retrieving revision 1.4 retrieving revision 1.5 diff -u -r1.4 -r1.5 --- TcpReplicationThread.java 19 Dec 2003 21:22:13 -0000 1.4 +++ TcpReplicationThread.java 20 Dec 2003 00:48:52 -0000 1.5 @@ -156,7 +156,7 @@ * re-enables OP_READ and calls wakeup() on the selector * so the selector will resume watching this channel. */ - void drainChannel (SelectionKey key) + private void drainChannel (SelectionKey key) throws Exception { boolean packetReceived=false; 1.3 +8 -7 jakarta-tomcat-catalina/modules/cluster/src/share/org/apache/catalina/cluster/tcp/ThreadPool.java Index: ThreadPool.java =================================================================== RCS file: /home/cvs/jakarta-tomcat-catalina/modules/cluster/src/share/org/apache/catalina/cluster/tcp/ThreadPool.java,v retrieving revision 1.2 retrieving revision 1.3 diff -u -r1.2 -r1.3 --- ThreadPool.java 18 Apr 2003 02:51:24 -0000 1.2 +++ ThreadPool.java 20 Dec 2003 00:48:52 -0000 1.3 @@ -93,6 +93,7 @@ // set thread name for debugging, start it thread.setName (threadClass.getName()+"[" + (i + 1)+"]"); thread.setDaemon(true); + thread.setPriority(Thread.MAX_PRIORITY); thread.start(); idle.add (thread); @@ -106,11 +107,11 @@ { WorkerThread worker = null; - synchronized (idle) { + //synchronized (idle) { if (idle.size() > 0) { worker = (WorkerThread) idle.remove (0); } - } + //} return (worker); } @@ -121,8 +122,8 @@ */ void returnWorker (WorkerThread worker) { - synchronized (idle) { + //synchronized (idle) { idle.add (worker); - } + //} } } 1.4 +6 -6 jakarta-tomcat-catalina/modules/cluster/src/share/org/apache/catalina/cluster/tcp/WorkerThread.java Index: WorkerThread.java =================================================================== RCS file: /home/cvs/jakarta-tomcat-catalina/modules/cluster/src/share/org/apache/catalina/cluster/tcp/WorkerThread.java,v retrieving revision 1.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- WorkerThread.java 18 Apr 2003 02:51:24 -0000 1.3 +++ WorkerThread.java 20 Dec 2003 00:48:52 -0000 1.4 @@ -71,12 +71,12 @@ protected ThreadPool pool; protected boolean doRun = true; - + public void setPool(ThreadPool pool) { - this.pool = pool; + this.pool = pool; } - public synchronized void close() + public void close() { doRun = false; notify();
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]