Hello again,

So it seems I was wrong and I can authenticate and write to the repository.

However the error still appears and I think the issue is a performance one.

I get "Error during logout" messages. I'm still not sure what is causing
this since we just started investigating this behavior.

This seems more Oak than Sling related but I am a bit confused.

It seems the issue appears when multiple nodes are created at once but
I'm not sure on the number. I think it is somewhere in the range of
20-50+ nodes / single session. 

Any insight is appreciated.

Regards,


```

   | 84 - org.apache.jackrabbit.oak-core - 1.8.6 | Error during logout.
javax.security.auth.login.LoginException: Login Failure: all modules ignored
    at
javax.security.auth.login.LoginContext.invoke(LoginContext.java:906) ~[?:?]
    at
javax.security.auth.login.LoginContext.access$000(LoginContext.java:195)
~[?:?]
    at
javax.security.auth.login.LoginContext$4.run(LoginContext.java:682) ~[?:?]
    at
javax.security.auth.login.LoginContext$4.run(LoginContext.java:680) ~[?:?]
    at java.security.AccessController.doPrivileged(Native Method) ~[?:?]
    at
javax.security.auth.login.LoginContext.invokePriv(LoginContext.java:680)
~[?:?]
    at
javax.security.auth.login.LoginContext.logout(LoginContext.java:628) ~[?:?]
    at
org.apache.jackrabbit.oak.core.ContentSessionImpl.close(ContentSessionImpl.java:114)
~[?:?]
    at
org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.logout(SessionDelegate.java:402)
~[?:?]
    at
org.apache.jackrabbit.oak.jcr.repository.RepositoryImpl$1.logout(RepositoryImpl.java:322)
~[?:?]
    at
org.apache.jackrabbit.oak.jcr.session.SessionImpl$10.performVoid(SessionImpl.java:466)
~[?:?]
    at
org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.performVoid(SessionDelegate.java:274)
~[?:?]
    at
org.apache.jackrabbit.oak.jcr.session.SessionImpl.logout(SessionImpl.java:462)
~[?:?]
    at
org.apache.sling.jcr.oak.server.internal.TcclWrappingJackrabbitSession.logout(TcclWrappingJackrabbitSession.java:304)
~[?:?]
    at
gr8pi.itembank.jcr.repo.JcrTemplateImpl.doInSession(JcrTemplateImpl.java:67)
~[?:?]
    at
gr8pi.itembank.migrate.AssessmentToJcrMigrator.migrateAssessmentItems(AssessmentToJcrMigrator.java:250)
~[?:?]
    at
gr8pi.itembank.migrate.AssessmentToJcrMigrator.migrateAssessmentDimension(AssessmentToJcrMigrator.java:418)
~[?:?]
    at
gr8pi.itembank.migrate.AssessmentToJcrMigrator.lambda$migrateAssessmentDimensions$29(AssessmentToJcrMigrator.java:505)
~[?:?]
    at java.util.ArrayList.forEach(ArrayList.java:1257) [?:?]
    at
gr8pi.itembank.migrate.AssessmentToJcrMigrator.migrateAssessmentDimensions(AssessmentToJcrMigrator.java:505)
[393:itembank-emf-jcr:1.22.0.SNAPSHOT]
    at
gr8pi.itembank.migrate.AssessmentToJcrMigrator.migrate(AssessmentToJcrMigrator.java:620)
[393:itembank-emf-jcr:1.22.0.SNAPSHOT]
    at
gr8pi.itembank.migrate.EmfToJcrMigrator.migrate(EmfToJcrMigrator.java:44)
[393:itembank-emf-jcr:1.22.0.SNAPSHOT]
    at
gr8pi.itembank.jcr.karaf.commands.EmfToJcrCommand.execute(EmfToJcrCommand.java:52)
[392:itembank-commands:1.22.0.SNAPSHOT]
    at
org.apache.karaf.shell.impl.action.command.ActionCommand.execute(ActionCommand.java:84)
[33:org.apache.karaf.shell.core:4.2.0]
    at
org.apache.karaf.shell.impl.console.osgi.secured.SecuredCommand.execute(SecuredCommand.java:68)
[33:org.apache.karaf.shell.core:4.2.0]
    at
org.apache.karaf.shell.impl.console.osgi.secured.SecuredCommand.execute(SecuredCommand.java:86)
[33:org.apache.karaf.shell.core:4.2.0]
    at
org.apache.felix.gogo.runtime.Closure.executeCmd(Closure.java:571)
[33:org.apache.karaf.shell.core:4.2.0]
    at
org.apache.felix.gogo.runtime.Closure.executeStatement(Closure.java:497)
[33:org.apache.karaf.shell.core:4.2.0]
    at org.apache.felix.gogo.runtime.Closure.execute(Closure.java:386)
[33:org.apache.karaf.shell.core:4.2.0]
    at org.apache.felix.gogo.runtime.Pipe.doCall(Pipe.java:417)
[33:org.apache.karaf.shell.core:4.2.0]
    at org.apache.felix.gogo.runtime.Pipe.call(Pipe.java:229)
[33:org.apache.karaf.shell.core:4.2.0]
    at org.apache.felix.gogo.runtime.Pipe.call(Pipe.java:59)
[33:org.apache.karaf.shell.core:4.2.0]
    at java.util.concurrent.FutureTask.run(FutureTask.java:266) [?:?]
    at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
[?:?]
    at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
[?:?]
    at java.lang.Thread.run(Thread.java:748) [?:?]

```


