You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@directory.apache.org by tr...@apache.org on 2004/12/24 00:23:02 UTC
svn commit: r123248 - in incubator/directory/network/trunk/mina/src/java/org/apache/mina: io/filter protocol/filter util
Author: trustin
Date: Thu Dec 23 15:23:01 2004
New Revision: 123248
URL: http://svn.apache.org/viewcvs?view=rev&rev=123248
Log:
Fixed: Dead followers are not removed from followers stack
Modified:
incubator/directory/network/trunk/mina/src/java/org/apache/mina/io/filter/IoThreadPoolFilter.java
incubator/directory/network/trunk/mina/src/java/org/apache/mina/protocol/filter/ProtocolThreadPoolFilter.java
incubator/directory/network/trunk/mina/src/java/org/apache/mina/util/Stack.java
Modified: incubator/directory/network/trunk/mina/src/java/org/apache/mina/io/filter/IoThreadPoolFilter.java
Url: http://svn.apache.org/viewcvs/incubator/directory/network/trunk/mina/src/java/org/apache/mina/io/filter/IoThreadPoolFilter.java?view=diff&rev=123248&p1=incubator/directory/network/trunk/mina/src/java/org/apache/mina/io/filter/IoThreadPoolFilter.java&r1=123247&p2=incubator/directory/network/trunk/mina/src/java/org/apache/mina/io/filter/IoThreadPoolFilter.java&r2=123248
==============================================================================
--- incubator/directory/network/trunk/mina/src/java/org/apache/mina/io/filter/IoThreadPoolFilter.java (original)
+++ incubator/directory/network/trunk/mina/src/java/org/apache/mina/io/filter/IoThreadPoolFilter.java Thu Dec 23 15:23:01 2004
@@ -280,8 +280,9 @@
SessionBuffer buf = fetchBuffer();
giveUpLead();
- if( buf == null )
+ if( buf == null ) {
break;
+ }
processEvents( buf );
follow();
@@ -446,8 +447,17 @@
{
}
}
+
+ boolean timeToLead = this == leader;
+
+ if (!timeToLead) {
+ // time to die
+ synchronized (followers) {
+ followers.remove(this);
+ }
+ }
- return this == leader;
+ return timeToLead;
}
}
Modified: incubator/directory/network/trunk/mina/src/java/org/apache/mina/protocol/filter/ProtocolThreadPoolFilter.java
Url: http://svn.apache.org/viewcvs/incubator/directory/network/trunk/mina/src/java/org/apache/mina/protocol/filter/ProtocolThreadPoolFilter.java?view=diff&rev=123248&p1=incubator/directory/network/trunk/mina/src/java/org/apache/mina/protocol/filter/ProtocolThreadPoolFilter.java&r1=123247&p2=incubator/directory/network/trunk/mina/src/java/org/apache/mina/protocol/filter/ProtocolThreadPoolFilter.java&r2=123248
==============================================================================
--- incubator/directory/network/trunk/mina/src/java/org/apache/mina/protocol/filter/ProtocolThreadPoolFilter.java (original)
+++ incubator/directory/network/trunk/mina/src/java/org/apache/mina/protocol/filter/ProtocolThreadPoolFilter.java Thu Dec 23 15:23:01 2004
@@ -429,7 +429,16 @@
}
}
- return this == leader;
+ boolean timeToLead = this == leader;
+
+ if (!timeToLead) {
+ // time to die
+ synchronized (followers) {
+ followers.remove(this);
+ }
+ }
+
+ return timeToLead;
}
}
Modified: incubator/directory/network/trunk/mina/src/java/org/apache/mina/util/Stack.java
Url: http://svn.apache.org/viewcvs/incubator/directory/network/trunk/mina/src/java/org/apache/mina/util/Stack.java?view=diff&rev=123248&p1=incubator/directory/network/trunk/mina/src/java/org/apache/mina/util/Stack.java&r1=123247&p2=incubator/directory/network/trunk/mina/src/java/org/apache/mina/util/Stack.java&r2=123248
==============================================================================
--- incubator/directory/network/trunk/mina/src/java/org/apache/mina/util/Stack.java (original)
+++ incubator/directory/network/trunk/mina/src/java/org/apache/mina/util/Stack.java Thu Dec 23 15:23:01 2004
@@ -91,6 +91,17 @@
items[ size ] = obj;
size++;
}
+
+ public void remove( Object o ) {
+ for ( int i = size - 1; i >= 0; i-- ) {
+ if (items[i] == o) {
+ System.arraycopy(items, i + 1, items, i, size - i - 1);
+ items[size - 1] = null;
+ size --;
+ break;
+ }
+ }
+ }
/**
* Returns the first element of the queue.