From 5053f519153bab9014dc4c71d0963a9cc3b713bb Mon Sep 17 00:00:00 2001 From: Robert Varga Date: Wed, 19 Jun 2019 13:26:40 +0200 Subject: [PATCH] Cleanup JobEntry This is an implementation-private class, which is just a holder DTO. The fields are not really mutable, hence make them final and make sure we can communicate failures through it. Change-Id: I5106329af0e193fb420ac0603033972bb56dea62 Signed-off-by: Robert Varga --- .../frm/nodeconfigurator/JobEntry.java | 23 ++++++++----------- .../NodeConfiguratorImpl.java | 7 +++--- 2 files changed, 14 insertions(+), 16 deletions(-) diff --git a/applications/forwardingrules-manager/src/main/java/org/opendaylight/openflowplugin/applications/frm/nodeconfigurator/JobEntry.java b/applications/forwardingrules-manager/src/main/java/org/opendaylight/openflowplugin/applications/frm/nodeconfigurator/JobEntry.java index c6c19a6419..76ccaabf76 100644 --- a/applications/forwardingrules-manager/src/main/java/org/opendaylight/openflowplugin/applications/frm/nodeconfigurator/JobEntry.java +++ b/applications/forwardingrules-manager/src/main/java/org/opendaylight/openflowplugin/applications/frm/nodeconfigurator/JobEntry.java @@ -17,35 +17,32 @@ import javax.annotation.Nullable; * enqueued to the book-keeping data structure. */ class JobEntry { - + private final SettableFuture resultFuture = SettableFuture.create(); + private @Nullable final Callable> mainWorker; private final String key; - private volatile @Nullable Callable> mainWorker; - private volatile SettableFuture resultFuture; JobEntry(String key, Callable> mainWorker) { this.key = key; this.mainWorker = mainWorker; - resultFuture = SettableFuture.create(); } - public String getKey() { + String getKey() { return key; } - @Nullable public Callable> getMainWorker() { + @Nullable Callable> getMainWorker() { return mainWorker; } - public void setMainWorker(@Nullable Callable> mainWorker) { - this.mainWorker = mainWorker; - } - - public ListenableFuture getResultFuture() { + ListenableFuture getResultFuture() { return resultFuture; } - public void setResultFuture(@Nullable T result) { - this.resultFuture.set(result); + void setResult(@Nullable T result) { + resultFuture.set(result); } + void setFailure(Throwable failure) { + resultFuture.setException(failure); + } } diff --git a/applications/forwardingrules-manager/src/main/java/org/opendaylight/openflowplugin/applications/frm/nodeconfigurator/NodeConfiguratorImpl.java b/applications/forwardingrules-manager/src/main/java/org/opendaylight/openflowplugin/applications/frm/nodeconfigurator/NodeConfiguratorImpl.java index 70d57f0db2..b82fc7a1bc 100644 --- a/applications/forwardingrules-manager/src/main/java/org/opendaylight/openflowplugin/applications/frm/nodeconfigurator/NodeConfiguratorImpl.java +++ b/applications/forwardingrules-manager/src/main/java/org/opendaylight/openflowplugin/applications/frm/nodeconfigurator/NodeConfiguratorImpl.java @@ -64,7 +64,7 @@ public class NodeConfiguratorImpl implements NodeConfigurator { final Callable> mainWorker = job.getMainWorker(); if (mainWorker == null) { LOG.error("Unexpected no (null) main worker on job: {}", job); - job.setResultFuture(null); + job.setResult(null); return; } @@ -73,7 +73,7 @@ public class NodeConfiguratorImpl implements NodeConfigurator { future = mainWorker.call(); } catch (Exception e) { LOG.error("Direct Exception (not failed Future) when executing job, won't even retry: {}", job, e); - job.setResultFuture(null); + job.setResult(null); return; } @@ -81,12 +81,13 @@ public class NodeConfiguratorImpl implements NodeConfigurator { @Override public void onSuccess(final T result) { LOG.trace("Job completed successfully: {}", job.getKey()); - job.setResultFuture(result); + job.setResult(result); } @Override public void onFailure(final Throwable cause) { LOG.error("Job {} failed", job.getKey(), cause); + job.setFailure(cause); } }, MoreExecutors.directExecutor()); -- 2.36.6