Author: stillalex
Date: Wed May  8 15:42:19 2019
New Revision: 1858931

URL: http://svn.apache.org/viewvc?rev=1858931&view=rev
Log:
OAK-8306 Empty PrincipalProvider cache breaks membership collection


Modified:
    
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/UserPrincipalProvider.java
    
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/UserPrincipalProviderWithCacheTest.java

Modified: 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/UserPrincipalProvider.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/UserPrincipalProvider.java?rev=1858931&r1=1858930&r2=1858931&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/UserPrincipalProvider.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/security/user/UserPrincipalProvider.java
 Wed May  8 15:42:19 2019
@@ -352,7 +352,7 @@ class UserPrincipalProvider implements P
 
             String str = TreeUtil.getString(principalCache, 
CacheConstants.REP_GROUP_PRINCIPAL_NAMES);
             if (str == null || str.isEmpty()) {
-                return Collections.emptySet();
+                return new HashSet<>(1);
             }
 
             Set<Principal> groups = new HashSet<>();

Modified: 
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/UserPrincipalProviderWithCacheTest.java
URL: 
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/UserPrincipalProviderWithCacheTest.java?rev=1858931&r1=1858930&r2=1858931&view=diff
==============================================================================
--- 
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/UserPrincipalProviderWithCacheTest.java
 (original)
+++ 
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/security/user/UserPrincipalProviderWithCacheTest.java
 Wed May  8 15:42:19 2019
@@ -51,7 +51,6 @@ import org.apache.jackrabbit.oak.spi.sec
 import org.apache.jackrabbit.oak.spi.security.principal.PrincipalImpl;
 import org.apache.jackrabbit.oak.spi.security.principal.PrincipalProvider;
 import org.apache.jackrabbit.oak.spi.security.user.UserConfiguration;
-import org.apache.jackrabbit.oak.util.NodeUtil;
 import org.apache.jackrabbit.oak.plugins.tree.TreeUtil;
 import org.jetbrains.annotations.NotNull;
 import org.jetbrains.annotations.Nullable;
@@ -416,8 +415,13 @@ public class UserPrincipalProviderWithCa
 
         // verify that the cache has really been updated
         cache = getCacheTree(systemRoot);
-        assertNotSame(2, new 
NodeUtil(cache).getLong(CacheConstants.REP_EXPIRATION, 2));
+        assertNotSame(2, TreeUtil.getLong(cache, 
CacheConstants.REP_EXPIRATION, 2));
         assertEquals("", TreeUtil.getString(cache, 
CacheConstants.REP_GROUP_PRINCIPAL_NAMES));
+
+        // check that an cached empty membership set doesn't break the 
retrieval (OAK-8306)
+        principalsAgain = pp.getPrincipals(userId);
+        assertFalse(principals.equals(principalsAgain));
+        assertPrincipals(principalsAgain, EveryonePrincipal.getInstance(), 
getTestUser().getPrincipal());
     }
 
     @Test


Reply via email to