Fix bug that would case an IllegalStateException when closeForcibly() is called and the Channel is not registered yet.
This commit is contained in:
parent
c7f6ba0a55
commit
5423eb9401
@ -214,6 +214,8 @@ abstract class AbstractIOUringChannel extends AbstractChannel implements UnixCha
|
|||||||
freeRemoteAddressMemory();
|
freeRemoteAddressMemory();
|
||||||
active = false;
|
active = false;
|
||||||
|
|
||||||
|
// doClose() may be called by closeForcibly() before the Channel is registered on the EventLoop.
|
||||||
|
if (isRegistered()) {
|
||||||
IOUringSubmissionQueue submissionQueue = submissionQueue();
|
IOUringSubmissionQueue submissionQueue = submissionQueue();
|
||||||
if ((ioState & POLL_IN_SCHEDULED) != 0) {
|
if ((ioState & POLL_IN_SCHEDULED) != 0) {
|
||||||
submissionQueue.addPollRemove(socket.intValue(), IOUring.POLLMASK_IN);
|
submissionQueue.addPollRemove(socket.intValue(), IOUring.POLLMASK_IN);
|
||||||
@ -225,6 +227,7 @@ abstract class AbstractIOUringChannel extends AbstractChannel implements UnixCha
|
|||||||
}
|
}
|
||||||
submissionQueue.addPollRemove(socket.intValue(), IOUring.POLLMASK_RDHUP);
|
submissionQueue.addPollRemove(socket.intValue(), IOUring.POLLMASK_RDHUP);
|
||||||
submissionQueue.submit();
|
submissionQueue.submit();
|
||||||
|
}
|
||||||
|
|
||||||
// Even if we allow half closed sockets we should give up on reading. Otherwise we may allow a read attempt on a
|
// Even if we allow half closed sockets we should give up on reading. Otherwise we may allow a read attempt on a
|
||||||
// socket which has not even been connected yet. This has been observed to block during unit tests.
|
// socket which has not even been connected yet. This has been observed to block during unit tests.
|
||||||
|
@ -19,8 +19,6 @@ import io.netty.bootstrap.Bootstrap;
|
|||||||
import io.netty.bootstrap.ServerBootstrap;
|
import io.netty.bootstrap.ServerBootstrap;
|
||||||
import io.netty.testsuite.transport.TestsuitePermutation;
|
import io.netty.testsuite.transport.TestsuitePermutation;
|
||||||
import io.netty.testsuite.transport.socket.SocketCloseForciblyTest;
|
import io.netty.testsuite.transport.socket.SocketCloseForciblyTest;
|
||||||
import org.junit.Ignore;
|
|
||||||
import org.junit.Test;
|
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@ -29,11 +27,4 @@ public class IOUringSocketCloseForciblyTest extends SocketCloseForciblyTest {
|
|||||||
protected List<TestsuitePermutation.BootstrapComboFactory<ServerBootstrap, Bootstrap>> newFactories() {
|
protected List<TestsuitePermutation.BootstrapComboFactory<ServerBootstrap, Bootstrap>> newFactories() {
|
||||||
return IOUringSocketTestPermutation.INSTANCE.socket();
|
return IOUringSocketTestPermutation.INSTANCE.socket();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Ignore("FIX ME")
|
|
||||||
@Test
|
|
||||||
@Override
|
|
||||||
public void testCloseForcibly() throws Throwable {
|
|
||||||
super.testCloseForcibly();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user