NETVIRT-1641 neutronvpn:networkMaps update failed when add the second subnet under... 05/86305/1
authorAshik Alias <ashik.alias@ericsson.com>
Mon, 9 Dec 2019 10:20:48 +0000 (15:50 +0530)
committerAshik Alias <ashik.alias@ericsson.com>
Mon, 9 Dec 2019 10:24:06 +0000 (15:54 +0530)
we were trying to update the subnet list within builder directly instead
of using a new reference.

Change-Id: If372124b2eda0cf26d35e0b7246b1b64d3fc455e
Signed-off-by: Ashik Alias <ashik.alias@ericsson.com>
neutronvpn/impl/src/main/java/org/opendaylight/netvirt/neutronvpn/NeutronSubnetChangeListener.java

index 7a5cce78df9ec8c6a81f48f173885e12b979f0e5..339af486b29b86630d459585f0ef926d6cba30e3 100644 (file)
@@ -158,17 +158,15 @@ public class NeutronSubnetChangeListener extends AsyncDataTreeChangeListenerBase
             InstanceIdentifier<NetworkMap>  networkMapIdentifier = NeutronvpnUtils.buildNetworkMapIdentifier(networkId);
             Optional<NetworkMap> optionalNetworkMap = SingleTransactionDataBroker.syncReadOptional(dataBroker,
                     LogicalDatastoreType.CONFIGURATION, networkMapIdentifier);
-            NetworkMapBuilder nwMapBuilder = null;
+            NetworkMapBuilder nwMapBuilder;
             if (optionalNetworkMap.isPresent()) {
                 nwMapBuilder = new NetworkMapBuilder(optionalNetworkMap.get());
             } else {
                 nwMapBuilder = new NetworkMapBuilder().withKey(new NetworkMapKey(networkId)).setNetworkId(networkId);
                 LOG.debug("Adding a new network node in NetworkMaps DS for network {}", networkId.getValue());
             }
-            List<Uuid> subnetIdList = nwMapBuilder.getSubnetIdList();
-            if (subnetIdList == null) {
-                subnetIdList = new ArrayList<>();
-            }
+            List<Uuid> subnetIdList = nwMapBuilder.getSubnetIdList() != null
+                    ? new ArrayList<>(nwMapBuilder.getSubnetIdList()) : new ArrayList<>();
             subnetIdList.add(subnetId);
             nwMapBuilder.setSubnetIdList(subnetIdList);
             MDSALUtil.syncWrite(dataBroker, LogicalDatastoreType.CONFIGURATION, networkMapIdentifier, nwMapBuilder
@@ -190,7 +188,7 @@ public class NeutronSubnetChangeListener extends AsyncDataTreeChangeListenerBase
                     LogicalDatastoreType.CONFIGURATION, networkMapIdentifier);
             if (optionalNetworkMap.isPresent()) {
                 NetworkMapBuilder nwMapBuilder = new NetworkMapBuilder(optionalNetworkMap.get());
-                List<Uuid> subnetIdList = nwMapBuilder.getSubnetIdList();
+                List<Uuid> subnetIdList = new ArrayList<>(nwMapBuilder.getSubnetIdList());
                 if (subnetIdList.remove(subnetId)) {
                     if (subnetIdList.isEmpty()) {
                         MDSALUtil.syncDelete(dataBroker, LogicalDatastoreType.CONFIGURATION, networkMapIdentifier);