OVSDB-435: fix transaction leak in BridgeOperationState 92/66092/1
authorStephen Kitt <skitt@redhat.com>
Thu, 30 Nov 2017 13:14:44 +0000 (14:14 +0100)
committerStephen Kitt <skitt@redhat.com>
Thu, 30 Nov 2017 13:14:44 +0000 (14:14 +0100)
Change-Id: I82708edcf710f72c1356914e9da11a5769b489c9
Signed-off-by: Stephen Kitt <skitt@redhat.com>
southbound/southbound-impl/src/main/java/org/opendaylight/ovsdb/southbound/ovsdb/transact/BridgeOperationalState.java

index 001c951d450e9a62f7ecb210f4f647ffe234b89c..8804bc34a638275fde538117e9a7abf4f1c8adbb 100644 (file)
@@ -62,18 +62,19 @@ public class BridgeOperationalState {
     }
 
     public BridgeOperationalState(DataBroker db, Collection<DataTreeModification<Node>> changes) {
-        ReadOnlyTransaction transaction = db.newReadOnlyTransaction();
-        Map<InstanceIdentifier<Node>, Node> nodeCreateOrUpdateOrRemove =
-                TransactUtils.extractCreatedOrUpdatedOrRemoved(changes, Node.class);
-        for (Entry<InstanceIdentifier<Node>, Node> entry : nodeCreateOrUpdateOrRemove.entrySet()) {
-            try {
-                Optional<Node> nodeOptional = transaction.read(LogicalDatastoreType.OPERATIONAL, entry.getKey())
-                            .checkedGet();
-                if (nodeOptional.isPresent()) {
-                    operationalNodes.put(entry.getKey(), nodeOptional.get());
+        try (ReadOnlyTransaction transaction = db.newReadOnlyTransaction()) {
+            Map<InstanceIdentifier<Node>, Node> nodeCreateOrUpdateOrRemove =
+                    TransactUtils.extractCreatedOrUpdatedOrRemoved(changes, Node.class);
+            for (Entry<InstanceIdentifier<Node>, Node> entry : nodeCreateOrUpdateOrRemove.entrySet()) {
+                try {
+                    Optional<Node> nodeOptional =
+                            transaction.read(LogicalDatastoreType.OPERATIONAL, entry.getKey()).checkedGet();
+                    if (nodeOptional.isPresent()) {
+                        operationalNodes.put(entry.getKey(), nodeOptional.get());
+                    }
+                } catch (ReadFailedException e) {
+                    LOG.warn("Error reading from datastore", e);
                 }
-            } catch (ReadFailedException e) {
-                LOG.warn("Error reading from datastore", e);
             }
         }
     }