aboutsummaryrefslogtreecommitdiffstats
path: root/documentapi
diff options
context:
space:
mode:
authorBjørn Christian Seime <bjorncs@oath.com>2018-09-27 16:04:47 +0200
committerBjørn Christian Seime <bjorncs@oath.com>2018-09-27 16:04:47 +0200
commit633448fcdb925a8efe2f78614e6a03fb88fe8a5e (patch)
treeb5e3ca97675fa310158f2c82c91f4e0d5c9d3bb4 /documentapi
parent3983f26df5038419d769df3b82181c8ebb9a42f1 (diff)
Remove use of finalizer
Diffstat (limited to 'documentapi')
-rwxr-xr-xdocumentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/ExternPolicy.java14
1 files changed, 6 insertions, 8 deletions
diff --git a/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/ExternPolicy.java b/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/ExternPolicy.java
index 5a68e5bda2a..e60fb128d29 100755
--- a/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/ExternPolicy.java
+++ b/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/ExternPolicy.java
@@ -13,6 +13,7 @@ import com.yahoo.messagebus.routing.RoutingContext;
import java.util.ArrayList;
import java.util.List;
+import java.util.concurrent.atomic.AtomicBoolean;
/**
* This policy implements the necessary logic to communicate with an external Vespa application and resolve its list of
@@ -30,6 +31,7 @@ public class ExternPolicy implements DocumentProtocolRoutingPolicy {
private int offset = 0;
private int generation = 0;
private final List<Hop> recipients = new ArrayList<>();
+ private final AtomicBoolean destroyed = new AtomicBoolean(false);
/**
* Constructs a new instance of this policy. The argument given is the connection spec to the slobrok to use for
@@ -109,14 +111,6 @@ public class ExternPolicy implements DocumentProtocolRoutingPolicy {
}
}
- @Override
- @SuppressWarnings("deprecation") // finalize() is deprecated from Java 9
- public void finalize() throws Throwable {
- super.finalize();
- mirror.shutdown();
- orb.transport().shutdown().join();
- }
-
public void select(RoutingContext ctx) {
if (error != null) {
ctx.setError(DocumentProtocol.ERROR_POLICY_FAILURE, error);
@@ -139,7 +133,11 @@ public class ExternPolicy implements DocumentProtocolRoutingPolicy {
DocumentProtocol.merge(ctx);
}
+ @Override
public void destroy() {
+ if (destroyed.getAndSet(true)) throw new RuntimeException("Already destroyed");
+ mirror.shutdown();
+ orb.transport().shutdown().join();
}
public MetricSet getMetrics() {