From 79d2e15445e0a43fc91d9212522d77cc777a54b0 Mon Sep 17 00:00:00 2001 From: Jinho Kim Date: Thu, 5 Nov 2015 18:29:04 +0900 Subject: [PATCH 1/2] TAJO-1965: TestBlockingRpc::testServerShutdown occassionally fails. --- .../org/apache/tajo/rpc/NettyServerBase.java | 26 +++++++++---------- .../org/apache/tajo/rpc/TestAsyncRpc.java | 4 +-- .../org/apache/tajo/rpc/TestBlockingRpc.java | 6 ++--- .../apache/tajo/rpc/TestRpcClientManager.java | 8 +++--- 4 files changed, 22 insertions(+), 22 deletions(-) diff --git a/tajo-rpc/tajo-rpc-common/src/main/java/org/apache/tajo/rpc/NettyServerBase.java b/tajo-rpc/tajo-rpc-common/src/main/java/org/apache/tajo/rpc/NettyServerBase.java index 2c154bf518..95357a7a1f 100644 --- a/tajo-rpc/tajo-rpc-common/src/main/java/org/apache/tajo/rpc/NettyServerBase.java +++ b/tajo-rpc/tajo-rpc-common/src/main/java/org/apache/tajo/rpc/NettyServerBase.java @@ -145,24 +145,24 @@ public void shutdown(boolean waitUntilThreadsStop) { try { accepted.close(); - } catch (Throwable t) { - LOG.error(t.getMessage(), t); - } - if(bootstrap != null) { - if (bootstrap.childGroup() != null) { - bootstrap.childGroup().shutdownGracefully(); - if (waitUntilThreadsStop) { - bootstrap.childGroup().terminationFuture().awaitUninterruptibly(); + if(bootstrap != null) { + if (bootstrap.childGroup() != null) { + bootstrap.childGroup().shutdownGracefully(); + if (waitUntilThreadsStop) { + bootstrap.childGroup().terminationFuture().sync(); + } } - } - if (bootstrap.group() != null) { - bootstrap.group().shutdownGracefully(); - if (waitUntilThreadsStop) { - bootstrap.childGroup().terminationFuture().awaitUninterruptibly(); + if (bootstrap.group() != null) { + bootstrap.group().shutdownGracefully(); + if (waitUntilThreadsStop) { + bootstrap.childGroup().terminationFuture().sync(); + } } } + } catch (Throwable t) { + LOG.error(t.getMessage(), t); } for (RpcEventListener listener: listeners) { diff --git a/tajo-rpc/tajo-rpc-protobuf/src/test/java/org/apache/tajo/rpc/TestAsyncRpc.java b/tajo-rpc/tajo-rpc-protobuf/src/test/java/org/apache/tajo/rpc/TestAsyncRpc.java index 6427ffe6c0..9de8f3fdbd 100644 --- a/tajo-rpc/tajo-rpc-protobuf/src/test/java/org/apache/tajo/rpc/TestAsyncRpc.java +++ b/tajo-rpc/tajo-rpc-protobuf/src/test/java/org/apache/tajo/rpc/TestAsyncRpc.java @@ -151,7 +151,7 @@ public static void tearDownClass() throws Exception { public void tearDownRpcServer() throws Exception { if (server != null) { - server.shutdown(); + server.shutdown(true); server = null; } } @@ -370,7 +370,7 @@ public void run() { assertEquals(echoMessage, future.get()); assertTrue(future.isDone()); client.close(); - server.shutdown(); + server.shutdown(true); } diff --git a/tajo-rpc/tajo-rpc-protobuf/src/test/java/org/apache/tajo/rpc/TestBlockingRpc.java b/tajo-rpc/tajo-rpc-protobuf/src/test/java/org/apache/tajo/rpc/TestBlockingRpc.java index 0687d0ba35..faa45284b4 100644 --- a/tajo-rpc/tajo-rpc-protobuf/src/test/java/org/apache/tajo/rpc/TestBlockingRpc.java +++ b/tajo-rpc/tajo-rpc-protobuf/src/test/java/org/apache/tajo/rpc/TestBlockingRpc.java @@ -141,7 +141,7 @@ public static void tearDownClass() throws Exception { public void tearDownRpcServer() throws Exception { if (server != null) { - server.shutdown(); + server.shutdown(true); server = null; } } @@ -274,7 +274,7 @@ public void run() { } catch (InterruptedException e) { } try { - server.shutdown(); + server.shutdown(true); server = null; latch.countDown(); } catch (Throwable e) { @@ -336,7 +336,7 @@ public void run() { EchoMessage response = stub.echo(null, message); assertEquals(MESSAGE, response.getMessage()); client.close(); - server.shutdown(); + server.shutdown(true); } @Test(timeout = 60000) diff --git a/tajo-rpc/tajo-rpc-protobuf/src/test/java/org/apache/tajo/rpc/TestRpcClientManager.java b/tajo-rpc/tajo-rpc-protobuf/src/test/java/org/apache/tajo/rpc/TestRpcClientManager.java index 160c6a3074..865e5dd75c 100644 --- a/tajo-rpc/tajo-rpc-protobuf/src/test/java/org/apache/tajo/rpc/TestRpcClientManager.java +++ b/tajo-rpc/tajo-rpc-protobuf/src/test/java/org/apache/tajo/rpc/TestRpcClientManager.java @@ -71,7 +71,7 @@ public void run() { NettyClientBase clientBase = manager.getClient(address, DummyProtocol.class, false, new Properties()); RpcClientManager.cleanup(clientBase); } finally { - server.shutdown(); + server.shutdown(true); executor.shutdown(); RpcClientManager.close(); } @@ -97,7 +97,7 @@ public void testClientCloseEvent() throws Exception { client.close(); assertFalse(RpcClientManager.contains(key)); } finally { - server.shutdown(); + server.shutdown(true); RpcClientManager.close(); } } @@ -133,7 +133,7 @@ public void testClientCloseEventWithReconnect() throws Exception { assertFalse(RpcClientManager.contains(key)); } } finally { - server.shutdown(); + server.shutdown(true); RpcClientManager.close(); } } @@ -172,7 +172,7 @@ public void testUnManagedClient() throws Exception { RpcClientManager.cleanup(client1, client2); } finally { - server.shutdown(); + server.shutdown(true); } } } \ No newline at end of file From c8678042f4a9e06d5a19d553d885769bab05c71a Mon Sep 17 00:00:00 2001 From: Jinho Kim Date: Fri, 6 Nov 2015 10:55:49 +0900 Subject: [PATCH 2/2] fix broken test --- .../src/test/java/org/apache/tajo/rpc/TestAsyncRpc.java | 2 +- .../test/java/org/apache/tajo/rpc/TestBlockingRpc.java | 9 +++------ .../tajo/rpc/test/impl/DummyProtocolAsyncImpl.java | 2 +- .../tajo/rpc/test/impl/DummyProtocolBlockingImpl.java | 2 +- 4 files changed, 6 insertions(+), 9 deletions(-) diff --git a/tajo-rpc/tajo-rpc-protobuf/src/test/java/org/apache/tajo/rpc/TestAsyncRpc.java b/tajo-rpc/tajo-rpc-protobuf/src/test/java/org/apache/tajo/rpc/TestAsyncRpc.java index 9de8f3fdbd..1acfe40029 100644 --- a/tajo-rpc/tajo-rpc-protobuf/src/test/java/org/apache/tajo/rpc/TestAsyncRpc.java +++ b/tajo-rpc/tajo-rpc-protobuf/src/test/java/org/apache/tajo/rpc/TestAsyncRpc.java @@ -603,7 +603,7 @@ public void testRequestTimeoutOnBusy() throws Exception { EchoMessage echoMessage = EchoMessage.newBuilder() .setMessage(MESSAGE).build(); CallFuture future = new CallFuture<>(); - stub.busy(future.getController(), echoMessage, future); //30 sec delay + stub.busy(future.getController(), echoMessage, future); //10 sec delay assertFalse(future.isDone()); EchoMessage result = null; diff --git a/tajo-rpc/tajo-rpc-protobuf/src/test/java/org/apache/tajo/rpc/TestBlockingRpc.java b/tajo-rpc/tajo-rpc-protobuf/src/test/java/org/apache/tajo/rpc/TestBlockingRpc.java index faa45284b4..08ab8874da 100644 --- a/tajo-rpc/tajo-rpc-protobuf/src/test/java/org/apache/tajo/rpc/TestBlockingRpc.java +++ b/tajo-rpc/tajo-rpc-protobuf/src/test/java/org/apache/tajo/rpc/TestBlockingRpc.java @@ -245,7 +245,7 @@ public void testServerShutdown2() throws Exception { assertTrue(expect); } - @Test + @Test(timeout = 60000) public void testServerShutdown3() throws Exception { final StringBuilder error = new StringBuilder(); Thread callThread = new Thread() { @@ -275,7 +275,6 @@ public void run() { } try { server.shutdown(true); - server = null; latch.countDown(); } catch (Throwable e) { e.printStackTrace(); @@ -284,9 +283,7 @@ public void run() { }; shutdownThread.start(); - assertTrue(latch.await(5 * 1000, TimeUnit.MILLISECONDS)); - - assertTrue(latch.getCount() == 0); + latch.await(); synchronized (error) { error.wait(5 * 1000); @@ -558,7 +555,7 @@ public void testRequestTimeoutOnBusy() throws Exception { boolean expected = false; try { - EchoMessage message = stub.busy(null, echoMessage); //30 sec delay + EchoMessage message = stub.busy(null, echoMessage); //10 sec delay fail(); } catch (TajoServiceException e) { expected = true; diff --git a/tajo-rpc/tajo-rpc-protobuf/src/test/java/org/apache/tajo/rpc/test/impl/DummyProtocolAsyncImpl.java b/tajo-rpc/tajo-rpc-protobuf/src/test/java/org/apache/tajo/rpc/test/impl/DummyProtocolAsyncImpl.java index abcc0576ca..e1ea58e0dd 100644 --- a/tajo-rpc/tajo-rpc-protobuf/src/test/java/org/apache/tajo/rpc/test/impl/DummyProtocolAsyncImpl.java +++ b/tajo-rpc/tajo-rpc-protobuf/src/test/java/org/apache/tajo/rpc/test/impl/DummyProtocolAsyncImpl.java @@ -83,7 +83,7 @@ public void delay(RpcController controller, EchoMessage request, public void busy(RpcController controller, EchoMessage request, RpcCallback done) { try { - Thread.sleep(30000); + Thread.sleep(10000); } catch (InterruptedException e) { LOG.error(e.getMessage()); } diff --git a/tajo-rpc/tajo-rpc-protobuf/src/test/java/org/apache/tajo/rpc/test/impl/DummyProtocolBlockingImpl.java b/tajo-rpc/tajo-rpc-protobuf/src/test/java/org/apache/tajo/rpc/test/impl/DummyProtocolBlockingImpl.java index 40eb18f417..d37d07e574 100644 --- a/tajo-rpc/tajo-rpc-protobuf/src/test/java/org/apache/tajo/rpc/test/impl/DummyProtocolBlockingImpl.java +++ b/tajo-rpc/tajo-rpc-protobuf/src/test/java/org/apache/tajo/rpc/test/impl/DummyProtocolBlockingImpl.java @@ -79,7 +79,7 @@ public EchoMessage delay(RpcController controller, EchoMessage request) @Override public EchoMessage busy(RpcController controller, EchoMessage request) { try { - Thread.sleep(30000); + Thread.sleep(10000); } catch (InterruptedException e) { LOG.error(e.getMessage()); }