Fix schema source registrations not being cleared 59/84959/1
authorRobert Varga <robert.varga@pantheon.tech>
Mon, 26 Aug 2019 12:48:01 +0000 (14:48 +0200)
committerRobert Varga <robert.varga@pantheon.tech>
Mon, 7 Oct 2019 06:29:22 +0000 (08:29 +0200)
When a device goes down, we need to clear the registration list, so
we do not touch them multiple times.

Change-Id: Ic2e67cd21d05a413882f1d3d37b33c5dfabe2261
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
(cherry picked from commit a9faa75d0972a634d9c2b6dca4ead4232c4a343d)

netconf/sal-netconf-connector/src/main/java/org/opendaylight/netconf/sal/connect/netconf/NetconfDevice.java

index 451fb057c467850637732598e7def7a56ee9d4f5..a6865ba6dd07465b75c91fafb3dffe554033cf26 100644 (file)
@@ -67,7 +67,6 @@ import org.opendaylight.yangtools.yang.model.repo.api.RevisionSourceIdentifier;
 import org.opendaylight.yangtools.yang.model.repo.api.SchemaContextFactory;
 import org.opendaylight.yangtools.yang.model.repo.api.SchemaRepository;
 import org.opendaylight.yangtools.yang.model.repo.api.SchemaResolutionException;
-import org.opendaylight.yangtools.yang.model.repo.api.SchemaSourceRepresentation;
 import org.opendaylight.yangtools.yang.model.repo.api.SourceIdentifier;
 import org.opendaylight.yangtools.yang.model.repo.api.YangTextSchemaSource;
 import org.opendaylight.yangtools.yang.model.repo.spi.PotentialSchemaSource;
@@ -90,8 +89,7 @@ public class NetconfDevice
     protected final SchemaSourceRegistry schemaRegistry;
     protected final SchemaRepository schemaRepository;
 
-    protected final List<SchemaSourceRegistration<? extends SchemaSourceRepresentation>> sourceRegistrations =
-            new ArrayList<>();
+    protected final List<SchemaSourceRegistration<?>> sourceRegistrations = new ArrayList<>();
 
     private final RemoteDeviceHandler<NetconfSessionPreferences> salFacade;
     private final ListeningExecutorService processingExecutor;
@@ -301,10 +299,8 @@ public class NetconfDevice
         notificationHandler.onRemoteSchemaDown();
 
         salFacade.onDeviceDisconnected();
-        for (final SchemaSourceRegistration<? extends SchemaSourceRepresentation> sourceRegistration
-                : sourceRegistrations) {
-            sourceRegistration.close();
-        }
+        sourceRegistrations.forEach(SchemaSourceRegistration::close);
+        sourceRegistrations.clear();
         resetMessageTransformer();
     }