You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@sling.apache.org by "Carsten Ziegeler (Jira)" <ji...@apache.org> on 2026/03/03 16:21:00 UTC

[jira] [Commented] (SLING-10938) Exception thrown on Sling Starter shutdown in JobManagerConfiguration

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

Carsten Ziegeler commented on SLING-10938:
------------------------------------------

Concurrency review findings related to shutdown issues:

1. QueueManager.deactivate() iterates this.queues and sets queueServices = null without holding queuesLock. A queue created concurrently (between iteration and null assignment) will have null queueServices causing NPE. Fix: set isActive.set(false) first, then wrap iteration + queueServices=null in synchronized(queuesLock).

2. TopologyHandler.deactivate() does not join its background thread. The thread may still be in config.handleTopologyEvent() (a long-running JCR I/O operation) when deactivate returns, accessing potentially nullified component references. Fix: store the Thread reference and call thread.join(timeout) in deactivate().

> 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.10#820010)