NetSocket end message should be dispatched correctly on the context

This commit is contained in:
Julien Viet
2020-01-08 17:01:36 +01:00
parent 9fbc39be43
commit 42a2df55bf
2 changed files with 13 additions and 4 deletions

View File

@@ -359,8 +359,7 @@ public class NetSocketImpl extends ConnectionBase implements NetSocketInternal {
consumer = registration;
registration = null;
}
// Should be done with dispatch....
pending.write(InboundBuffer.END_SENTINEL);
context.dispatch(InboundBuffer.END_SENTINEL, pending::write);
super.handleClosed();
if (consumer != null) {
consumer.unregister();

View File

@@ -2427,7 +2427,8 @@ public class NetTest extends VertxTestBase {
}
@Test
public void testInWorker() throws Exception {
public void testInWorker() {
waitFor(2);
vertx.deployVerticle(new AbstractVerticle() {
@Override
public void start() throws Exception {
@@ -2441,7 +2442,16 @@ public class NetTest extends VertxTestBase {
assertSame(context, Vertx.currentContext());
conn.handler(conn::write);
conn.closeHandler(v -> {
testComplete();
assertTrue(Vertx.currentContext().isWorkerContext());
assertTrue(Context.isOnWorkerThread());
assertSame(context, Vertx.currentContext());
complete();
});
conn.endHandler(v -> {
assertTrue(Vertx.currentContext().isWorkerContext());
assertTrue(Context.isOnWorkerThread());
assertSame(context, Vertx.currentContext());
complete();
});
}).listen(testAddress, onSuccess(s -> {
assertTrue(Vertx.currentContext().isWorkerContext());