diff --git a/source/java/org/alfresco/repo/cache/lookup/EntityLookupCache.java b/source/java/org/alfresco/repo/cache/lookup/EntityLookupCache.java
index a935cb2675..bc02d1f67b 100644
--- a/source/java/org/alfresco/repo/cache/lookup/EntityLookupCache.java
+++ b/source/java/org/alfresco/repo/cache/lookup/EntityLookupCache.java
@@ -621,6 +621,21 @@ public class EntityLookupCache
+ * NOTE: This operation removes ALL entries for ALL cache regions.
+ */
+ public void clear()
+ {
+ // Handle missing cache
+ if (cache == null)
+ {
+ return;
+ }
+ cache.clear();
+ }
+
/**
* Key-wrapper used to separate cache regions, allowing a single cache to be used for different
* purposes.
diff --git a/source/java/org/alfresco/repo/cache/lookup/EntityLookupCacheTest.java b/source/java/org/alfresco/repo/cache/lookup/EntityLookupCacheTest.java
index 8cfe9f67fd..5a8c338a6b 100644
--- a/source/java/org/alfresco/repo/cache/lookup/EntityLookupCacheTest.java
+++ b/source/java/org/alfresco/repo/cache/lookup/EntityLookupCacheTest.java
@@ -213,6 +213,21 @@ public class EntityLookupCacheTest extends TestCase implements EntityLookupCallb
assertNull(database.get(id));
assertEquals(0, cache.getKeys().size());
}
+
+ public void testClear() throws Exception
+ {
+ TestValue valueOne = new TestValue(getName() + "-ONE");
+ Pair entityPairOne = entityLookupCacheA.getOrCreateByValue(valueOne);
+ assertNotNull(entityPairOne);
+ Long id = entityPairOne.getFirst();
+ assertEquals(valueOne.val, database.get(id));
+ assertEquals(2, cache.getKeys().size());
+
+ // Clear it
+ entityLookupCacheA.clear();
+ assertEquals(valueOne.val, database.get(id)); // Must still be in database
+ assertEquals(0, cache.getKeys().size()); // ... but cache must be empty
+ }
/**
* Helper class to represent business object