From 51b4712932003190185fce04baad86c0b9dd29e8 Mon Sep 17 00:00:00 2001 From: fhanik Date: Thu, 17 May 2007 13:45:15 +0000 Subject: [PATCH] Add locks instead of synchronized statements to avoid issues between receiving and sending git-svn-id: https://svn.apache.org/repos/asf/tomcat/tc6.0.x/trunk@538920 13f79535-47bb-0310-9956-ffa450edef68 --- .../group/interceptors/OrderInterceptor.java | 94 +++++++++++++++------- .../test/interceptors/TestOrderInterceptor.java | 40 ++++++++- 2 files changed, 103 insertions(+), 31 deletions(-) diff --git a/java/org/apache/catalina/tribes/group/interceptors/OrderInterceptor.java b/java/org/apache/catalina/tribes/group/interceptors/OrderInterceptor.java index 34d88523d..9bd1a7583 100644 --- a/java/org/apache/catalina/tribes/group/interceptors/OrderInterceptor.java +++ b/java/org/apache/catalina/tribes/group/interceptors/OrderInterceptor.java @@ -25,6 +25,7 @@ import org.apache.catalina.tribes.group.ChannelInterceptorBase; import org.apache.catalina.tribes.group.InterceptorPayload; import org.apache.catalina.tribes.io.XByteBuffer; import java.util.concurrent.atomic.AtomicInteger; +import java.util.concurrent.locks.ReentrantReadWriteLock; @@ -59,36 +60,49 @@ public class OrderInterceptor extends ChannelInterceptorBase { private long expire = 3000; private boolean forwardExpired = true; private int maxQueue = Integer.MAX_VALUE; + + ReentrantReadWriteLock inLock = new ReentrantReadWriteLock(true); + ReentrantReadWriteLock outLock= new ReentrantReadWriteLock(true); - public synchronized void sendMessage(Member[] destination, ChannelMessage msg, InterceptorPayload payload) throws ChannelException { + public void sendMessage(Member[] destination, ChannelMessage msg, InterceptorPayload payload) throws ChannelException { if ( !okToProcess(msg.getOptions()) ) { super.sendMessage(destination, msg, payload); return; } - for ( int i=0; i