From: Tomas Olvecky Date: Mon, 12 May 2014 12:58:53 +0000 (+0200) Subject: Store yang store snapshot cache using soft reference. X-Git-Tag: autorelease-tag-v20140601202136_82eb3f9~66^2 X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?p=controller.git;a=commitdiff_plain;h=97942010558a4b3e242b66607c1f62742a29e00f Store yang store snapshot cache using soft reference. Change-Id: I9b159db83ba204b4a636f2314fd4fc2e7b6f654c Signed-off-by: Tomas Olvecky --- diff --git a/opendaylight/netconf/config-netconf-connector/src/main/java/org/opendaylight/controller/netconf/confignetconfconnector/osgi/YangStoreServiceImpl.java b/opendaylight/netconf/config-netconf-connector/src/main/java/org/opendaylight/controller/netconf/confignetconfconnector/osgi/YangStoreServiceImpl.java index 1102f342bd..5840c9dbd1 100644 --- a/opendaylight/netconf/config-netconf-connector/src/main/java/org/opendaylight/controller/netconf/confignetconfconnector/osgi/YangStoreServiceImpl.java +++ b/opendaylight/netconf/config-netconf-connector/src/main/java/org/opendaylight/controller/netconf/confignetconfconnector/osgi/YangStoreServiceImpl.java @@ -8,6 +8,7 @@ package org.opendaylight.controller.netconf.confignetconfconnector.osgi; +import java.lang.ref.SoftReference; import org.opendaylight.yangtools.yang.model.api.SchemaContextProvider; import javax.annotation.concurrent.GuardedBy; @@ -15,7 +16,7 @@ import javax.annotation.concurrent.GuardedBy; public class YangStoreServiceImpl implements YangStoreService { private final SchemaContextProvider service; @GuardedBy("this") - private YangStoreSnapshotImpl cache = null; + private SoftReference cache = new SoftReference<>(null); public YangStoreServiceImpl(SchemaContextProvider service) { this.service = service; @@ -23,16 +24,18 @@ public class YangStoreServiceImpl implements YangStoreService { @Override public synchronized YangStoreSnapshotImpl getYangStoreSnapshot() throws YangStoreException { - if (cache == null) { - cache = new YangStoreSnapshotImpl(service.getSchemaContext()); + YangStoreSnapshotImpl yangStoreSnapshot = cache.get(); + if (yangStoreSnapshot == null) { + yangStoreSnapshot = new YangStoreSnapshotImpl(service.getSchemaContext()); + cache = new SoftReference<>(yangStoreSnapshot); } - return cache; + return yangStoreSnapshot; } /** * Called when schema context changes, invalidates cache. */ public synchronized void refresh() { - cache = null; + cache.clear(); } }