From 8a0393f718345b41b3415ca18a89ed412c59ddaa Mon Sep 17 00:00:00 2001 From: Simon Willnauer Date: Wed, 11 Jan 2017 23:37:12 +0100 Subject: [PATCH] Move assertion for open channels under TcpTransport lock TcpTransport has an actual mechanism to stop resources in subclasses. Instead of overriding `doStop` subclasses should override `stopInternal` that is executed under the connection lock guaranteeing that there is no concurrency etc. Relates to #22554 --- .../org/elasticsearch/transport/TcpTransport.java | 2 +- .../elasticsearch/transport/MockTcpTransport.java | 15 +++------------ 2 files changed, 4 insertions(+), 13 deletions(-) diff --git a/core/src/main/java/org/elasticsearch/transport/TcpTransport.java b/core/src/main/java/org/elasticsearch/transport/TcpTransport.java index f2b29706caf..8be107b1919 100644 --- a/core/src/main/java/org/elasticsearch/transport/TcpTransport.java +++ b/core/src/main/java/org/elasticsearch/transport/TcpTransport.java @@ -840,7 +840,7 @@ public abstract class TcpTransport extends AbstractLifecycleComponent i } @Override - protected void doClose() { + protected final void doClose() { } @Override diff --git a/test/framework/src/main/java/org/elasticsearch/transport/MockTcpTransport.java b/test/framework/src/main/java/org/elasticsearch/transport/MockTcpTransport.java index a08660bb388..51774edcba5 100644 --- a/test/framework/src/main/java/org/elasticsearch/transport/MockTcpTransport.java +++ b/test/framework/src/main/java/org/elasticsearch/transport/MockTcpTransport.java @@ -400,23 +400,14 @@ public class MockTcpTransport extends TcpTransport @Override protected void stopInternal() { ThreadPool.terminate(executor, 10, TimeUnit.SECONDS); + synchronized (openChannels) { + assert openChannels.isEmpty() : "there are still open channels: " + openChannels; + } } @Override protected Version getCurrentVersion() { return mockVersion; } - - @Override - protected void doClose() { - if (Thread.currentThread().isInterrupted() == false) { - // TCPTransport might be interrupted due to a timeout waiting for connections to be closed. - // in this case the thread is interrupted and we can't tell if we really missed something or if we are - // still closing connections. in such a case we don't assert the open channels - synchronized (openChannels) { - assert openChannels.isEmpty() : "there are still open channels: " + openChannels; - } - } - } }