Close ReadTransactions 58/77458/1
authorStephen Kitt <skitt@redhat.com>
Fri, 2 Nov 2018 15:41:37 +0000 (16:41 +0100)
committerStephen Kitt <skitt@redhat.com>
Fri, 2 Nov 2018 15:41:37 +0000 (16:41 +0100)
This handles a number of ReadTransactions using try-with-resources to
ensure they are closed in all cases.

Change-Id: I40d98e93cb47ec6e839d5fa29da16fa787afacf5
Signed-off-by: Stephen Kitt <skitt@redhat.com>
applications/bulk-o-matic/src/main/java/org/opendaylight/openflowplugin/applications/bulk/o/matic/FlowReader.java
applications/bulk-o-matic/src/main/java/org/opendaylight/openflowplugin/applications/bulk/o/matic/FlowWriterDirectOFRpc.java
applications/forwardingrules-manager/src/main/java/org/opendaylight/openflowplugin/applications/frm/impl/ForwardingRulesManagerImpl.java
applications/southbound-cli/src/main/java/org/opendaylight/openflowplugin/applications/southboundcli/ReconciliationServiceImpl.java
applications/southbound-cli/src/main/java/org/opendaylight/openflowplugin/applications/southboundcli/util/ShellUtil.java

index 4b9ff5761f1a1a9f0cbbb6388bae5b8a5ce33253..424a166a1be335bd4b7bd628e3415d5be9282788 100644 (file)
@@ -79,8 +79,7 @@ public final class FlowReader implements Runnable, FlowCounterMBean {
                 String flowId = "Flow-" + dpId + "." + tableId + "." + sourceIp;
                 InstanceIdentifier<Flow> flowIid = getFlowInstanceIdentifier(dpId, tableId, flowId);
 
-                ReadOnlyTransaction readOnlyTransaction = dataBroker.newReadOnlyTransaction();
-                try {
+                try (ReadOnlyTransaction readOnlyTransaction = dataBroker.newReadOnlyTransaction()) {
                     Optional<Flow> flowOptional;
                     if (isConfigDs) {
                         flowOptional = readOnlyTransaction.read(LogicalDatastoreType.CONFIGURATION, flowIid)
index b3471d4b8cfcfabb2b6e808d900b3493b8036349..5632425239fc11673341ca3ba6a29603b2fd5a39 100644 (file)
@@ -76,9 +76,8 @@ public class FlowWriterDirectOFRpc {
 
         Set<String> nodeIds = new HashSet<>();
         InstanceIdentifier<Nodes> nodes = InstanceIdentifier.create(Nodes.class);
-        ReadOnlyTransaction readOnlyTransaction = dataBroker.newReadOnlyTransaction();
 
-        try {
+        try (ReadOnlyTransaction readOnlyTransaction = dataBroker.newReadOnlyTransaction()) {
             Optional<Nodes> nodesDataNode = readOnlyTransaction.read(LogicalDatastoreType.OPERATIONAL, nodes)
                     .checkedGet();
             if (nodesDataNode.isPresent()) {
index e7d6c7d83baa3ba48f8168bd0bb3e4ac993de3fb..6deef293c323b01e5b3ec5f9779c6121730b1598 100644 (file)
@@ -218,10 +218,9 @@ public class ForwardingRulesManagerImpl implements ForwardingRulesManager {
     public boolean checkNodeInOperationalDataStore(InstanceIdentifier<FlowCapableNode> ident) {
         boolean result = false;
         InstanceIdentifier<Node> nodeIid = ident.firstIdentifierOf(Node.class);
-        final ReadOnlyTransaction transaction = dataService.newReadOnlyTransaction();
-        ListenableFuture<com.google.common.base.Optional<Node>> future = transaction
+        try (ReadOnlyTransaction transaction = dataService.newReadOnlyTransaction()) {
+            ListenableFuture<com.google.common.base.Optional<Node>> future = transaction
                 .read(LogicalDatastoreType.OPERATIONAL, nodeIid);
-        try {
             com.google.common.base.Optional<Node> optionalDataObject = future.get();
             if (optionalDataObject.isPresent()) {
                 result = true;
@@ -231,7 +230,6 @@ public class ForwardingRulesManagerImpl implements ForwardingRulesManager {
         } catch (ExecutionException | InterruptedException e) {
             LOG.warn("Failed to read {} ", nodeIid, e);
         }
-        transaction.close();
 
         return result;
     }
index dbd01f196e2cb0e258676560cc38baf4e3ed46f2..28e24c6d0f4317fd9f6655e563cb98d955db697d 100644 (file)
@@ -141,14 +141,11 @@ public class ReconciliationServiceImpl implements ReconciliationService, AutoClo
         InstanceIdentifier<ReconciliationStateList> instanceIdentifier = InstanceIdentifier
                 .builder(ReconciliationState.class).child(ReconciliationStateList.class,
                         new ReconciliationStateListKey(new BigInteger(String.valueOf(nodeId)))).build();
-        ReadOnlyTransaction tx = broker.newReadOnlyTransaction();
-        try {
+        try (ReadOnlyTransaction tx = broker.newReadOnlyTransaction()) {
             return tx.read(LogicalDatastoreType.OPERATIONAL, instanceIdentifier).get();
 
         } catch (InterruptedException  | ExecutionException e) {
             LOG.error("Exception while reading reconciliation state for {}", nodeId, e);
-        } finally {
-            tx.close();
         }
         return Optional.absent();
     }
index f3dc9cada82b70979c2317c94b1c46c5fa94e7aa..086f4a361371007f1232ab490990e6ec4264e9a8 100644 (file)
@@ -41,9 +41,8 @@ public final class ShellUtil {
     @Nonnull
     public static List<OFNode> getAllNodes(final DataBroker broker) {
         List<Node> nodes = null;
-        ReadOnlyTransaction tx = broker.newReadOnlyTransaction();
         InstanceIdentifier<Nodes> path = InstanceIdentifier.builder(Nodes.class).build();
-        try {
+        try (ReadOnlyTransaction tx = broker.newReadOnlyTransaction()) {
             Optional<Nodes> result = tx.read(LogicalDatastoreType.OPERATIONAL, path).get();
             if (result.isPresent()) {
                 nodes = result.get().getNode();
@@ -95,11 +94,10 @@ public final class ShellUtil {
 
     public static OFNode getNodeInfo(final Long nodeId, final DataBroker broker) {
         OFNode ofNode = null;
-        ReadOnlyTransaction tx = broker.newReadOnlyTransaction();
         InstanceIdentifier<Node> path = InstanceIdentifier.builder(Nodes.class)
                 .child(Node.class, new NodeKey(new NodeId(NODE_PREFIX + nodeId))).build();
 
-        try {
+        try (ReadOnlyTransaction tx = broker.newReadOnlyTransaction()) {
             Optional<Node> result = tx.read(LogicalDatastoreType.OPERATIONAL, path).get();
             if (result.isPresent()) {
                 Node node = result.get();
@@ -137,11 +135,10 @@ public final class ShellUtil {
     }
 
     public static List<ReconcileCounter> getReconcileCount(final DataBroker dataBroker) {
-        ReadOnlyTransaction tx = dataBroker.newReadOnlyTransaction();
         InstanceIdentifier<ReconciliationCounter> instanceIdentifier = InstanceIdentifier
                 .builder(ReconciliationCounter.class).build();
         List<ReconcileCounter> output = Collections.emptyList();
-        try {
+        try (ReadOnlyTransaction tx = dataBroker.newReadOnlyTransaction()) {
             Optional<ReconciliationCounter> result =
                     tx.read(LogicalDatastoreType.OPERATIONAL, instanceIdentifier).get();
             if (result.isPresent()) {