You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@jackrabbit.apache.org by "Jukka Zitting (Updated) (JIRA)" <ji...@apache.org> on 2011/11/08 16:53:51 UTC
[jira] [Updated] (JCR-3006) UserManager: concurrent user creation
using same intermediate path fails
[ https://issues.apache.org/jira/browse/JCR-3006?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Jukka Zitting updated JCR-3006:
-------------------------------
Fix Version/s: 2.3
> UserManager: concurrent user creation using same intermediate path fails
> ------------------------------------------------------------------------
>
> Key: JCR-3006
> URL: https://issues.apache.org/jira/browse/JCR-3006
> Project: Jackrabbit Content Repository
> Issue Type: Bug
> Components: security
> Affects Versions: 2.2.7
> Reporter: Stefan Guggisberg
> Fix For: 2.3
>
> Attachments: ConcurrentCreateUserTest.java, ConcurrentCreateUserTest.java, ConcurrentCreateUserTest.java, JCR-3006.patch, JCR-3006.patch
>
>
> concurrently creating users using same intermediate path fails with "node ... has been modified externally".
> the problem is the intermediate path. if it doesn't exist multiple threads try to create it concurrently:
> o.a.jackrabbit.core.security.user.UserManagerImpl, line 1310ff:
> String[] segmts = defaultPath.split("/");
> NodeImpl folder = (NodeImpl) session.getRootNode();
> String authRoot = (isGroup) ? groupsPath : usersPath;
> for (String segment : segmts) {
> if (segment.length() < 1) {
> continue;
> }
> if (folder.hasNode(segment)) {
> folder = (NodeImpl) folder.getNode(segment);
> if (Text.isDescendantOrEqual(authRoot, folder.getPath()) &&
> !folder.isNodeType(NT_REP_AUTHORIZABLE_FOLDER)) {
> throw new ConstraintViolationException("Invalid intermediate path. Must be of type rep:AuthorizableFolder.");
> }
> } else {
> Node parent = folder;
> folder = addNode(folder, session.getQName(segment), NT_REP_AUTHORIZABLE_FOLDER);
> }
> }
> the attached test case illustrates this issue/
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira