There was no need to introduce a thread local to avoid event recursion
This commit is contained in:
parent
903c530ae0
commit
2321499c8c
@ -65,6 +65,7 @@ class NioSocketChannel extends AbstractChannel
|
||||
final Queue<MessageEvent> writeBuffer = new WriteBuffer();
|
||||
final AtomicInteger writeBufferSize = new AtomicInteger();
|
||||
final AtomicInteger highWaterMarkCounter = new AtomicInteger();
|
||||
volatile boolean inWriteNowLoop;
|
||||
|
||||
MessageEvent currentWriteEvent;
|
||||
int currentWriteIndex;
|
||||
|
@ -51,7 +51,6 @@ import org.jboss.netty.channel.ReceiveBufferSizePredictor;
|
||||
import org.jboss.netty.logging.InternalLogger;
|
||||
import org.jboss.netty.logging.InternalLoggerFactory;
|
||||
import org.jboss.netty.util.LinkedTransferQueue;
|
||||
import org.jboss.netty.util.ThreadLocalBoolean;
|
||||
import org.jboss.netty.util.ThreadRenamingRunnable;
|
||||
|
||||
/**
|
||||
@ -69,8 +68,6 @@ class NioWorker implements Runnable {
|
||||
|
||||
private static final int CONSTRAINT_LEVEL = NioProviderMetadata.CONSTRAINT_LEVEL;
|
||||
|
||||
private static final ThreadLocalBoolean writing = new ThreadLocalBoolean();
|
||||
|
||||
private final int bossId;
|
||||
private final int id;
|
||||
private final Executor executor;
|
||||
@ -330,15 +327,10 @@ class NioWorker implements Runnable {
|
||||
return;
|
||||
}
|
||||
|
||||
if (writing.get()) {
|
||||
if (channel.inWriteNowLoop) {
|
||||
scheduleWriteIfNecessary(channel);
|
||||
} else {
|
||||
writing.set(Boolean.TRUE);
|
||||
try {
|
||||
writeNow(channel, channel.getConfig().getWriteSpinCount());
|
||||
} finally {
|
||||
writing.set(Boolean.FALSE);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@ -375,6 +367,7 @@ class NioWorker implements Runnable {
|
||||
|
||||
Queue<MessageEvent> writeBuffer = channel.writeBuffer;
|
||||
synchronized (channel.writeLock) {
|
||||
channel.inWriteNowLoop = true;
|
||||
evt = channel.currentWriteEvent;
|
||||
for (;;) {
|
||||
if (evt == null) {
|
||||
@ -429,6 +422,7 @@ class NioWorker implements Runnable {
|
||||
}
|
||||
}
|
||||
}
|
||||
channel.inWriteNowLoop = false;
|
||||
}
|
||||
|
||||
fireWriteComplete(channel, writtenBytes);
|
||||
|
Loading…
x
Reference in New Issue
Block a user