Mark PCEPStatefulPeerProposal for evolution 83/98583/1
authorRobert Varga <robert.varga@pantheon.tech>
Wed, 17 Nov 2021 11:47:15 +0000 (12:47 +0100)
committerRobert Varga <robert.varga@pantheon.tech>
Wed, 17 Nov 2021 11:49:08 +0000 (12:49 +0100)
As it turns out, we have a number of datastore interactions outside
of PCEPTopologyDeployerImpl. Mark another a synchronous read() for
evolution, as we clearly need to rework the entire configuration
lifecycle.

JIRA: BGPCEP-893
Change-Id: Ibac9c98877d72b5fb3c44a46fd97b075f80433a0
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
pcep/topology/topology-provider/src/main/java/org/opendaylight/bgpcep/pcep/topology/provider/PCEPStatefulPeerProposal.java

index f346a9053a0034e6d22e09aa47e1d79cfbf9b054..d92c3ef426332ecff8a679f379a8f82dc4071e9f 100644 (file)
@@ -52,10 +52,10 @@ final class PCEPStatefulPeerProposal {
     void setPeerProposal(final NodeId nodeId, final TlvsBuilder openTlvsBuilder, final byte[] speakerId) {
         if (isSynOptimizationEnabled(openTlvsBuilder)) {
             Optional<LspDbVersion> result = Optional.empty();
-            try (ReadTransaction rTx = this.dataBroker.newReadOnlyTransaction()) {
-                final ListenableFuture<Optional<LspDbVersion>> future = rTx.read(
-                        LogicalDatastoreType.OPERATIONAL,
-                        this.topologyId.child(Node.class, new NodeKey(nodeId)).augmentation(Node1.class)
+            try (ReadTransaction rTx = dataBroker.newReadOnlyTransaction()) {
+                // FIXME: we should be listening for this configuration and keep a proper cache
+                final ListenableFuture<Optional<LspDbVersion>> future = rTx.read(LogicalDatastoreType.OPERATIONAL,
+                        topologyId.child(Node.class, new NodeKey(nodeId)).augmentation(Node1.class)
                                 .child(PathComputationClient.class).augmentation(PathComputationClient1.class)
                                 .child(LspDbVersion.class));
                 try {
@@ -82,9 +82,12 @@ final class PCEPStatefulPeerProposal {
     }
 
     private static boolean isSynOptimizationEnabled(final TlvsBuilder openTlvsBuilder) {
-        final Tlvs1 statefulTlv = openTlvsBuilder.augmentation(Tlvs1.class);
-        if (statefulTlv != null && statefulTlv.getStateful() != null) {
-            return statefulTlv.getStateful().augmentation(Stateful1.class) != null;
+        final var statefulTlv = openTlvsBuilder.augmentation(Tlvs1.class);
+        if (statefulTlv != null) {
+            final var stateful = statefulTlv.getStateful();
+            if (stateful != null) {
+                return stateful.augmentation(Stateful1.class) != null;
+            }
         }
         return false;
     }