[MAGNOLIA-7280] Empty property in yaml definition breaks whole definition indexing Created: 15/Mar/18  Updated: 24/Nov/20  Resolved: 20/Mar/18

Status: Closed
Project: Magnolia
Component/s: None
Affects Version/s: 5.6.2
Fix Version/s: 5.6.3

Type: Bug Priority: Major
Reporter: Tomáš Gregovský Assignee: Ilgun Ilgun
Resolution: Fixed Votes: 1
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified

Issue Links:
Relates
relates to CFGUI-73 Definitions app crashes because a pro... Closed
relates to MGNLUI-7001 Empty YAML "fields" Value Cause The D... Closed
relation
Template:
Acceptance criteria:
Empty
Task DoD:
[ ]* Doc/release notes changes? Comment present?
[ ]* Downstream builds green?
[ ]* Solution information and context easily available?
[ ]* Tests
[ ]* FixVersion filled and not yet released
[ ]  Architecture Decision Record (ADR)
Bug DoR:
[ ]* Steps to reproduce, expected, and actual results filled
[ ]* Affected version filled
Date of First Response:
Sprint: Basel 139
Story Points: 2

 Description   

colored textIssue discovered in CLOUDHELP-66, we used to have yaml page templates with empty properties, by mistake, but it was working on 5.5.7. example of template:

title: '_ HTML code [#dx #yaml]'
renderType: freemarker
templateScript: /dx/ftls/components/content/html.ftl
dialog: dx:components/content/cHTML
description:
i18nBasename: info.magnolia.module.templatingkit.messages

but after migration from 5.5.7 to 5.6.3 it breaks Magnolia - e.g. the whole process which observe filesystem for yaml definitions stop with error (see below), but even if you fix it or remove broken definition file Magnolia will NOT reindex until restart.

