Author: mreutegg Date: Thu Sep 5 07:51:45 2019 New Revision: 1866440 URL: http://svn.apache.org/viewvc?rev=1866440&view=rev Log: OAK-3895: Expose jmx to invalidate cache entries
Patch provided by José Cordero Modified: jackrabbit/oak/trunk/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/DiffCache.java jackrabbit/oak/trunk/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeStoreMBean.java jackrabbit/oak/trunk/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeStoreMBeanImpl.java jackrabbit/oak/trunk/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/JournalDiffLoader.java jackrabbit/oak/trunk/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/LocalDiffCache.java jackrabbit/oak/trunk/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/MemoryDiffCache.java jackrabbit/oak/trunk/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/TieredDiffCache.java jackrabbit/oak/trunk/oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/AmnesiaDiffCache.java Modified: jackrabbit/oak/trunk/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/DiffCache.java URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/DiffCache.java?rev=1866440&r1=1866439&r2=1866440&view=diff ============================================================================== --- jackrabbit/oak/trunk/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/DiffCache.java (original) +++ jackrabbit/oak/trunk/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/DiffCache.java Thu Sep 5 07:51:45 2019 @@ -72,6 +72,11 @@ abstract class DiffCache { abstract Iterable<CacheStats> getStats(); /** + * Invalidates all the entries in the cache. + */ + abstract void invalidateAll(); + + /** * Parses the jsop diff returned by * {@link #getChanges(RevisionVector, RevisionVector, Path, Loader)} and reports the * changes by calling the appropriate methods on {@link Diff}. Modified: jackrabbit/oak/trunk/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeStoreMBean.java URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeStoreMBean.java?rev=1866440&r1=1866439&r2=1866440&view=diff ============================================================================== --- jackrabbit/oak/trunk/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeStoreMBean.java (original) +++ jackrabbit/oak/trunk/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeStoreMBean.java Thu Sep 5 07:51:45 2019 @@ -76,4 +76,14 @@ public interface DocumentNodeStoreMBean @Description("The id of an inactive cluster node.") @Name("clusterId") int clusterId); + + @Description("Invalidates all the caches used by the DocumentNodeStore: DiffCache, NodeCache and NodeChildrenCache.") + String cleanAllCaches(); + + @Description("Invalidates the specified cache: DiffCache, NodeCache or NodeChildrenCache.\n" + + "Note: The values are case insensitive.") + String cleanIndividualCache( + @Description("Possible values are: DIFF, NODE, NODECHILDREN") + @Name("name") + String name); } Modified: jackrabbit/oak/trunk/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeStoreMBeanImpl.java URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeStoreMBeanImpl.java?rev=1866440&r1=1866439&r2=1866440&view=diff ============================================================================== --- jackrabbit/oak/trunk/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeStoreMBeanImpl.java (original) +++ jackrabbit/oak/trunk/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/DocumentNodeStoreMBeanImpl.java Thu Sep 5 07:51:45 2019 @@ -239,4 +239,29 @@ final class DocumentNodeStoreMBeanImpl e final String from = Utils.getKeyLowerLimit(pathRef); return nodeStore.getDocumentStore().query(Collection.NODES, from, to, 10000); } + + @Override + public String cleanAllCaches() { + nodeStore.getDiffCache().invalidateAll(); + nodeStore.getNodeCache().invalidateAll(); + nodeStore.getNodeChildrenCache().invalidateAll(); + return "Caches invalidated."; + } + + @Override + public String cleanIndividualCache(String name) { + switch(name.toUpperCase()) { + case "DIFF": + nodeStore.getDiffCache().invalidateAll(); + return "DiffCache invalidated."; + case "NODE": + nodeStore.getNodeCache().invalidateAll(); + return "NodeCache invalidated."; + case "NODECHILDREN": + nodeStore.getNodeChildrenCache().invalidateAll(); + return "NodeChildrenCache invalidated."; + default: + return "ERROR: Invalid cache name received."; + } + } } Modified: jackrabbit/oak/trunk/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/JournalDiffLoader.java URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/JournalDiffLoader.java?rev=1866440&r1=1866439&r2=1866440&view=diff ============================================================================== --- jackrabbit/oak/trunk/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/JournalDiffLoader.java (original) +++ jackrabbit/oak/trunk/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/JournalDiffLoader.java Thu Sep 5 07:51:45 2019 @@ -307,5 +307,10 @@ class JournalDiffLoader implements DiffC Iterable<CacheStats> getStats() { return cache.getStats(); } + + @Override + public void invalidateAll() { + cache.invalidateAll(); + } } } Modified: jackrabbit/oak/trunk/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/LocalDiffCache.java URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/LocalDiffCache.java?rev=1866440&r1=1866439&r2=1866440&view=diff ============================================================================== --- jackrabbit/oak/trunk/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/LocalDiffCache.java (original) +++ jackrabbit/oak/trunk/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/LocalDiffCache.java Thu Sep 5 07:51:45 2019 @@ -112,6 +112,11 @@ public class LocalDiffCache extends Diff return Collections.singleton(diffCacheStats); } + @Override + public void invalidateAll() { + diffCache.invalidateAll(); + } + //-----------------------------< internal >--------------------------------- Modified: jackrabbit/oak/trunk/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/MemoryDiffCache.java URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/MemoryDiffCache.java?rev=1866440&r1=1866439&r2=1866440&view=diff ============================================================================== --- jackrabbit/oak/trunk/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/MemoryDiffCache.java (original) +++ jackrabbit/oak/trunk/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/MemoryDiffCache.java Thu Sep 5 07:51:45 2019 @@ -108,6 +108,11 @@ public class MemoryDiffCache extends Dif return Collections.singleton(diffCacheStats); } + @Override + public void invalidateAll() { + diffCache.invalidateAll(); + } + protected class MemoryEntry implements Entry { private final RevisionVector from; Modified: jackrabbit/oak/trunk/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/TieredDiffCache.java URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/TieredDiffCache.java?rev=1866440&r1=1866439&r2=1866440&view=diff ============================================================================== --- jackrabbit/oak/trunk/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/TieredDiffCache.java (original) +++ jackrabbit/oak/trunk/oak-store-document/src/main/java/org/apache/jackrabbit/oak/plugins/document/TieredDiffCache.java Thu Sep 5 07:51:45 2019 @@ -97,4 +97,10 @@ class TieredDiffCache extends DiffCache public Iterable<CacheStats> getStats() { return Iterables.concat(localCache.getStats(), memoryCache.getStats()); } + + @Override + public void invalidateAll() { + localCache.invalidateAll(); + memoryCache.invalidateAll(); + } } Modified: jackrabbit/oak/trunk/oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/AmnesiaDiffCache.java URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/AmnesiaDiffCache.java?rev=1866440&r1=1866439&r2=1866440&view=diff ============================================================================== --- jackrabbit/oak/trunk/oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/AmnesiaDiffCache.java (original) +++ jackrabbit/oak/trunk/oak-store-document/src/test/java/org/apache/jackrabbit/oak/plugins/document/AmnesiaDiffCache.java Thu Sep 5 07:51:45 2019 @@ -64,4 +64,9 @@ class AmnesiaDiffCache extends DiffCache public Iterable<CacheStats> getStats() { return Collections.emptyList(); } + + @Override + public void invalidateAll() { + // Nothing to do + } }