-
Type: Bug
-
Status: Resolved
-
Priority: Major
-
Resolution: Fixed
-
Affects Version/s: 10.10, 2021.0
-
Fix Version/s: 10.10-HF67, 2023.0, 2021.28
-
Component/s: Binary Metadata
-
Release Notes Summary:Metadata rules with missing order value are taken into account
-
Tags:
-
Backlog priority:500
-
Sprint:nxplatform #72
-
Story Points:3
A NPE occurs when a metadata binary rule is overriden without mentioning the order attribute.
How to reproduce:
- start a 10.10 instance with nuxeo-dam addon installed and the following XML contribution deployed (e.g. in $NUXEO_HOME/nxserver/config/):
<require>org.nuxeo.ecm.platform.picture.binary.metadata.contrib</require> <extension point="metadataRules" target="org.nuxeo.binary.metadata" > <rule id="iptc" enabled="false" /> </extension>
Expected result: the rule gets overriden and gets disabled
Actual result: the following error occurs and compoment org.nuxeo.binary.metadata is unstarted:
2021-09-24T17:25:29,672 ERROR [main] [org.nuxeo.runtime.model.ComponentManager] Component service:org.nuxeo.binary.metadata notification of application started failed: null java.lang.NullPointerException: null at org.nuxeo.binary.metadata.internals.MetadataRuleRegistry$1.compare(MetadataRuleRegistry.java:38) ~[nuxeo-binary-metadata-10.10-HF49.jar:?] at org.nuxeo.binary.metadata.internals.MetadataRuleRegistry$1.compare(MetadataRuleRegistry.java:34) ~[nuxeo-binary-metadata-10.10-HF49.jar:?] at java.util.TreeMap.put(TreeMap.java:552) ~[?:1.8.0_302] at java.util.TreeSet.add(TreeSet.java:255) ~[?:1.8.0_302] at java.util.AbstractCollection.addAll(AbstractCollection.java:344) ~[?:1.8.0_302] at java.util.TreeSet.addAll(TreeSet.java:312) ~[?:1.8.0_302] at org.nuxeo.binary.metadata.internals.MetadataRuleRegistry.handleApplicationStarted(MetadataRuleRegistry.java:53) ~[nuxeo-binary-metadata-10.10-HF49.jar:?] at org.nuxeo.binary.metadata.internals.BinaryMetadataComponent.applicationStarted(BinaryMetadataComponent.java:86) ~[nuxeo-binary-metadata-10.10-HF49.jar:?] at org.nuxeo.runtime.model.DefaultComponent.start(DefaultComponent.java:110) ~[nuxeo-runtime-10.10-HF45.jar:?] at org.nuxeo.runtime.model.impl.RegistrationInfoImpl.start(RegistrationInfoImpl.java:381) [nuxeo-runtime-10.10-HF45.jar:?] at org.nuxeo.runtime.model.impl.ComponentManagerImpl.startComponent(ComponentManagerImpl.java:718) [nuxeo-runtime-10.10-HF45.jar:?] at org.nuxeo.runtime.model.impl.ComponentManagerImpl.startComponents(ComponentManagerImpl.java:700) [nuxeo-runtime-10.10-HF45.jar:?] at org.nuxeo.runtime.model.impl.ComponentManagerImpl.start(ComponentManagerImpl.java:801) [nuxeo-runtime-10.10-HF45.jar:?] at org.nuxeo.runtime.osgi.OSGiRuntimeService.startComponents(OSGiRuntimeService.java:447) [nuxeo-runtime-10.10-HF45.jar:?] at org.nuxeo.runtime.osgi.OSGiRuntimeService.frameworkEvent(OSGiRuntimeService.java:462) [nuxeo-runtime-10.10-HF45.jar:?] at org.nuxeo.osgi.OSGiAdapter.fireFrameworkEvent(OSGiAdapter.java:223) [nuxeo-runtime-osgi-10.10-HF52.jar:?] at org.nuxeo.osgi.application.loader.FrameworkLoader.doStart(FrameworkLoader.java:226) [nuxeo-runtime-osgi-10.10-HF52.jar:?] at org.nuxeo.osgi.application.loader.FrameworkLoader.start(FrameworkLoader.java:125) [nuxeo-runtime-osgi-10.10-HF52.jar:?] at org.nuxeo.runtime.deployment.NuxeoStarter.start(NuxeoStarter.java:124) [nuxeo-runtime-deploy-10.10.jar:?] at org.nuxeo.runtime.deployment.NuxeoStarter.contextInitialized(NuxeoStarter.java:93) [nuxeo-runtime-deploy-10.10.jar:?] at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4768) [catalina-9.0.52.jar:9.0.52] at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5230) [catalina-9.0.52.jar:9.0.52] at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183) [catalina-9.0.52.jar:9.0.52] at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:726) [catalina-9.0.52.jar:9.0.52] at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:698) [catalina-9.0.52.jar:9.0.52] at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:696) [catalina-9.0.52.jar:9.0.52] at org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:690) [catalina-9.0.52.jar:9.0.52] at org.apache.catalina.startup.HostConfig$DeployDescriptor.run(HostConfig.java:1889) [catalina-9.0.52.jar:9.0.52] at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [?:1.8.0_302] at java.util.concurrent.FutureTask.run(FutureTask.java:266) [?:1.8.0_302] at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75) [tomcat-util-9.0.52.jar:9.0.52] at java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:112) [?:1.8.0_302] at org.apache.catalina.startup.HostConfig.deployDescriptors(HostConfig.java:583) [catalina-9.0.52.jar:9.0.52] at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:473) [catalina-9.0.52.jar:9.0.52] at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1618) [catalina-9.0.52.jar:9.0.52] at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:319) [catalina-9.0.52.jar:9.0.52] at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:123) [catalina-9.0.52.jar:9.0.52] at org.apache.catalina.util.LifecycleBase.setStateInternal(LifecycleBase.java:423) [catalina-9.0.52.jar:9.0.52] at org.apache.catalina.util.LifecycleBase.setState(LifecycleBase.java:366) [catalina-9.0.52.jar:9.0.52] at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:946) [catalina-9.0.52.jar:9.0.52] at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:835) [catalina-9.0.52.jar:9.0.52] at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183) [catalina-9.0.52.jar:9.0.52] at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1396) [catalina-9.0.52.jar:9.0.52] at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1386) [catalina-9.0.52.jar:9.0.52] at java.util.concurrent.FutureTask.run(FutureTask.java:266) [?:1.8.0_302] at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75) [tomcat-util-9.0.52.jar:9.0.52] at java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:134) [?:1.8.0_302] at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:919) [catalina-9.0.52.jar:9.0.52] at org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:263) [catalina-9.0.52.jar:9.0.52] at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183) [catalina-9.0.52.jar:9.0.52] at org.apache.catalina.core.StandardService.startInternal(StandardService.java:432) [catalina-9.0.52.jar:9.0.52] at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183) [catalina-9.0.52.jar:9.0.52] at org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:927) [catalina-9.0.52.jar:9.0.52] at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183) [catalina-9.0.52.jar:9.0.52] at org.apache.catalina.startup.Catalina.start(Catalina.java:772) [catalina-9.0.52.jar:9.0.52] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_302] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_302] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_302] at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_302] at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:345) [bootstrap-9.0.52.jar:9.0.52] at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:476) [bootstrap-9.0.52.jar:9.0.52]
2021-09-24T17:25:34,503 ERROR [main] [org.nuxeo.runtime.osgi.OSGiRuntimeService] Nuxeo Platform Started ====================================================================== = Component Loading Status: Pending: 0 / Missing: 0 / Unstarted: 1 / Total: 931 - service:org.nuxeo.binary.metadata ======================================================================
Workaround:
add the order attribute (with the same value as the original one) to the overriding rule:
<require>org.nuxeo.ecm.platform.picture.binary.metadata.contrib</require> <extension point="metadataRules" target="org.nuxeo.binary.metadata" > <rule id="iptc" order="0" enabled="false" /> </extension>