Author: fhanik
Date: Mon May 21 02:14:08 2007
New Revision: 540077
URL: http://svn.apache.org/viewvc?view=rev&rev=540077
Log:
Only lock when incrementing the counter on sending messages, can be further
optimized to have a lock per member
Modified:
tomcat/tc6.0.x/trunk/java/org/apache/catalina/tribes/group/interceptors/OrderInterceptor.java
Modified:
tomcat/tc6.0.x/trunk/java/org/apache/catalina/tribes/group/interceptors/OrderInterceptor.java
URL:
http://svn.apache.org/viewvc/tomcat/tc6.0.x/trunk/java/org/apache/catalina/tribes/group/interceptors/OrderInterceptor.java?view=diff&rev=540077&r1=540076&r2=540077
==============================================================================
---
tomcat/tc6.0.x/trunk/java/org/apache/catalina/tribes/group/interceptors/OrderInterceptor.java
(original)
+++
tomcat/tc6.0.x/trunk/java/org/apache/catalina/tribes/group/interceptors/OrderInterceptor.java
Mon May 21 02:14:08 2007
@@ -69,21 +69,29 @@
super.sendMessage(destination, msg, payload);
return;
}
- try {
- outLock.writeLock().lock();
- for ( int i=0; i<destination.length; i++ ) {
- int nr = incCounter(destination[i]);
+ ChannelException cx = null;
+ for (int i=0; i<destination.length; i++ ) {
+ try {
+ int nr = 0;
+ try {
+ outLock.writeLock().lock();
+ nr = incCounter(destination[i]);
+ } finally {
+ outLock.writeLock().unlock();
+ }
//reduce byte copy
msg.getMessage().append(nr);
try {
getNext().sendMessage(new Member[] {destination[i]}, msg,
payload);
- }finally {
+ } finally {
msg.getMessage().trim(4);
}
+ }catch ( ChannelException x ) {
+ if ( cx == null ) cx = x;
+ cx.addFaultyMember(x.getFaultyMembers());
}
- }finally {
- outLock.writeLock().unlock();
- }
+ }//for
+ if ( cx != null ) throw cx;
}
public void messageReceived(ChannelMessage msg) {
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]