Expand my Community achievements bar.

Don’t miss the AEM Skill Exchange in SF on Nov 14—hear from industry leaders, learn best practices, and enhance your AEM strategy with practical tips.
SOLVED

Is there a way to make the following code atomic (transactional)?

Avatar

Level 7

Hi,

Is there a way to make code similar to what follows transactional:

UserManager userManager = ...; //  org.apache.jackrabbit.api.security.user.UserManager userManager.createUser(...); userManager.createGroup(...); updateGroupService.updateGroup(...) // org.apache.sling.jackrabbit.usermanager.UpdateGroup AccessControlUtil.replaceAccessControlEntry(...) JcrResourceUtil.createPath(...) JcrUtil.copy(...)

Basically:

  • We create a user,
  • A group,
  • Assign the user to the group,
  • Add permissions to the group,
  • Create a folder (e.g. /content/foo/bar/baz)
  • Copy some content from some folder in JCR to /content/foo/bar/baz

At the moment one or more of ceateUser, createGroup, updateGroup, replaceAccessControlEntry commit their changes even before explicitly calling save() on the current request's session.

1 Accepted Solution

Avatar

Correct answer by
Employee Advisor

Hi,

On the Jackrabbit wiki [1] there's a reference to the chapter 8.1 of the JCR specification, see also [2]. To be honest, I never played with transactions on JR.

Jörg

 

[1] http://jackrabbit.apache.org/frequently-asked-questions.html

[2] http://www.day.com/maven/jcr/2.0/21_Transactions.html

View solution in original post

3 Replies

Avatar

Correct answer by
Employee Advisor

Hi,

On the Jackrabbit wiki [1] there's a reference to the chapter 8.1 of the JCR specification, see also [2]. To be honest, I never played with transactions on JR.

Jörg

 

[1] http://jackrabbit.apache.org/frequently-asked-questions.html

[2] http://www.day.com/maven/jcr/2.0/21_Transactions.html

Avatar

Employee

Hi,

Is the UserManager you are using in "autosave" [0] mode? If autosave mode is on session.save() is called for you and could explain the results you are seeing.

Will

[0] http://jackrabbit.apache.org/api/2.4/org/apache/jackrabbit/api/security/user/UserManager.html#isAuto...()

Avatar

Level 7

Hi Will,

That almost worked until I hit this roadblock: http://help-forums.adobe.com/content/adobeforums/en/experience-manager-forum/adobe-experience-manage...

Do you know if there's a way to work around that? IMHO, looks like a bug in Jackrabbit/Sling.

Thanks.