On 12.08.2018 13:53, Eugen Stan wrote:
> Hello,
>
> I've deployed an application inside Apache Karaf using a Sling feature 
> [1]. I have also installed karaf commands that import some content in
> JCR Repository.
>
> The commands work well, except when having to write to JCR Repository.
> That part fails to login/logout properly from the repository.
>
> Oak inside Karaf uses jaas authentification and I think that is where it
> fails but I don't how to make it work. Any ideas?
>
> Regards,
>
> Eugen 
>
> ----
>
> JcrTemplateImpl                  | 303 - itembank-jcr - 1.22.0.SNAPSHOT
> | Failed to save session
> java.lang.RuntimeException: java.lang.RuntimeException:
> javax.jcr.AccessDeniedException: Access denied.
>     at
> gr8pi.itembank.jcr.repo.ItemBankHelperImpl.getOrCreateTranslation(ItemBankHelperImpl.java:191)
> ~[303:itembank-jcr:1.22.0.SNAPSHOT]
>     at
> gr8pi.itembank.migrate.AssessmentToJcrMigrator.migrateAssessmentBehaviorSectionTranslation(AssessmentToJcrMigrator.java:668)
> ~[?:?]
>     at
> gr8pi.itembank.migrate.AssessmentToJcrMigrator.lambda$null$34(AssessmentToJcrMigrator.java:651)
> ~[?:?]
>     at java.lang.Iterable.forEach(Iterable.java:75) ~[?:?]
>     at
> gr8pi.itembank.migrate.AssessmentToJcrMigrator.lambda$migrateAssessmentBehaviorSection$35(AssessmentToJcrMigrator.java:647)
> ~[?:?]
>     at
> gr8pi.itembank.jcr.repo.JcrTemplateImpl.doInSession(JcrTemplateImpl.java:58)
> [303:itembank-jcr:1.22.0.SNAPSHOT]
>     at
> gr8pi.itembank.migrate.AssessmentToJcrMigrator.migrateAssessmentBehaviorSection(AssessmentToJcrMigrator.java:634)
> [302:itembank-emf-jcr:1.22.0.SNAPSHOT]
>     at
> gr8pi.itembank.migrate.AssessmentToJcrMigrator.migrateAssessmentSections(AssessmentToJcrMigrator.java:626)
> [302:itembank-emf-jcr:1.22.0.SNAPSHOT]
>     at
> gr8pi.itembank.migrate.AssessmentToJcrMigrator.migrate(AssessmentToJcrMigrator.java:619)
> [302:itembank-emf-jcr:1.22.0.SNAPSHOT]
>     at
> gr8pi.itembank.migrate.EmfToJcrMigrator.migrate(EmfToJcrMigrator.java:44)
> [302:itembank-emf-jcr:1.22.0.SNAPSHOT]
>     at
> gr8pi.itembank.jcr.karaf.commands.EmfToJcrCommand.execute(EmfToJcrCommand.java:52)
> [312:shell-commands:1.22.0.SNAPSHOT]
>     at
> org.apache.karaf.shell.impl.action.command.ActionCommand.execute(ActionCommand.java:84)
> [33:org.apache.karaf.shell.core:4.2.0]
>     at
> org.apache.karaf.shell.impl.console.osgi.secured.SecuredCommand.execute(SecuredCommand.java:68)
> [33:org.apache.karaf.shell.core:4.2.0]
>     at
> org.apache.karaf.shell.impl.console.osgi.secured.SecuredCommand.execute(SecuredCommand.java:86)
> [33:org.apache.karaf.shell.core:4.2.0]
>     at
> org.apache.felix.gogo.runtime.Closure.executeCmd(Closure.java:571)
> [33:org.apache.karaf.shell.core:4.2.0]
>     at
> org.apache.felix.gogo.runtime.Closure.executeStatement(Closure.java:497)
> [33:org.apache.karaf.shell.core:4.2.0]
>     at org.apache.felix.gogo.runtime.Closure.execute(Closure.java:386)
> [33:org.apache.karaf.shell.core:4.2.0]
>     at org.apache.felix.gogo.runtime.Pipe.doCall(Pipe.java:417)
> [33:org.apache.karaf.shell.core:4.2.0]
>     at org.apache.felix.gogo.runtime.Pipe.call(Pipe.java:229)
> [33:org.apache.karaf.shell.core:4.2.0]
>     at org.apache.felix.gogo.runtime.Pipe.call(Pipe.java:59)
> [33:org.apache.karaf.shell.core:4.2.0]
>     at java.util.concurrent.FutureTask.run(FutureTask.java:266) [?:?]
>     at
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
> [?:?]
>     at
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
> [?:?]
>     at java.lang.Thread.run(Thread.java:748) [?:?]
> Caused by: java.lang.RuntimeException: javax.jcr.AccessDeniedException:
> Access denied.
>     at
> gr8pi.itembank.jcr.repo.ItemBankHelperImpl.findTranslationNode(ItemBankHelperImpl.java:226)
> ~[?:?]
>     at
> gr8pi.itembank.jcr.repo.ItemBankHelperImpl.getOrCreateTranslation(ItemBankHelperImpl.java:163)
> ~[?:?]
>     at
> gr8pi.itembank.jcr.repo.ItemBankHelperImpl.getOrCreateTranslation(ItemBankHelperImpl.java:187)
> ~[?:?]
>     ... 23 more
> Caused by: javax.jcr.AccessDeniedException: Access denied.
>     at
> org.apache.jackrabbit.oak.jcr.security.AccessManager.checkPermissions(AccessManager.java:71)
> ~[?:?]
>     at
> org.apache.jackrabbit.oak.jcr.session.NodeImpl$5.perform(NodeImpl.java:296)
> ~[?:?]
>     at
> org.apache.jackrabbit.oak.jcr.session.NodeImpl$5.perform(NodeImpl.java:265)
> ~[?:?]
>     at
> org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.perform(SessionDelegate.java:208)
> ~[?:?]
>     at
> org.apache.jackrabbit.oak.jcr.session.ItemImpl.perform(ItemImpl.java:112)
> ~[?:?]
>     at
> org.apache.jackrabbit.oak.jcr.session.NodeImpl.addNode(NodeImpl.java:265)
> ~[?:?]
>     at
> org.apache.jackrabbit.commons.JcrUtils.getOrAddNode(JcrUtils.java:955)
> ~[?:?]
>     at
> gr8pi.itembank.jcr.repo.ItemBankHelperImpl.findTranslationNode(ItemBankHelperImpl.java:219)
> ~[?:?]
>     at
> gr8pi.itembank.jcr.repo.ItemBankHelperImpl.getOrCreateTranslation(ItemBankHelperImpl.java:163)
> ~[?:?]
>     at
> gr8pi.itembank.jcr.repo.ItemBankHelperImpl.getOrCreateTranslation(ItemBankHelperImpl.java:187)
> ~[?:?]
>     ... 23 more
> ----
>
> My JcrTemplate class looks like this. As you can see I'm trying to login
> with admin/admin credentials of the repository but it fails.
>
> @Slf4j
> @FieldDefaults(level = AccessLevel.PRIVATE)
> @Data
> @NoArgsConstructor
> @AllArgsConstructor
> @Component(
>     immediate = true,
>     property = {"user=admin", "password=admin"},
>     service = {JcrTemplate.class, JcrSessionFactory.class})
> public class JcrTemplateImpl implements JcrTemplate, JcrSessionFactory {
>
>   @Reference Repository repository;
>
>   Credentials credentials;
>
>   @Activate
>   public void activate(Map<String, Object> properties) {
>     String user = (String) properties.getOrDefault("user", "admin");
>     String pass = (String) properties.getOrDefault("password", "admin");
>
>     credentials = new SimpleCredentials(user, pass.toCharArray());
>   }
>
>   /** Run code in session. Handles session save and closing. */
>   @Override
>   public <T> T doInSession(CheckedFunction<T> callback) {
>     Session session = getSession();
>     try {
>       T result = callback.apply(session);
>       if (session.hasPendingChanges()) {
>         session.save();
>       }
>       return result;
>     } catch (Exception e) {
>       log.error("Failed to save session ", e);
>       throw new RuntimeException(e);
>     } finally {
>       session.logout();
>     }
>   }
>
>   @Override
>   public Session getSession() {
>     try {
>       return repository.login(getCredentials());
>     } catch (Exception e) {
>       log.error("Failed to create JCR session {}", e);
>       throw new RuntimeException(e);
>     }
>   }
> }
>
> NOTE: The feature at [1] is nearly identical to upstream sling feature
> except: I'm using only releases - no snapshots. I've added capabilities
> to make the app install and start in Karaf 4.2.0.
>
> [1]
> https://bintray.com/netdava/maven/download_file?file_path=org%2Fapache%2Fsling%2Forg.apache.sling.karaf-features%2F0.1.1-netdava7%2Forg.apache.sling.karaf-features-0.1.1-netdava7-features.xml
>
>


Attachment: signature.asc
Description: OpenPGP digital signature

Reply via email to