Use CommitInfo in AsyncNotifyingSettableFuture 31/100031/1 3.0.x
authorRobert Varga <robert.varga@pantheon.tech>
Wed, 9 Mar 2022 18:04:16 +0000 (19:04 +0100)
committerRobert Varga <nite@hq.sk>
Wed, 9 Mar 2022 21:45:43 +0000 (21:45 +0000)
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>
(cherry picked from commit 4d2bbed60d5e0e1ea23a994e87b306416a3e51eb)

opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/databroker/ConcurrentDOMDataBroker.java

index dce32b6a7417b38d9941577b9c27bdb8a9aa3220..bb77165dffca9f6a88b7514be77ce419f10cb0c4 100644 (file)
@@ -94,8 +94,7 @@ public class ConcurrentDOMDataBroker extends AbstractDOMBroker {
 
         doCanCommit(clientSubmitFuture, transaction, cohorts);
 
-        return FluentFuture.from(clientSubmitFuture).transform(ignored -> CommitInfo.empty(),
-                MoreExecutors.directExecutor());
+        return FluentFuture.from(clientSubmitFuture);
     }
 
     private void doCanCommit(final AsyncNotifyingSettableFuture clientSubmitFuture,
@@ -257,8 +256,7 @@ public class ConcurrentDOMDataBroker extends AbstractDOMBroker {
      * 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.
          */
@@ -287,7 +285,7 @@ public class ConcurrentDOMDataBroker extends AbstractDOMBroker {
         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);
             }