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
+    }
 }


Reply via email to