From 0217e646030922e7ce48c560218e71d2191c587b Mon Sep 17 00:00:00 2001 From: Stephen Kitt Date: Fri, 2 Nov 2018 16:16:08 +0100 Subject: [PATCH] Close ReadTransactions from ForwardingRulesManager Change-Id: If8c644312ed6fd0ff76221ce2dc49ae61fda72de JIRA: OPNFLWPLUG-1043 Signed-off-by: Stephen Kitt --- .../applications/frm/ForwardingRulesManager.java | 2 +- .../applications/frm/impl/BundleFlowForwarder.java | 5 +++-- .../applications/frm/impl/FlowForwarder.java | 6 +++--- .../frm/impl/FlowNodeReconciliationImpl.java | 14 +++----------- .../frm/impl/ForwardingRulesManagerImpl.java | 2 +- 5 files changed, 11 insertions(+), 18 deletions(-) diff --git a/applications/forwardingrules-manager/src/main/java/org/opendaylight/openflowplugin/applications/frm/ForwardingRulesManager.java b/applications/forwardingrules-manager/src/main/java/org/opendaylight/openflowplugin/applications/frm/ForwardingRulesManager.java index dd0c8f4ca2..db7131f304 100644 --- a/applications/forwardingrules-manager/src/main/java/org/opendaylight/openflowplugin/applications/frm/ForwardingRulesManager.java +++ b/applications/forwardingrules-manager/src/main/java/org/opendaylight/openflowplugin/applications/frm/ForwardingRulesManager.java @@ -70,7 +70,7 @@ public interface ForwardingRulesManager extends ConfigurationListener, AutoClose * * @return ReadOnlyTransaction */ - ReadOnlyTransaction getReadTranaction(); + ReadOnlyTransaction getReadTransaction(); /** * Flow RPC service. diff --git a/applications/forwardingrules-manager/src/main/java/org/opendaylight/openflowplugin/applications/frm/impl/BundleFlowForwarder.java b/applications/forwardingrules-manager/src/main/java/org/opendaylight/openflowplugin/applications/frm/impl/BundleFlowForwarder.java index 2a9ce1041b..8f1caaedfc 100644 --- a/applications/forwardingrules-manager/src/main/java/org/opendaylight/openflowplugin/applications/frm/impl/BundleFlowForwarder.java +++ b/applications/forwardingrules-manager/src/main/java/org/opendaylight/openflowplugin/applications/frm/impl/BundleFlowForwarder.java @@ -25,6 +25,7 @@ import java.util.ArrayList; import java.util.List; import java.util.concurrent.ExecutionException; import java.util.concurrent.Future; +import org.opendaylight.controller.md.sal.binding.api.ReadOnlyTransaction; import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; import org.opendaylight.infrautils.utils.concurrent.JdkFutures; import org.opendaylight.openflowplugin.applications.frm.ForwardingRulesManager; @@ -148,8 +149,8 @@ public class BundleFlowForwarder { LOG.trace("The dependent group {} isn't programmed yet. Pushing the group", groupId); InstanceIdentifier groupIdent = buildGroupInstanceIdentifier(nodeIdent, groupId); LOG.info("Reading the group from config inventory: {}", groupId); - try { - Optional group = forwardingRulesManager.getReadTranaction() + try (ReadOnlyTransaction readTransaction = forwardingRulesManager.getReadTransaction()) { + Optional group = readTransaction .read(LogicalDatastoreType.CONFIGURATION, groupIdent).get(); if (group.isPresent()) { final AddGroupInputBuilder builder = new AddGroupInputBuilder(group.get()); diff --git a/applications/forwardingrules-manager/src/main/java/org/opendaylight/openflowplugin/applications/frm/impl/FlowForwarder.java b/applications/forwardingrules-manager/src/main/java/org/opendaylight/openflowplugin/applications/frm/impl/FlowForwarder.java index 8c7009a0fb..1decf02ff4 100644 --- a/applications/forwardingrules-manager/src/main/java/org/opendaylight/openflowplugin/applications/frm/impl/FlowForwarder.java +++ b/applications/forwardingrules-manager/src/main/java/org/opendaylight/openflowplugin/applications/frm/impl/FlowForwarder.java @@ -25,6 +25,7 @@ import java.util.concurrent.ExecutionException; import java.util.concurrent.Future; import org.opendaylight.controller.md.sal.binding.api.DataBroker; import org.opendaylight.controller.md.sal.binding.api.DataTreeIdentifier; +import org.opendaylight.controller.md.sal.binding.api.ReadOnlyTransaction; import org.opendaylight.controller.md.sal.binding.api.WriteTransaction; import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; import org.opendaylight.infrautils.utils.concurrent.JdkFutures; @@ -343,9 +344,8 @@ public class FlowForwarder extends AbstractListeningCommiter { InstanceIdentifier groupIdent = buildGroupInstanceIdentifier(nodeIdent, groupId); ListenableFuture> resultFuture; LOG.info("Reading the group from config inventory: {}", groupId); - try { - Optional group; - group = provider.getReadTranaction().read(LogicalDatastoreType.CONFIGURATION, groupIdent).get(); + try (ReadOnlyTransaction readTransaction = provider.getReadTransaction()) { + Optional group = readTransaction.read(LogicalDatastoreType.CONFIGURATION, groupIdent).get(); if (group.isPresent()) { final AddGroupInputBuilder builder = new AddGroupInputBuilder(group.get()); builder.setNode(new NodeRef(nodeIdent.firstIdentifierOf(Node.class))); diff --git a/applications/forwardingrules-manager/src/main/java/org/opendaylight/openflowplugin/applications/frm/impl/FlowNodeReconciliationImpl.java b/applications/forwardingrules-manager/src/main/java/org/opendaylight/openflowplugin/applications/frm/impl/FlowNodeReconciliationImpl.java index c4e9ad8b72..03625601c2 100644 --- a/applications/forwardingrules-manager/src/main/java/org/opendaylight/openflowplugin/applications/frm/impl/FlowNodeReconciliationImpl.java +++ b/applications/forwardingrules-manager/src/main/java/org/opendaylight/openflowplugin/applications/frm/impl/FlowNodeReconciliationImpl.java @@ -180,8 +180,7 @@ public class FlowNodeReconciliationImpl implements FlowNodeReconciliation { BundleId bundleIdValue = new BundleId(BUNDLE_ID.getAndIncrement()); BigInteger dpnId = getDpnIdFromNodeName(node); LOG.info("Triggering bundle based reconciliation for device : {}", dpnId); - ReadOnlyTransaction trans = provider.getReadTranaction(); - try { + try (ReadOnlyTransaction trans = provider.getReadTransaction()) { flowNode = trans.read(LogicalDatastoreType.CONFIGURATION, nodeIdentity).get(); } catch (ExecutionException | InterruptedException e) { LOG.error("Error occurred while reading the configuration data store for node {}", nodeIdentity, e); @@ -250,7 +249,6 @@ public class FlowNodeReconciliationImpl implements FlowNodeReconciliation { return Futures.immediateFuture(null); }, MoreExecutors.directExecutor()); - trans.close(); try { if (commitBundleFuture.get().isSuccessful()) { LOG.debug("Completing bundle based reconciliation for device ID:{}", dpnId); @@ -312,11 +310,10 @@ public class FlowNodeReconciliationImpl implements FlowNodeReconciliation { String node = nodeIdentity.firstKeyOf(Node.class).getId().getValue(); BigInteger dpnId = getDpnIdFromNodeName(node); - ReadOnlyTransaction trans = provider.getReadTranaction(); Optional flowNode; // initialize the counter int counter = 0; - try { + try (ReadOnlyTransaction trans = provider.getReadTransaction()) { flowNode = trans.read(LogicalDatastoreType.CONFIGURATION, nodeIdentity).get(); } catch (ExecutionException | InterruptedException e) { LOG.warn("Fail with read Config/DS for Node {} !", nodeIdentity, e); @@ -465,8 +462,6 @@ public class FlowNodeReconciliationImpl implements FlowNodeReconciliation { } } } - /* clean transaction */ - trans.close(); return true; } @@ -550,10 +545,9 @@ public class FlowNodeReconciliationImpl implements FlowNodeReconciliation { List> staleGroupsToBeBulkDeleted = Lists.newArrayList(); List> staleMetersToBeBulkDeleted = Lists.newArrayList(); - ReadOnlyTransaction trans = provider.getReadTranaction(); Optional flowNode = Optional.absent(); - try { + try (ReadOnlyTransaction trans = provider.getReadTransaction()) { flowNode = trans.read(LogicalDatastoreType.CONFIGURATION, nodeIdent).get(); } catch (ExecutionException | InterruptedException e) { LOG.warn("Reconciliation Pre-Processing Fail with read Config/DS for Node {} !", nodeIdent, e); @@ -628,8 +622,6 @@ public class FlowNodeReconciliationImpl implements FlowNodeReconciliation { } } - /* clean transaction */ - trans.close(); LOG.debug("Deleting all stale-marked flows/groups/meters of for switch {} in Configuration DS", nodeIdent.toString()); 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 e6a3996374..e7d6c7d83b 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 @@ -200,7 +200,7 @@ public class ForwardingRulesManagerImpl implements ForwardingRulesManager { } @Override - public ReadOnlyTransaction getReadTranaction() { + public ReadOnlyTransaction getReadTransaction() { return dataService.newReadOnlyTransaction(); } -- 2.36.6