You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@sling.apache.org by "Joerg Hoh (Jira)" <ji...@apache.org> on 2025/10/24 07:25:00 UTC

[jira] [Created] (SLING-12977) OSGI configuration with empty key name fails instance startup

Joerg Hoh created SLING-12977:
---------------------------------

             Summary: OSGI configuration with empty key name fails instance startup
                 Key: SLING-12977
                 URL: https://issues.apache.org/jira/browse/SLING-12977
             Project: Sling
          Issue Type: Task
          Components: Feature Model
    Affects Versions: Feature Model Launcher 1.3.2
            Reporter: Joerg Hoh



When an OSGI config with an empty property name is provided, the feature launcher throws this exception:
{noformat}
ERROR: Bundle org.apache.felix.framework [0] EventDispatcher: Error during dispatch. (java.lang.RuntimeException: java.lang.reflect.InvocationTargetException)
java.lang.RuntimeException: java.lang.reflect.InvocationTargetException
        at org.apache.sling.feature.launcher.impl.launchers.AbstractRunner$1.addingService(AbstractRunner.java:164)
        at org.osgi.util.tracker.ServiceTracker$Tracked.customizerAdding(ServiceTracker.java:944)
        at org.osgi.util.tracker.ServiceTracker$Tracked.customizerAdding(ServiceTracker.java:872)
        at org.osgi.util.tracker.AbstractTracked.trackAdding(AbstractTracked.java:256)
        at org.osgi.util.tracker.AbstractTracked.track(AbstractTracked.java:229)
        at org.osgi.util.tracker.ServiceTracker$Tracked.serviceChanged(ServiceTracker.java:904)
        at org.apache.felix.framework.EventDispatcher.invokeServiceListenerCallback(EventDispatcher.java:990)
        at org.apache.felix.framework.EventDispatcher.fireEventImmediately(EventDispatcher.java:838)
        at org.apache.felix.framework.EventDispatcher.fireServiceEvent(EventDispatcher.java:545)
        at org.apache.felix.framework.Felix.fireServiceEvent(Felix.java:4863)
        at org.apache.felix.framework.Felix.registerService(Felix.java:3834)
        at org.apache.felix.framework.BundleContextImpl.registerService(BundleContextImpl.java:328)
        at org.apache.felix.framework.BundleContextImpl.registerService(BundleContextImpl.java:335)
        at org.apache.felix.cm.impl.Activator.registerMemoryPersistenceManager(Activator.java:209)
        at org.apache.felix.cm.impl.Activator.start(Activator.java:108)
        at org.apache.felix.framework.util.SecureAction.startActivator(SecureAction.java:849)
        at org.apache.felix.framework.Felix.activateBundle(Felix.java:2429)
        at org.apache.felix.framework.Felix.startBundle(Felix.java:2335)
        at org.apache.felix.framework.Felix.setActiveStartLevel(Felix.java:1566)
        at org.apache.felix.framework.FrameworkStartLevelImpl.run(FrameworkStartLevelImpl.java:297)
        at java.base/java.lang.Thread.run(Thread.java:1583)
Caused by: java.lang.reflect.InvocationTargetException
        at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:118)
        at java.base/java.lang.reflect.Method.invoke(Method.java:580)
        at org.apache.sling.feature.launcher.impl.launchers.AbstractRunner$1.addingService(AbstractRunner.java:149)
        ... 20 more
Caused by: java.lang.IllegalArgumentException: Key [] must not be an empty string
        at org.apache.felix.cm.impl.CaseInsensitiveDictionary.checkKey(CaseInsensitiveDictionary.java:269)
        at org.apache.felix.cm.impl.CaseInsensitiveDictionary.<init>(CaseInsensitiveDictionary.java:73)
        at org.apache.felix.cm.impl.persistence.MemoryPersistenceManager.cache(MemoryPersistenceManager.java:101)
        at org.apache.felix.cm.impl.persistence.MemoryPersistenceManager.store(MemoryPersistenceManager.java:130)
        at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
        ... 22 more
{noformat}

And in the case of AEM the instance failed to start properly. 

Request:
* catch (and rethrow) that exception and provide more context for which configuration PID this failed.
* potentially handle that exception, log it, but then also continue the startup. Debatable, if this is the right choice in this case.

(We should also extend the model analyser to catch such a situation.)








--
This message was sent by Atlassian Jira
(v8.20.10#820010)