[ https://issues.apache.org/jira/browse/JCRVLT-472?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17185345#comment-17185345 ]
Konrad Windszus commented on JCRVLT-472: ---------------------------------------- Having three packages seems overly complicated for this use case, especially since principal and policy are stored at the same location in JCR and in the package. Regarding bq. ...unless there was an intermediate Session.save or fvault would remember the principals itself I don't really see how the latter could work, as the actual policy persistence is done in Jackrabbit (not in FileVault). So the only real option is to a) make sure principal is installed first b) before policy is applied a Session.save() is being issued Alternatively the Jackrabbit API would need to be enhanced to also consider authorizables from a given session (but this would mean major effort and is IMHO unlikely to happen). > Content package with principal policy fails to install when the user is in > the same package > ------------------------------------------------------------------------------------------- > > Key: JCRVLT-472 > URL: https://issues.apache.org/jira/browse/JCRVLT-472 > Project: Jackrabbit FileVault > Issue Type: Improvement > Components: Packaging > Reporter: Robert Munteanu > Priority: Major > Attachments: sling-slingshot-apps-pkg-1.0-SNAPSHOT.zip > > > I have attached a content package that includes a system user, a principal > policy and a principal entry. The content package, when installed in the > Sling Starter 12-SNAPSHOT, fails the first time and then the second time > works. The full error is > {noformat}24.08.2020 17:24:08.669 *WARN* [pool-10-thread-1] > com.composum.sling.core.pckgmgr.util.PackageUtil Received error for mode > PATHS path /home/users/system/sling/slingshot/rep:principalPolicy > org.xml.sax.SAXException: javax.jcr.security.AccessControlException: > Unsupported principal slingshot-service > at > org.apache.jackrabbit.vault.fs.impl.io.DocViewSAXImporter.endElement(DocViewSAXImporter.java:1246) > [org.apache.jackrabbit.vault:3.4.6] > at > java.xml/com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.endElement(AbstractSAXParser.java:610) > at > java.xml/com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanEndElement(XMLDocumentFragmentScannerImpl.java:1718) > at > java.xml/com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:2883) > at > java.xml/com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:605) > at > java.xml/com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(XMLNSDocumentScannerImpl.java:112) > at > java.xml/com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:534) > at > java.xml/com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:888) > at > java.xml/com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:824) > at > java.xml/com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:141) > at > java.xml/com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1216) > at > java.xml/com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:635) > at > java.xml/com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl.parse(SAXParserImpl.java:324) > at > org.apache.jackrabbit.vault.fs.impl.io.GenericArtifactHandler.accept(GenericArtifactHandler.java:100) > [org.apache.jackrabbit.vault:3.4.6] > at > org.apache.jackrabbit.vault.fs.io.Importer.commit(Importer.java:896) > [org.apache.jackrabbit.vault:3.4.6] > at > org.apache.jackrabbit.vault.fs.io.Importer.commit(Importer.java:799) > [org.apache.jackrabbit.vault:3.4.6] > at > org.apache.jackrabbit.vault.fs.io.Importer.commit(Importer.java:839) > [org.apache.jackrabbit.vault:3.4.6] > at > org.apache.jackrabbit.vault.fs.io.Importer.commit(Importer.java:839) > [org.apache.jackrabbit.vault:3.4.6] > at > org.apache.jackrabbit.vault.fs.io.Importer.commit(Importer.java:839) > [org.apache.jackrabbit.vault:3.4.6] > at > org.apache.jackrabbit.vault.fs.io.Importer.commit(Importer.java:839) > [org.apache.jackrabbit.vault:3.4.6] > at > org.apache.jackrabbit.vault.fs.io.Importer.commit(Importer.java:839) > [org.apache.jackrabbit.vault:3.4.6] > at > org.apache.jackrabbit.vault.fs.io.Importer.commit(Importer.java:839) > [org.apache.jackrabbit.vault:3.4.6] > at org.apache.jackrabbit.vault.fs.io.Importer.run(Importer.java:440) > [org.apache.jackrabbit.vault:3.4.6] > at > org.apache.jackrabbit.vault.packaging.impl.ZipVaultPackage.extract(ZipVaultPackage.java:255) > [org.apache.jackrabbit.vault:3.4.6] > at > org.apache.jackrabbit.vault.packaging.impl.JcrPackageImpl.extract(JcrPackageImpl.java:400) > [org.apache.jackrabbit.vault:3.4.6] > at > org.apache.jackrabbit.vault.packaging.impl.JcrPackageImpl.extract(JcrPackageImpl.java:359) > [org.apache.jackrabbit.vault:3.4.6] > at > org.apache.jackrabbit.vault.packaging.impl.JcrPackageImpl.install(JcrPackageImpl.java:353) > [org.apache.jackrabbit.vault:3.4.6] > at > com.composum.sling.core.pckgmgr.PackageJobExecutor$PackageManagerCallable$InstallOperation.doIt(PackageJobExecutor.java:173) > [com.composum.core.pckgmgr:1.12.0] > at > com.composum.sling.core.pckgmgr.PackageJobExecutor$PackageManagerCallable$Operation.call(PackageJobExecutor.java:276) > [com.composum.core.pckgmgr:1.12.0] > at > com.composum.sling.core.pckgmgr.PackageJobExecutor$PackageManagerCallable.call(PackageJobExecutor.java:145) > [com.composum.core.pckgmgr:1.12.0] > at > com.composum.sling.core.pckgmgr.PackageJobExecutor$PackageManagerCallable.call(PackageJobExecutor.java:125) > [com.composum.core.pckgmgr:1.12.0] > at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264) > at > java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) > at > java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) > at java.base/java.lang.Thread.run(Thread.java:834) > Caused by: javax.jcr.security.AccessControlException: Unsupported principal > slingshot-service > at > org.apache.jackrabbit.oak.spi.security.authorization.principalbased.impl.PrincipalBasedAccessControlManager.canHandle(PrincipalBasedAccessControlManager.java:308) > [org.apache.jackrabbit.oak-authorization-principalbased:1.32.0] > at > org.apache.jackrabbit.oak.spi.security.authorization.principalbased.impl.PrincipalBasedAccessControlManager.getPolicies(PrincipalBasedAccessControlManager.java:132) > [org.apache.jackrabbit.oak-authorization-principalbased:1.32.0] > at > org.apache.jackrabbit.oak.security.authorization.composite.CompositeAccessControlManager.getPolicies(CompositeAccessControlManager.java:154) > [org.apache.jackrabbit.oak-core:1.32.0] > at > org.apache.jackrabbit.oak.jcr.delegate.JackrabbitAccessControlManagerDelegator$2.perform(JackrabbitAccessControlManagerDelegator.java:75) > [org.apache.jackrabbit.oak-jcr:1.32.0] > at > org.apache.jackrabbit.oak.jcr.delegate.JackrabbitAccessControlManagerDelegator$2.perform(JackrabbitAccessControlManagerDelegator.java:71) > [org.apache.jackrabbit.oak-jcr:1.32.0] > at > org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.perform(SessionDelegate.java:207) > [org.apache.jackrabbit.oak-jcr:1.32.0] > at > org.apache.jackrabbit.oak.jcr.delegate.JackrabbitAccessControlManagerDelegator.getPolicies(JackrabbitAccessControlManagerDelegator.java:71) > [org.apache.jackrabbit.oak-jcr:1.32.0] > at > org.apache.jackrabbit.vault.fs.impl.io.JackrabbitACLImporter$ImportedPolicy.getPolicy(JackrabbitACLImporter.java:192) > [org.apache.jackrabbit.vault:3.4.6] > at > org.apache.jackrabbit.vault.fs.impl.io.JackrabbitACLImporter$ImportedPrincipalAcList.apply(JackrabbitACLImporter.java:433) > [org.apache.jackrabbit.vault:3.4.6] > at > org.apache.jackrabbit.vault.fs.impl.io.JackrabbitACLImporter.close(JackrabbitACLImporter.java:154) > [org.apache.jackrabbit.vault:3.4.6] > at > org.apache.jackrabbit.vault.fs.impl.io.DocViewSAXImporter.endElement(DocViewSAXImporter.java:1190) > [org.apache.jackrabbit.vault:3.4.6] > ... 34 common frames omitted > {noformat} > When I retry installing the content package the operation succeeds, which may > be a hint that the freshly created user is not yet visible to the rest of the > import operation on the first try. -- This message was sent by Atlassian Jira (v8.3.4#803005)