[ 
https://issues.apache.org/jira/browse/SLING-10938?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17451156#comment-17451156
 ] 

Michał Goliński edited comment on SLING-10938 at 11/30/21, 2:21 PM:
--------------------------------------------------------------------

I've spent some time digging into this. During shutdown the method 
{{unbindServicePrincipalsValidator}} in {{ServiceUserMapperImpl}} is called and 
in effect, the {{ServiceUserMapperImpl}} OSGi component gets reconfigured and 
re-registered.

As {{JobManagerConfiguration}} has an optional reference for 
{{ServiceUserMapper}}, it gets activated. There is a race somewhere, but 
{{ServiceUserMapperImpl}} already has in few places code like this:
{code:java}
try {
  serviceRegistration.unregister();
  log.debug("Unregistered ServiceUserMapped {}", registration.mapping);
} catch (final IllegalStateException e) {
  // this can happen on shutdown, therefore we just ignore it and don't log
}
{code}

So it might be a indicator that the exception should be catched (maybe in 
{{JobManagerConfiguration}}) and ignored. BTW, the exception is already gobbled 
somewhere, as it does not show up normally in error.log (even with DEBUG turned 
on).


was (Author: JIRAUSER280737):
I've spent some time digging into this. During shutdown the method 
{unbindServicePrincipalsValidator} in {ServiceUserMapperImpl} is called and in 
effect, the {ServiceUserMapperImpl} OSGi component gets reconfigured and 
re-registered. As {JobManagerConfiguration} has an optional reference for 
{ServiceUserMapper}, it gets activated. There is a race somewhere, but 
{ServiceUserMapperImpl} already has in few places code like this:

{code:java}
try {
  serviceRegistration.unregister();
  log.debug("Unregistered ServiceUserMapped {}", registration.mapping);
} catch (final IllegalStateException e) {
  // this can happen on shutdown, therefore we just ignore it and don't log
}
{code}

So it might be a indicator that the exception should be catched (maybe in 
{JobManagerConfiguration}) and ignored. BTW, the exception is already caught 
somewhere, as it does not show up normally in error.log (even with DEBUG turned 
on).

> Exception thrown on Sling Starter shutdown in JobManagerConfiguration
> ---------------------------------------------------------------------
>
>                 Key: SLING-10938
>                 URL: https://issues.apache.org/jira/browse/SLING-10938
>             Project: Sling
>          Issue Type: Task
>          Components: Event
>    Affects Versions: Event 4.2.24
>            Reporter: Michał Goliński
>            Priority: Minor
>         Attachments: error.log, stacktrace.txt, stdout.txt
>
>
> On stopping the Sling Starter with Ctrl+C we can occasionally see the 
> following stacktrace:
> {code:java}
> ERROR : bundle org.apache.sling.event:4.2.20 
> (151)[org.apache.sling.event.impl.jobs.config.JobManagerConfiguration(247)] : 
> The activate method has thrown an exception
> java.lang.IllegalArgumentException: Can't create child on a synthetic root
>   at 
> org.apache.sling.resourceresolver.impl.ResourceResolverImpl.create(ResourceResolverImpl.java:1006)
>   ...
>   at 
> org.apache.sling.api.resource.ResourceUtil.getOrCreateResource(ResourceUtil.java:571)
>   at 
> org.apache.sling.event.impl.support.ResourceHelper.getOrCreateBasePath(ResourceHelper.java:258)
>   at 
> org.apache.sling.event.impl.jobs.config.JobManagerConfiguration.activate(JobManagerConfiguration.java:225)
>   ...
>   at 
> org.apache.sling.serviceusermapping.impl.ServiceUserMapperImpl.executeServiceRegistrations(ServiceUserMapperImpl.java:439)
>   at 
> org.apache.sling.serviceusermapping.impl.ServiceUserMapperImpl.lambda$executeServiceRegistrationsAsync$0(ServiceUserMapperImpl.java:406)
>   at 
> java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:539)
>   at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
>   at 
> java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
>   at 
> java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
>   at java.base/java.lang.Thread.run(Thread.java:833)
>     {code}
> This happens also with bundle version 4.2.24.
> This doesn't happen every time, but I've seen up to seven of these at a time 
> (the number of stacktraces changes), see the attached file. This might be 
> similar to SLING-10204 , although in the debugger I can see the 
> ServiceUserMapped being mentioned, not ResourceResolverFactory.



--
This message was sent by Atlassian Jira
(v8.20.1#820001)

Reply via email to