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)