Fix up release old producers to avoid memory leak
[mdsal.git] / dom / mdsal-dom-inmemory-datastore / src / main / java / org / opendaylight / mdsal / dom / store / inmemory / InMemoryShardDataModificationFactory.java
index ffb487b15d6cf06cb7b7b27ad2228cb2edc02542..c772ee90ed7f4ff6eeff9ee8f079d7fa5b8faf06 100644 (file)
@@ -12,6 +12,7 @@ import com.google.common.base.Preconditions;
 import com.google.common.collect.ImmutableMap;
 import java.util.Map;
 import org.opendaylight.mdsal.dom.api.DOMDataTreeIdentifier;
+import org.opendaylight.mdsal.dom.spi.shard.DOMDataTreeShardProducer;
 import org.opendaylight.mdsal.dom.spi.shard.ForeignShardModificationContext;
 import org.opendaylight.mdsal.dom.spi.shard.WriteableModificationNode;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.PathArgument;
@@ -44,4 +45,9 @@ final class InMemoryShardDataModificationFactory {
     ShardDataModification createModification(final CursorAwareDataTreeSnapshot snapshot) {
         return new ShardDataModification(new ShardRootModificationContext(root, snapshot), children, childShards);
     }
+
+    void close() {
+        childShards.values().stream().map(ForeignShardModificationContext::getProducer)
+                .forEach(DOMDataTreeShardProducer::close);
+    }
 }