Cleanup JobEntry 68/82568/4
authorRobert Varga <robert.varga@pantheon.tech>
Wed, 19 Jun 2019 11:26:40 +0000 (13:26 +0200)
committerRobert Varga <nite@hq.sk>
Mon, 8 Jul 2019 10:58:55 +0000 (10:58 +0000)
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 <robert.varga@pantheon.tech>
applications/forwardingrules-manager/src/main/java/org/opendaylight/openflowplugin/applications/frm/nodeconfigurator/JobEntry.java
applications/forwardingrules-manager/src/main/java/org/opendaylight/openflowplugin/applications/frm/nodeconfigurator/NodeConfiguratorImpl.java

index c6c19a6419ceedcff3554b0edc5fd523dd8029fe..76ccaabf76db733f9ee4648129a92b9bcf360dcb 100644 (file)
@@ -17,35 +17,32 @@ import javax.annotation.Nullable;
  * enqueued to the book-keeping data structure.
  */
 class JobEntry<T> {
-
+    private final SettableFuture<T> resultFuture = SettableFuture.create();
+    private @Nullable final Callable<ListenableFuture<T>> mainWorker;
     private final String key;
-    private volatile @Nullable Callable<ListenableFuture<T>> mainWorker;
-    private volatile SettableFuture<T> resultFuture;
 
     JobEntry(String key, Callable<ListenableFuture<T>> mainWorker) {
         this.key = key;
         this.mainWorker = mainWorker;
-        resultFuture = SettableFuture.create();
     }
 
-    public String getKey() {
+    String getKey() {
         return key;
     }
 
-    @Nullable public Callable<ListenableFuture<T>> getMainWorker() {
+    @Nullable Callable<ListenableFuture<T>> getMainWorker() {
         return mainWorker;
     }
 
-    public void setMainWorker(@Nullable Callable<ListenableFuture<T>> mainWorker) {
-        this.mainWorker = mainWorker;
-    }
-
-    public ListenableFuture<T> getResultFuture() {
+    ListenableFuture<T> 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);
+    }
 }
index 70d57f0db217fb18f43a81546b3c83079461d070..b82fc7a1bc5e5a9920c9c3b30bfbd3acbb2c1ed7 100644 (file)
@@ -64,7 +64,7 @@ public class NodeConfiguratorImpl implements NodeConfigurator {
         final Callable<ListenableFuture<T>> 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());