Use CommitInfo in AsyncNotifyingSettableFuture 51/100051/1
authorRobert Varga <robert.varga@pantheon.tech>
Wed, 9 Mar 2022 18:04:16 +0000 (19:04 +0100)
committerRobert Varga <robert.varga@pantheon.tech>
Wed, 9 Mar 2022 18:04:16 +0000 (19:04 +0100)
We are performing a future transformation which boils down to converting
a null (Void) into an CommitInfo.empty().

Rather than doing that, let's make sure AsyncNotifyingSettableFuture
results directly in CommitInfo, removing the need for transformation,
saving us an object allocation and a few CPU cycles.

Change-Id: I7e34ad5e24dc6470d16243dad5ce7ba7395c5397
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/databroker/ConcurrentDOMDataBroker.java

index 36b47eff69baab59e5afe6b372f53cd3ca3b0dec..28151cc4138d601cb4f9a5fd6c80b77a287163db 100644 (file)
@@ -95,8 +95,7 @@ public class ConcurrentDOMDataBroker extends AbstractDOMBroker {
 
         doCanCommit(clientSubmitFuture, transaction, cohorts);
 
 
         doCanCommit(clientSubmitFuture, transaction, cohorts);
 
-        return FluentFuture.from(clientSubmitFuture).transform(ignored -> CommitInfo.empty(),
-                MoreExecutors.directExecutor());
+        return FluentFuture.from(clientSubmitFuture);
     }
 
     private void doCanCommit(final AsyncNotifyingSettableFuture clientSubmitFuture,
     }
 
     private void doCanCommit(final AsyncNotifyingSettableFuture clientSubmitFuture,
@@ -249,8 +248,7 @@ public class ConcurrentDOMDataBroker extends AbstractDOMBroker {
      * FIXME: This class should probably be moved to yangtools common utils for re-usability and
      * unified with AsyncNotifyingListenableFutureTask.
      */
      * FIXME: This class should probably be moved to yangtools common utils for re-usability and
      * unified with AsyncNotifyingListenableFutureTask.
      */
-    private static class AsyncNotifyingSettableFuture extends AbstractFuture<Void> {
-
+    private static class AsyncNotifyingSettableFuture extends AbstractFuture<CommitInfo> {
         /**
          * ThreadLocal used to detect if the task completion thread is running the future listener Runnables.
          */
         /**
          * ThreadLocal used to detect if the task completion thread is running the future listener Runnables.
          */
@@ -279,7 +277,7 @@ public class ConcurrentDOMDataBroker extends AbstractDOMBroker {
         boolean set() {
             ON_TASK_COMPLETION_THREAD_TL.set(Boolean.TRUE);
             try {
         boolean set() {
             ON_TASK_COMPLETION_THREAD_TL.set(Boolean.TRUE);
             try {
-                return super.set(null);
+                return super.set(CommitInfo.empty());
             } finally {
                 ON_TASK_COMPLETION_THREAD_TL.set(null);
             }
             } finally {
                 ON_TASK_COMPLETION_THREAD_TL.set(null);
             }