X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?p=controller.git;a=blobdiff_plain;f=opendaylight%2Fconfig%2Fyang-store-impl%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fconfig%2Fyang%2Fstore%2Fimpl%2FExtenderYangTracker.java;h=889d246784a05bfa1dd425ff3a6e2daaa09a7f39;hp=0d704a8f6aa49825da36d62b011d9294479fbb3d;hb=e1658face07c354aa8fd5b12da700401ce1efc37;hpb=91d7c1ee52322acad08e9f81228ac36b3aa684f5 diff --git a/opendaylight/config/yang-store-impl/src/main/java/org/opendaylight/controller/config/yang/store/impl/ExtenderYangTracker.java b/opendaylight/config/yang-store-impl/src/main/java/org/opendaylight/controller/config/yang/store/impl/ExtenderYangTracker.java index 0d704a8f6a..889d246784 100644 --- a/opendaylight/config/yang-store-impl/src/main/java/org/opendaylight/controller/config/yang/store/impl/ExtenderYangTracker.java +++ b/opendaylight/config/yang-store-impl/src/main/java/org/opendaylight/controller/config/yang/store/impl/ExtenderYangTracker.java @@ -14,12 +14,9 @@ import com.google.common.base.Preconditions; import com.google.common.collect.Collections2; import com.google.common.collect.HashMultimap; import com.google.common.collect.Multimap; -import com.google.common.collect.Sets; import org.opendaylight.controller.config.yang.store.api.YangStoreException; import org.opendaylight.controller.config.yang.store.api.YangStoreService; import org.opendaylight.controller.config.yang.store.api.YangStoreSnapshot; -import org.opendaylight.controller.config.yangjmxgenerator.ModuleMXBeanEntry; -import org.opendaylight.yangtools.yang.model.api.Module; import org.osgi.framework.Bundle; import org.osgi.framework.BundleContext; import org.osgi.framework.BundleEvent; @@ -36,8 +33,6 @@ import java.util.Collection; import java.util.Collections; import java.util.Enumeration; import java.util.List; -import java.util.Map; -import java.util.Set; import java.util.regex.Matcher; import java.util.regex.Pattern; @@ -125,9 +120,9 @@ public class ExtenderYangTracker extends BundleTracker implements YangSt // inconsistent state inconsistentBundlesToYangURLs.putAll(bundle, addedURLs); - logger.debug("Yang store is falling back on last consistent state containing {}, inconsistent yang files {}", + logger.debug("Yang store is falling back to last consistent state containing {}, inconsistent yang files {}", consistentBundlesToYangURLs, inconsistentBundlesToYangURLs, failureReason); - logger.warn("Yang store is falling back on last consistent state containing {} files, inconsistent yang files size is {}, reason {}", + logger.info("Yang store is falling back to last consistent state containing {} files, keeping {} inconsistent yang files due to {}", consistentBundlesToYangURLs.size(), inconsistentBundlesToYangURLs.size(), failureReason.toString()); cache.setInconsistentURLsForReporting(inconsistentBundlesToYangURLs.values()); } @@ -137,12 +132,17 @@ public class ExtenderYangTracker extends BundleTracker implements YangSt // merge into consistentBundlesToYangURLs.clear(); consistentBundlesToYangURLs.putAll(proposedNewState); - inconsistentBundlesToYangURLs.clear(); + + logger.debug("Yang store updated to new consistent state containing {}", consistentBundlesToYangURLs); + + // If we cleared up some inconsistent models, report that + if (!inconsistentBundlesToYangURLs.isEmpty()) { + inconsistentBundlesToYangURLs.clear(); + logger.info("Yang store updated to new consistent state containing {} yang files", consistentBundlesToYangURLs.size()); + } updateCache(snapshot); cache.setInconsistentURLsForReporting(Collections. emptySet()); - logger.info("Yang store updated to new consistent state containing {} yang files", consistentBundlesToYangURLs.size()); - logger.debug("Yang store updated to new consistent state containing {}", consistentBundlesToYangURLs); } private synchronized void updateCache(YangStoreSnapshotImpl snapshot) { @@ -220,78 +220,3 @@ public class ExtenderYangTracker extends BundleTracker implements YangSt cache.invalidate(); } } - -class YangStoreCache { - private static final Logger logger = LoggerFactory.getLogger(YangStoreCache.class); - - @GuardedBy("this") - private Set cachedUrls = null; - @GuardedBy("this") - private Optional cachedYangStoreSnapshot = getInitialSnapshot(); - @GuardedBy("this") - private Collection inconsistentURLsForReporting = Collections.emptySet(); - - synchronized Optional getSnapshotIfPossible(Multimap bundlesToYangURLs) { - Set urls = setFromMultimapValues(bundlesToYangURLs); - - if (cachedUrls==null || cachedUrls.equals(urls)) { - Preconditions.checkState(cachedYangStoreSnapshot.isPresent()); - YangStoreSnapshot freshSnapshot = new YangStoreSnapshotImpl(cachedYangStoreSnapshot.get()); - if (inconsistentURLsForReporting.size() > 0){ - logger.warn("Some yang URLs are ignored: {}", inconsistentURLsForReporting); - } - return Optional.of(freshSnapshot); - } - - return Optional.absent(); - } - - private static Set setFromMultimapValues( - Multimap bundlesToYangURLs) { - Set urls = Sets.newHashSet(bundlesToYangURLs.values()); - Preconditions.checkState(bundlesToYangURLs.size() == urls.size()); - return urls; - } - - synchronized void cacheYangStore(Multimap urls, - YangStoreSnapshot yangStoreSnapshot) { - this.cachedUrls = setFromMultimapValues(urls); - this.cachedYangStoreSnapshot = Optional.of(yangStoreSnapshot); - } - - synchronized void invalidate() { - cachedUrls.clear(); - if (cachedYangStoreSnapshot.isPresent()){ - cachedYangStoreSnapshot.get().close(); - cachedYangStoreSnapshot = Optional.absent(); - } - } - - public synchronized void setInconsistentURLsForReporting(Collection urls){ - inconsistentURLsForReporting = urls; - } - - private Optional getInitialSnapshot() { - YangStoreSnapshot initialSnapshot = new YangStoreSnapshot() { - @Override - public Map> getModuleMXBeanEntryMap() { - return Collections.emptyMap(); - } - - @Override - public Map> getModuleMap() { - return Collections.emptyMap(); - } - - @Override - public int countModuleMXBeanEntries() { - return 0; - } - - @Override - public void close() { - } - }; - return Optional.of(initialSnapshot); - } -}