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