2018-03-15 09:57:11,589 ERROR info.magnolia.module.ModuleManagerImpl            : Can't start module rendering
java.lang.NullPointerException: null
	at java.util.HashMap.merge(HashMap.java:1216) ~[?:1.8.0_65]
	at java.util.stream.Collectors.lambda$toMap$173(Collectors.java:1320) ~[?:1.8.0_65]
	at java.util.stream.ReduceOps$3ReducingSink.accept(ReduceOps.java:169) ~[?:1.8.0_65]
	at java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:175) ~[?:1.8.0_65]
	at java.util.Iterator.forEachRemaining(Iterator.java:116) ~[?:1.8.0_65]
	at java.util.Spliterators$IteratorSpliterator.forEachRemaining(Spliterators.java:1801) ~[?:1.8.0_65]
	at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:481) ~[?:1.8.0_65]
	at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471) ~[?:1.8.0_65]
	at java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:708) ~[?:1.8.0_65]
	at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) ~[?:1.8.0_65]
	at java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:499) ~[?:1.8.0_65]
	at info.magnolia.config.source.yaml.MetadataProcessor.filterMap(MetadataProcessor.java:72) ~[classes/:?]
	at info.magnolia.config.source.yaml.MetadataProcessor.process(MetadataProcessor.java:63) ~[classes/:?]
	at info.magnolia.config.source.yaml.YamlDefinitionProvider.resolve(YamlDefinitionProvider.java:187) ~[magnolia-configuration-5.6.2.jar:?]
	at info.magnolia.config.source.yaml.YamlDefinitionProvider.getDelegate(YamlDefinitionProvider.java:129) ~[magnolia-configuration-5.6.2.jar:?]
	at info.magnolia.config.registry.AbstractDefinitionProviderWrapper.getMetadata(AbstractDefinitionProviderWrapper.java:56) ~[magnolia-configuration-5.6.2.jar:?]
	at info.magnolia.config.registry.AbstractDefinitionProviderWrapper.getMetadata(AbstractDefinitionProviderWrapper.java:56) ~[magnolia-configuration-5.6.2.jar:?]
	at info.magnolia.config.registry.RegistryMap.asStringKey(RegistryMap.java:156) ~[magnolia-configuration-5.6.2.jar:?]
	at info.magnolia.config.registry.RegistryMap.put(RegistryMap.java:96) ~[magnolia-configuration-5.6.2.jar:?]
	at info.magnolia.config.registry.AbstractRegistry.register(AbstractRegistry.java:96) ~[magnolia-configuration-5.6.2.jar:?]
	at info.magnolia.config.source.yaml.YamlConfigurationSource.loadAndRegister(YamlConfigurationSource.java:114) ~[magnolia-configuration-5.6.2.jar:?]
	at info.magnolia.config.source.yaml.AbstractFileResourceConfigurationSource$LoadAndRegisterFunction.doWith(AbstractFileResourceConfigurationSource.java:286) ~[magnolia-configuration-5.6.2.jar:?]
	at info.magnolia.config.source.yaml.AbstractFileResourceConfigurationSource$LoadAndRegisterFunction.doWith(AbstractFileResourceConfigurationSource.java:282) ~[magnolia-configuration-5.6.2.jar:?]
	at info.magnolia.resourceloader.util.VoidFunction.apply(VoidFunction.java:49) ~[magnolia-resource-loader-5.6.2.jar:?]
	at java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:184) ~[?:1.8.0_65]
	at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193) ~[?:1.8.0_65]
	at java.util.stream.SortedOps$SizedRefSortingSink.end(SortedOps.java:352) ~[?:1.8.0_65]
	at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:482) ~[?:1.8.0_65]
	at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471) ~[?:1.8.0_65]
	at java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:151) ~[?:1.8.0_65]
	at java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:174) ~[?:1.8.0_65]
	at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) ~[?:1.8.0_65]
	at java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:418) ~[?:1.8.0_65]
	at info.magnolia.config.source.yaml.AbstractFileResourceConfigurationSource.start(AbstractFileResourceConfigurationSource.java:153) ~[magnolia-configuration-5.6.2.jar:?]
	at info.magnolia.config.source.yaml.YamlConfigurationSourceBuilder.bindTo(YamlConfigurationSourceBuilder.java:107) ~[magnolia-configuration-5.6.2.jar:?]
	at info.magnolia.config.source.yaml.YamlConfigurationSourceBuilder.bindWithDefaults(YamlConfigurationSourceBuilder.java:114) ~[magnolia-configuration-5.6.2.jar:?]
	at info.magnolia.rendering.module.RenderingModule.start(RenderingModule.java:67) ~[magnolia-rendering-5.6.2.jar:?]
	at info.magnolia.module.ModuleManagerImpl.startModule(ModuleManagerImpl.java:413) ~[magnolia-core-5.6.2.jar:?]
	at info.magnolia.module.ModuleManagerImpl.startModules(ModuleManagerImpl.java:348) [magnolia-core-5.6.2.jar:?]
	at info.magnolia.module.ui.ModuleManagerWebUI.onStartup(ModuleManagerWebUI.java:78) [magnolia-core-5.6.2.jar:?]
	at info.magnolia.cms.beans.config.ConfigLoader.load(ConfigLoader.java:146) [magnolia-core-5.6.2.jar:?]
	at info.magnolia.init.MagnoliaServletContextListener$1.doExec(MagnoliaServletContextListener.java:259) [magnolia-core-5.6.2.jar:?]
	at info.magnolia.context.MgnlContext$VoidOp.exec(MgnlContext.java:407) [magnolia-core-5.6.2.jar:?]
	at info.magnolia.context.MgnlContext$VoidOp.exec(MgnlContext.java:404) [magnolia-core-5.6.2.jar:?]
	at info.magnolia.context.MgnlContext.doInSystemContext(MgnlContext.java:378) [magnolia-core-5.6.2.jar:?]
	at info.magnolia.init.MagnoliaServletContextListener.startServer(MagnoliaServletContextListener.java:256) [magnolia-core-5.6.2.jar:?]
	at info.magnolia.init.MagnoliaServletContextListener.contextInitialized(MagnoliaServletContextListener.java:182) [magnolia-core-5.6.2.jar:?]
	at info.magnolia.init.MagnoliaServletContextListener.contextInitialized(MagnoliaServletContextListener.java:128) [magnolia-core-5.6.2.jar:?]
	at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4727) [catalina.jar:8.5.5]
	at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5189) [catalina.jar:8.5.5]
	at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) [catalina.jar:8.5.5]
	at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:724) [catalina.jar:8.5.5]
	at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:700) [catalina.jar:8.5.5]
	at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:734) [catalina.jar:8.5.5]
	at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:1107) [catalina.jar:8.5.5]
	at org.apache.catalina.startup.HostConfig$DeployDirectory.run(HostConfig.java:1841) [catalina.jar:8.5.5]
	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [?:1.8.0_65]
	at java.util.concurrent.FutureTask.run(FutureTask.java:266) [?:1.8.0_65]
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [?:1.8.0_65]
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [?:1.8.0_65]
	at java.lang.Thread.run(Thread.java:745) [?:1.8.0_65]

Generated at Mon Feb 12 04:22:23 CET 2024 using Jira 9.4.2#940002-sha1:46d1a51de284217efdcb32434eab47a99af2938b.