From 310c8fa14f33cbc4e5cfa7887bc3af9f3b8d1990 Mon Sep 17 00:00:00 2001 From: Stephen Kitt Date: Fri, 2 Nov 2018 16:41:37 +0100 Subject: [PATCH] Close ReadTransactions 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 --- .../applications/bulk/o/matic/FlowReader.java | 3 +-- .../applications/bulk/o/matic/FlowWriterDirectOFRpc.java | 3 +-- .../frm/impl/ForwardingRulesManagerImpl.java | 6 ++---- .../southboundcli/ReconciliationServiceImpl.java | 5 +---- .../applications/southboundcli/util/ShellUtil.java | 9 +++------ 5 files changed, 8 insertions(+), 18 deletions(-) diff --git a/applications/bulk-o-matic/src/main/java/org/opendaylight/openflowplugin/applications/bulk/o/matic/FlowReader.java b/applications/bulk-o-matic/src/main/java/org/opendaylight/openflowplugin/applications/bulk/o/matic/FlowReader.java index 4b9ff5761f..424a166a1b 100644 --- a/applications/bulk-o-matic/src/main/java/org/opendaylight/openflowplugin/applications/bulk/o/matic/FlowReader.java +++ b/applications/bulk-o-matic/src/main/java/org/opendaylight/openflowplugin/applications/bulk/o/matic/FlowReader.java @@ -79,8 +79,7 @@ public final class FlowReader implements Runnable, FlowCounterMBean { String flowId = "Flow-" + dpId + "." + tableId + "." + sourceIp; InstanceIdentifier flowIid = getFlowInstanceIdentifier(dpId, tableId, flowId); - ReadOnlyTransaction readOnlyTransaction = dataBroker.newReadOnlyTransaction(); - try { + try (ReadOnlyTransaction readOnlyTransaction = dataBroker.newReadOnlyTransaction()) { Optional flowOptional; if (isConfigDs) { flowOptional = readOnlyTransaction.read(LogicalDatastoreType.CONFIGURATION, flowIid) diff --git a/applications/bulk-o-matic/src/main/java/org/opendaylight/openflowplugin/applications/bulk/o/matic/FlowWriterDirectOFRpc.java b/applications/bulk-o-matic/src/main/java/org/opendaylight/openflowplugin/applications/bulk/o/matic/FlowWriterDirectOFRpc.java index b3471d4b8c..5632425239 100644 --- a/applications/bulk-o-matic/src/main/java/org/opendaylight/openflowplugin/applications/bulk/o/matic/FlowWriterDirectOFRpc.java +++ b/applications/bulk-o-matic/src/main/java/org/opendaylight/openflowplugin/applications/bulk/o/matic/FlowWriterDirectOFRpc.java @@ -76,9 +76,8 @@ public class FlowWriterDirectOFRpc { Set nodeIds = new HashSet<>(); InstanceIdentifier nodes = InstanceIdentifier.create(Nodes.class); - ReadOnlyTransaction readOnlyTransaction = dataBroker.newReadOnlyTransaction(); - try { + try (ReadOnlyTransaction readOnlyTransaction = dataBroker.newReadOnlyTransaction()) { Optional nodesDataNode = readOnlyTransaction.read(LogicalDatastoreType.OPERATIONAL, nodes) .checkedGet(); if (nodesDataNode.isPresent()) { diff --git a/applications/forwardingrules-manager/src/main/java/org/opendaylight/openflowplugin/applications/frm/impl/ForwardingRulesManagerImpl.java b/applications/forwardingrules-manager/src/main/java/org/opendaylight/openflowplugin/applications/frm/impl/ForwardingRulesManagerImpl.java index e7d6c7d83b..6deef293c3 100644 --- a/applications/forwardingrules-manager/src/main/java/org/opendaylight/openflowplugin/applications/frm/impl/ForwardingRulesManagerImpl.java +++ b/applications/forwardingrules-manager/src/main/java/org/opendaylight/openflowplugin/applications/frm/impl/ForwardingRulesManagerImpl.java @@ -218,10 +218,9 @@ public class ForwardingRulesManagerImpl implements ForwardingRulesManager { public boolean checkNodeInOperationalDataStore(InstanceIdentifier ident) { boolean result = false; InstanceIdentifier nodeIid = ident.firstIdentifierOf(Node.class); - final ReadOnlyTransaction transaction = dataService.newReadOnlyTransaction(); - ListenableFuture> future = transaction + try (ReadOnlyTransaction transaction = dataService.newReadOnlyTransaction()) { + ListenableFuture> future = transaction .read(LogicalDatastoreType.OPERATIONAL, nodeIid); - try { com.google.common.base.Optional 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; } diff --git a/applications/southbound-cli/src/main/java/org/opendaylight/openflowplugin/applications/southboundcli/ReconciliationServiceImpl.java b/applications/southbound-cli/src/main/java/org/opendaylight/openflowplugin/applications/southboundcli/ReconciliationServiceImpl.java index dbd01f196e..28e24c6d0f 100644 --- a/applications/southbound-cli/src/main/java/org/opendaylight/openflowplugin/applications/southboundcli/ReconciliationServiceImpl.java +++ b/applications/southbound-cli/src/main/java/org/opendaylight/openflowplugin/applications/southboundcli/ReconciliationServiceImpl.java @@ -141,14 +141,11 @@ public class ReconciliationServiceImpl implements ReconciliationService, AutoClo InstanceIdentifier 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(); } diff --git a/applications/southbound-cli/src/main/java/org/opendaylight/openflowplugin/applications/southboundcli/util/ShellUtil.java b/applications/southbound-cli/src/main/java/org/opendaylight/openflowplugin/applications/southboundcli/util/ShellUtil.java index f3dc9cada8..086f4a3613 100644 --- a/applications/southbound-cli/src/main/java/org/opendaylight/openflowplugin/applications/southboundcli/util/ShellUtil.java +++ b/applications/southbound-cli/src/main/java/org/opendaylight/openflowplugin/applications/southboundcli/util/ShellUtil.java @@ -41,9 +41,8 @@ public final class ShellUtil { @Nonnull public static List getAllNodes(final DataBroker broker) { List nodes = null; - ReadOnlyTransaction tx = broker.newReadOnlyTransaction(); InstanceIdentifier path = InstanceIdentifier.builder(Nodes.class).build(); - try { + try (ReadOnlyTransaction tx = broker.newReadOnlyTransaction()) { Optional 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 path = InstanceIdentifier.builder(Nodes.class) .child(Node.class, new NodeKey(new NodeId(NODE_PREFIX + nodeId))).build(); - try { + try (ReadOnlyTransaction tx = broker.newReadOnlyTransaction()) { Optional 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 getReconcileCount(final DataBroker dataBroker) { - ReadOnlyTransaction tx = dataBroker.newReadOnlyTransaction(); InstanceIdentifier instanceIdentifier = InstanceIdentifier .builder(ReconciliationCounter.class).build(); List output = Collections.emptyList(); - try { + try (ReadOnlyTransaction tx = dataBroker.newReadOnlyTransaction()) { Optional result = tx.read(LogicalDatastoreType.OPERATIONAL, instanceIdentifier).get(); if (result.isPresent()) { -- 2.36.6