summaryrefslogtreecommitdiffstats
path: root/jrt
diff options
context:
space:
mode:
authorHåvard Pettersen <havardpe@oath.com>2020-02-05 15:37:03 +0000
committerHåvard Pettersen <havardpe@oath.com>2020-02-05 15:37:03 +0000
commit942de58890c972539d8f8842823e6924f6e1ab05 (patch)
tree4513dade872a1bd3b3478df6a2e3e02d6a64958b /jrt
parentdd5388a31d85fdf2442db15b3ccfffef86392f67 (diff)
simplify connector
Diffstat (limited to 'jrt')
-rw-r--r--jrt/src/com/yahoo/jrt/Connector.java34
-rw-r--r--jrt/src/com/yahoo/jrt/Transport.java5
2 files changed, 6 insertions, 33 deletions
diff --git a/jrt/src/com/yahoo/jrt/Connector.java b/jrt/src/com/yahoo/jrt/Connector.java
index 61143e8a78b..98bf5124545 100644
--- a/jrt/src/com/yahoo/jrt/Connector.java
+++ b/jrt/src/com/yahoo/jrt/Connector.java
@@ -10,20 +10,10 @@ import java.util.concurrent.TimeUnit;
class Connector {
- private final Transport parent;
private final ExecutorService executor = Executors.newCachedThreadPool(ThreadFactoryFactory.getDaemonThreadFactory("jrt.connector"));
- private boolean done = false;
private void connect(Connection conn) {
- try {
- conn.transportThread().addConnection(conn.connect());
- } catch (Throwable problem) {
- parent.handleFailure(problem, Connector.this);
- }
- }
-
- public Connector(Transport parent) {
- this.parent = parent;
+ conn.transportThread().addConnection(conn.connect());
}
public void connectLater(Connection conn) {
@@ -32,35 +22,19 @@ class Connector {
} catch (RejectedExecutionException e) {
conn.transportThread().addConnection(conn);
}
-
}
public Connector shutdown() {
executor.shutdown();
- join();
- synchronized (this) {
- done = true;
- notifyAll();
- }
- return this;
- }
-
- public synchronized void waitDone() {
- while (!done) {
- try { wait(); } catch (InterruptedException x) {}
- }
- }
-
- public synchronized Connector exit() {
- notifyAll();
return this;
}
public void join() {
while (true) {
try {
- executor.awaitTermination(60, TimeUnit.SECONDS);
- return;
+ if (executor.awaitTermination(60, TimeUnit.SECONDS)) {
+ return;
+ }
} catch (InterruptedException e) {}
}
}
diff --git a/jrt/src/com/yahoo/jrt/Transport.java b/jrt/src/com/yahoo/jrt/Transport.java
index f4eb1acd096..ad42409c48a 100644
--- a/jrt/src/com/yahoo/jrt/Transport.java
+++ b/jrt/src/com/yahoo/jrt/Transport.java
@@ -46,7 +46,7 @@ public class Transport {
this.fatalHandler = fatalHandler; // NB: this must be set first
}
this.cryptoEngine = cryptoEngine;
- connector = new Connector(this);
+ connector = new Connector();
worker = new Worker(this);
runCnt = new AtomicInteger(numThreads);
for (int i = 0; i < numThreads; ++i) {
@@ -162,7 +162,7 @@ public class Transport {
* @return this object, to enable chaining with join
**/
public Transport shutdown() {
- connector.shutdown().waitDone();
+ connector.shutdown().join();
for (TransportThread thread: threads) {
thread.shutdown();
}
@@ -181,7 +181,6 @@ public class Transport {
void notifyDone(TransportThread self) {
if (runCnt.decrementAndGet() == 0) {
worker.shutdown().join();
- connector.exit().join();
try { cryptoEngine.close(); } catch (Exception e) {}
}
}