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)