Author: elecharny
Date: Sat Apr 9 15:01:46 2011
New Revision: 1090604
URL: http://svn.apache.org/viewvc?rev=1090604&view=rev
Log:
Rollbacked some changes made on the Datagram part : it was generating a
deadlock in tests
Modified:
mina/branches/2.0.3/mina-core/src/main/java/org/apache/mina/core/polling/AbstractPollingConnectionlessIoAcceptor.java
Modified:
mina/branches/2.0.3/mina-core/src/main/java/org/apache/mina/core/polling/AbstractPollingConnectionlessIoAcceptor.java
URL:
http://svn.apache.org/viewvc/mina/branches/2.0.3/mina-core/src/main/java/org/apache/mina/core/polling/AbstractPollingConnectionlessIoAcceptor.java?rev=1090604&r1=1090603&r2=1090604&view=diff
==============================================================================
---
mina/branches/2.0.3/mina-core/src/main/java/org/apache/mina/core/polling/AbstractPollingConnectionlessIoAcceptor.java
(original)
+++
mina/branches/2.0.3/mina-core/src/main/java/org/apache/mina/core/polling/AbstractPollingConnectionlessIoAcceptor.java
Sat Apr 9 15:01:46 2011
@@ -35,7 +35,6 @@ import java.util.Queue;
import java.util.Set;
import java.util.concurrent.ConcurrentLinkedQueue;
import java.util.concurrent.Executor;
-import java.util.concurrent.atomic.AtomicReference;
import org.apache.mina.core.RuntimeIoException;
import org.apache.mina.core.buffer.IoBuffer;
@@ -89,7 +88,7 @@ public abstract class AbstractPollingCon
private volatile boolean selectable;
/** The thread responsible of accepting incoming requests */
- private AtomicReference<Acceptor> acceptorRef = new
AtomicReference<Acceptor>();
+ private Acceptor acceptor;
private long lastIdleCheckTime;
@@ -366,12 +365,9 @@ public abstract class AbstractPollingCon
flushingSessions.clear();
}
- Acceptor acceptor = acceptorRef.get();
-
- if (acceptor == null) {
- acceptor = new Acceptor();
-
- if (acceptorRef.compareAndSet(null, acceptor)) {
+ synchronized (lock) {
+ if (acceptor == null) {
+ acceptor = new Acceptor();
executeWorker(acceptor);
}
}
@@ -418,7 +414,7 @@ public abstract class AbstractPollingCon
if (nHandles == 0) {
synchronized (lock) {
if (registerQueue.isEmpty() &&
cancelQueue.isEmpty()) {
- acceptorRef.set(null);
+ acceptor = null;
break;
}
}