[MAGNOLIA-7515] Wrong dialog yaml breaks the whole UI/System -> ui-framework module is not started & dialog registry isn't created Created: 19/Mar/19  Updated: 22/Apr/19  Resolved: 18/Apr/19

Status: Closed
Project: Magnolia
Component/s: None
Affects Version/s: 6.0
Fix Version/s: 6.1

Type: Bug Priority: Critical
Reporter: Christian Ringele Assignee: Jaroslav Simak
Resolution: Fixed Votes: 1
Labels: None
Remaining Estimate: 0.25d
Time Spent: 0.1h
Original Estimate: Not Specified

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: Features 9
Story Points: 3

 Description   

Timebox for validation & investigation: 3 SP.

Behavior:

After logging the whole Admin Central is not usable:

  • On the app icon no app shows up
  • No app can be opened
  • No app is found over the search bar

This behavior seems to be new, as it shows up in a project than ran fine in 5.6 & 5.7.

The error seeing after login:

2019-03-19 14:50:33,687 ERROR a.admincentral.usermenu.actions.UserActionExecutor: Dialog definition not found: [admincentral:userMenu]2019-03-19 14:50:33,687 ERROR a.admincentral.usermenu.actions.UserActionExecutor: Dialog definition not found: [admincentral:userMenu]info.magnolia.config.registry.Registry$NoSuchDefinitionException: admincentral:userMenu at info.magnolia.config.registry.AbstractRegistry.getProvider(AbstractRegistry.java:136) ~[magnolia-configuration-6.0.jar:?] at info.magnolia.admincentral.usermenu.actions.UserActionExecutor.userMenuActions(UserActionExecutor.java:87) [magnolia-admincentral-6.0.jar:?] at info.magnolia.admincentral.usermenu.actions.UserActionExecutor.getActions(UserActionExecutor.java:82) [magnolia-admincentral-6.0.jar:?] at info.magnolia.admincentral.usermenu.UserMenu.asVaadinComponent(UserMenu.java:93) [magnolia-admincentral-6.0.jar:?] at info.magnolia.admincentral.ResurfaceUI.initUI(ResurfaceUI.java:193) [magnolia-admincentral-6.0.jar:?] at info.magnolia.admincentral.ResurfaceUI.init(ResurfaceUI.java:158) [magnolia-admincentral-6.0.jar:?] at com.vaadin.ui.UI.doInit(UI.java:770) [vaadin-server-8.5.2.jar:8.5.2] at com.vaadin.server.communication.UIInitHandler.getBrowserDetailsUI(UIInitHandler.java:218) [vaadin-server-8.5.2.jar:8.5.2] at com.vaadin.server.communication.UIInitHandler.synchronizedHandleRequest(UIInitHandler.java:76) [vaadin-server-8.5.2.jar:8.5.2] at com.vaadin.server.SynchronizedRequestHandler.handleRequest(SynchronizedRequestHandler.java:40) [vaadin-server-8.5.2.jar:8.5.2] at com.vaadin.server.VaadinService.handleRequest(VaadinService.java:1601) [vaadin-server-8.5.2.jar:8.5.2] at com.vaadin.server.VaadinServlet.service(VaadinServlet.java:445) [vaadin-server-8.5.2.jar:8.5.2] at info.magnolia.admincentral.AdmincentralServlet.service(AdmincentralServlet.java:113) [magnolia-admincentral-6.0.jar:?] at javax.servlet.http.HttpServlet.service(HttpServlet.java:731) [servlet-api.jar:?] at info.magnolia.cms.filters.ServletDispatchingFilter.doFilter(ServletDispatchingFilter.java:148) [magnolia-core-6.0.jar:?] at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:85) [magnolia-core-6.0.jar:?] at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:79) [magnolia-core-6.0.jar:?] at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:81) [magnolia-core-6.0.jar:?] at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:81) [magnolia-core-6.0.jar:?] at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:81) [magnolia-core-6.0.jar:?] at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:81) [magnolia-core-6.0.jar:?] at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:81) [magnolia-core-6.0.jar:?] at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:81) [magnolia-core-6.0.jar:?] at info.magnolia.cms.filters.CompositeFilter.doFilter(CompositeFilter.java:65) [magnolia-core-6.0.jar:?] at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:85) [magnolia-core-6.0.jar:?] at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:79) [magnolia-core-6.0.jar:?] at info.magnolia.virtualuri.VirtualUriFilter.doFilter(VirtualUriFilter.java:98) [magnolia-virtual-uri-6.0.jar:?] at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:85) [magnolia-core-6.0.jar:?] at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:79) [magnolia-core-6.0.jar:?] at info.magnolia.module.cache.executor.Bypass.processCacheRequest(Bypass.java:58) [magnolia-cache-core-5.6.2.jar:?] at info.magnolia.module.cache.executor.CompositeExecutor.processCacheRequest(CompositeExecutor.java:67) [magnolia-cache-core-5.6.2.jar:?] at info.magnolia.module.cache.filter.CacheFilter.doFilter(CacheFilter.java:220) [magnolia-cache-core-5.6.2.jar:?] at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:85) [magnolia-core-6.0.jar:?] at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:79) [magnolia-core-6.0.jar:?] at info.magnolia.cms.i18n.I18nContentSupportFilter.doFilter(I18nContentSupportFilter.java:85) [magnolia-core-6.0.jar:?] at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:85) [magnolia-core-6.0.jar:?] at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:79) [magnolia-core-6.0.jar:?] at info.magnolia.cms.filters.RangeSupportFilter.doFilter(RangeSupportFilter.java:77) [magnolia-core-6.0.jar:?] at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:85) [magnolia-core-6.0.jar:?] at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:79) [magnolia-core-6.0.jar:?] at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:81) [magnolia-core-6.0.jar:?] at info.magnolia.cms.security.BaseSecurityFilter.doFilter(BaseSecurityFilter.java:57) [magnolia-core-6.0.jar:?] at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:85) [magnolia-core-6.0.jar:?] at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:79) [magnolia-core-6.0.jar:?] at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:81) [magnolia-core-6.0.jar:?] at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:81) [magnolia-core-6.0.jar:?] at info.magnolia.cms.security.SecurityCallbackFilter.doFilter(SecurityCallbackFilter.java:84) [magnolia-core-6.0.jar:?] at info.magnolia.cms.filters.OncePerRequestAbstractMgnlFilter.doFilter(OncePerRequestAbstractMgnlFilter.java:59) [magnolia-core-6.0.jar:?] at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:79) [magnolia-core-6.0.jar:?] at info.magnolia.cms.security.LogoutFilter.doFilter(LogoutFilter.java:94) [magnolia-core-6.0.jar:?] at info.magnolia.cms.filters.OncePerRequestAbstractMgnlFilter.doFilter(OncePerRequestAbstractMgnlFilter.java:59) [magnolia-core-6.0.jar:?] at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:79) [magnolia-core-6.0.jar:?] at info.magnolia.module.site.filters.SiteMergeFilter.doFilter(SiteMergeFilter.java:119) [classes/:?] at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:85) [magnolia-core-6.0.jar:?] at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:79) [magnolia-core-6.0.jar:?] at info.magnolia.multisite.filters.MultiSiteFilter.doFilter(MultiSiteFilter.java:120) [magnolia-module-multisite-1.3.5.jar:?] at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:85) [magnolia-core-6.0.jar:?] at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:79) [magnolia-core-6.0.jar:?] at info.magnolia.cms.filters.MultiChannelFilter.doFilter(MultiChannelFilter.java:83) [magnolia-core-6.0.jar:?] at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:85) [magnolia-core-6.0.jar:?] at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:79) [magnolia-core-6.0.jar:?] at info.magnolia.module.cache.filter.GZipFilter.doFilter(GZipFilter.java:73) [magnolia-cache-core-5.6.2.jar:?] at info.magnolia.cms.filters.OncePerRequestAbstractMgnlFilter.doFilter(OncePerRequestAbstractMgnlFilter.java:59) [magnolia-core-6.0.jar:?] at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:79) [magnolia-core-6.0.jar:?] at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:81) [magnolia-core-6.0.jar:?] at info.magnolia.cms.security.auth.login.LoginFilter.doFilter(LoginFilter.java:127) [magnolia-core-6.0.jar:?] at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:85) [magnolia-core-6.0.jar:?] at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:79) [magnolia-core-6.0.jar:?] at info.magnolia.enterprise.registration.RegistrationFilter.doFilter(RegistrationFilter.java:64) [magnolia-module-enterprise-6.0.jar:?] at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:85) [magnolia-core-6.0.jar:?] at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:79) [magnolia-core-6.0.jar:?] at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:81) [magnolia-core-6.0.jar:?] at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:81) [magnolia-core-6.0.jar:?] at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:81) [magnolia-core-6.0.jar:?] at info.magnolia.personalization.preview.filter.PreviewFilter.doFilter(PreviewFilter.java:92) [magnolia-personalization-preview-app-1.7.jar:?] at info.magnolia.cms.filters.OncePerRequestAbstractMgnlFilter.doFilter(OncePerRequestAbstractMgnlFilter.java:59) [magnolia-core-6.0.jar:?] at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:79) [magnolia-core-6.0.jar:?] at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:81) [magnolia-core-6.0.jar:?] at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:81) [magnolia-core-6.0.jar:?] at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:81) [magnolia-core-6.0.jar:?] at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:81) [magnolia-core-6.0.jar:?] at info.magnolia.cms.filters.ContentTypeFilter.doFilter(ContentTypeFilter.java:155) [magnolia-core-6.0.jar:?] at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:85) [magnolia-core-6.0.jar:?] at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:79) [magnolia-core-6.0.jar:?] at info.magnolia.cms.filters.ContextFilter.doFilter(ContextFilter.java:128) [magnolia-core-6.0.jar:?] at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:85) [magnolia-core-6.0.jar:?] at info.magnolia.cms.filters.MgnlFilterChain.doFilter(MgnlFilterChain.java:79) [magnolia-core-6.0.jar:?] at info.magnolia.cms.filters.CompositeFilter.doFilter(CompositeFilter.java:65) [magnolia-core-6.0.jar:?] at info.magnolia.cms.filters.AbstractMgnlFilter.doFilter(AbstractMgnlFilter.java:85) [magnolia-core-6.0.jar:?] at info.magnolia.cms.filters.SafeDestroyMgnlFilterWrapper.doFilter(SafeDestroyMgnlFilterWrapper.java:107) [magnolia-core-6.0.jar:?] at info.magnolia.cms.filters.MgnlFilterDispatcher.doDispatch(MgnlFilterDispatcher.java:67) [magnolia-core-6.0.jar:?] at info.magnolia.cms.filters.MgnlMainFilter.doFilter(MgnlMainFilter.java:110) [magnolia-core-6.0.jar:?] at info.magnolia.cms.filters.MgnlMainFilter.doFilter(MgnlMainFilter.java:96) [magnolia-core-6.0.jar:?] at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) [catalina.jar:7.0.77] at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) [catalina.jar:7.0.77] at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:218) [catalina.jar:7.0.77] at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:110) [catalina.jar:7.0.77] at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:169) [catalina.jar:7.0.77] at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103) [catalina.jar:7.0.77] at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:962) [catalina.jar:7.0.77] at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116) [catalina.jar:7.0.77] at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:445) [catalina.jar:7.0.77] at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1115) [tomcat-coyote.jar:7.0.77] at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:637) [tomcat-coyote.jar:7.0.77] at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:318) [tomcat-coyote.jar:7.0.77] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [?:1.8.0_112] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [?:1.8.0_112] at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) [tomcat-coyote.jar:7.0.77] at java.lang.Thread.run(Thread.java:745) [?:1.8.0_112]

Root cause:

A sub-part of a dialog's include was also placed into the dialogs registry and not into an outside include folder.

Having a non valid dialog defintion in a 'dialogs' module registry during startup.
The yaml file contains on top level a field class (which it tried to cast).

Triggers a class cast exception and out of this the whole Dialog registry itself is not built ui-framework module is not started.

If you add the same yaml later the system complains, but as the module is started the system still works until the next restart...

The error during startup:

Error during startup:Error during startup:---------------------INFO  info.magnolia.config.source.yaml.YamlConfigurationSource 19.03.2019 14:49:28 -- Registered definition from YAML file [/google-maps-magnolia/dialogs/components/google-maps.yaml]: [dialog] definition [google-maps] with reference id: [google-maps-magnolia:components/google-maps] from module [google-maps-magnolia] at [components/google-maps]ERROR info.magnolia.module.ModuleManagerImpl 19.03.2019 14:49:28 -- Can't start module ui-frameworkjava.lang.ClassCastException: info.magnolia.ui.form.field.definition.OptionGroupFieldDefinition cannot be cast to info.magnolia.ui.dialog.DialogDefinition at info.magnolia.ui.dialog.registry.CompatibilityDialogDefinitionRegistry$1$1.get(CompatibilityDialogDefinitionRegistry.java:70) ~[magnolia-ui-framework-compatibility-6.0.jar:?] at info.magnolia.ui.dialog.registry.CompatibilityDialogDefinitionRegistry$1$1.get(CompatibilityDialogDefinitionRegistry.java:67) ~[magnolia-ui-framework-compatibility-6.0.jar:?] at info.magnolia.config.registry.DefinitionProviderBuilder.buildFromTransformationResult(DefinitionProviderBuilder.java:143) ~[magnolia-configuration-6.0.jar:?] at info.magnolia.config.source.yaml.YamlDefinitionProvider.resolve(YamlDefinitionProvider.java:207) ~[magnolia-configuration-6.0.jar:?] at info.magnolia.config.source.yaml.YamlDefinitionProvider.getDelegate(YamlDefinitionProvider.java:129) ~[magnolia-configuration-6.0.jar:?] at info.magnolia.config.registry.AbstractDefinitionProviderWrapper.getMetadata(AbstractDefinitionProviderWrapper.java:56) ~[magnolia-configuration-6.0.jar:?] at info.magnolia.config.registry.RegistryMap.asStringKey(RegistryMap.java:156) ~[magnolia-configuration-6.0.jar:?] at info.magnolia.config.registry.RegistryMap.put(RegistryMap.java:96) ~[magnolia-configuration-6.0.jar:?] at info.magnolia.config.registry.AbstractRegistry.register(AbstractRegistry.java:96) ~[magnolia-configuration-6.0.jar:?] at info.magnolia.config.source.yaml.YamlConfigurationSource.loadAndRegister(YamlConfigurationSource.java:114) ~[magnolia-configuration-6.0.jar:?] at info.magnolia.config.source.yaml.AbstractFileResourceConfigurationSource$LoadAndRegisterFunction.doWith(AbstractFileResourceConfigurationSource.java:286) ~[magnolia-configuration-6.0.jar:?] at info.magnolia.config.source.yaml.AbstractFileResourceConfigurationSource$LoadAndRegisterFunction.doWith(AbstractFileResourceConfigurationSource.java:282) ~[magnolia-configuration-6.0.jar:?] at info.magnolia.resourceloader.util.VoidFunction.apply(VoidFunction.java:49) ~[magnolia-resource-loader-6.0.jar:?] at java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:184) ~[?:1.8.0_112] at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193) ~[?:1.8.0_112] at java.util.stream.SortedOps$SizedRefSortingSink.end(SortedOps.java:352) ~[?:1.8.0_112] at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:482) ~[?:1.8.0_112] at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471) ~[?:1.8.0_112] at java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:151) ~[?:1.8.0_112] at java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:174) ~[?:1.8.0_112] at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) ~[?:1.8.0_112] at java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:418) ~[?:1.8.0_112] at info.magnolia.config.source.yaml.AbstractFileResourceConfigurationSource.start(AbstractFileResourceConfigurationSource.java:153) ~[magnolia-configuration-6.0.jar:?] at info.magnolia.config.source.yaml.YamlConfigurationSourceBuilder.bindTo(YamlConfigurationSourceBuilder.java:118) ~[magnolia-configuration-6.0.jar:?] at info.magnolia.config.source.yaml.YamlConfigurationSourceBuilder.bindWithDefaults(YamlConfigurationSourceBuilder.java:125) ~[magnolia-configuration-6.0.jar:?] at info.magnolia.ui.framework.UiFrameworkCompatibilityModule.start(UiFrameworkCompatibilityModule.java:96) ~[magnolia-ui-framework-compatibility-6.0.jar:?] at info.magnolia.module.ModuleManagerImpl.startModule(ModuleManagerImpl.java:413) ~[magnolia-core-6.0.jar:?] at info.magnolia.module.ModuleManagerImpl.startModules(ModuleManagerImpl.java:348) [magnolia-core-6.0.jar:?] at info.magnolia.module.ui.ModuleManagerNullUI.onStartup(ModuleManagerNullUI.java:74) [magnolia-core-6.0.jar:?] at info.magnolia.cms.beans.config.ConfigLoader.load(ConfigLoader.java:146) [magnolia-core-6.0.jar:?] at info.magnolia.init.MagnoliaServletContextListener$1.doExec(MagnoliaServletContextListener.java:259) [magnolia-core-6.0.jar:?] at info.magnolia.context.MgnlContext$VoidOp.exec(MgnlContext.java:407) [magnolia-core-6.0.jar:?] at info.magnolia.context.MgnlContext$VoidOp.exec(MgnlContext.java:404) [magnolia-core-6.0.jar:?] at info.magnolia.context.MgnlContext.doInSystemContext(MgnlContext.java:378) [magnolia-core-6.0.jar:?] at info.magnolia.init.MagnoliaServletContextListener.startServer(MagnoliaServletContextListener.java:256) [magnolia-core-6.0.jar:?] at info.magnolia.init.MagnoliaServletContextListener.contextInitialized(MagnoliaServletContextListener.java:182) [magnolia-core-6.0.jar:?] at info.magnolia.init.MagnoliaServletContextListener.contextInitialized(MagnoliaServletContextListener.java:128) [magnolia-core-6.0.jar:?] at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:5118) [catalina.jar:7.0.77] at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5634) [catalina.jar:7.0.77] at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:145) [catalina.jar:7.0.77] at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1571) [catalina.jar:7.0.77] at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1561) [catalina.jar:7.0.77] at java.util.concurrent.FutureTask.run(FutureTask.java:266) [?:1.8.0_112] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [?:1.8.0_112] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [?:1.8.0_112] at java.lang.Thread.run(Thread.java:745) [?:1.8.0_112]

And the root cause:

2019-03-19 12:21:10,662 ERROR info.magnolia.dirwatch.DirectoryWatcher           : Exception when executing callback for google-maps-magnolia: Class cast: info.magnolia.ui.form.field.definition.SelectFieldDefinition cannot be cast to info.magnolia.ui.dialog.DialogDefinition2019-03-19 12:21:10,662 ERROR info.magnolia.dirwatch.DirectoryWatcher           : Exception when executing callback for google-maps-magnolia: Class cast: info.magnolia.ui.form.field.definition.SelectFieldDefinition cannot be cast to info.magnolia.ui.dialog.DialogDefinitionjava.lang.ClassCastException: info.magnolia.ui.form.field.definition.SelectFieldDefinition cannot be cast to info.magnolia.ui.dialog.DialogDefinition at info.magnolia.ui.dialog.registry.CompatibilityDialogDefinitionRegistry$1$1.get(CompatibilityDialogDefinitionRegistry.java:70) ~[magnolia-ui-framework-compatibility-6.0.jar:?]

Reproduce:

Add anywhere into a 'dialogs' registry this yaml and startup:

name: avoid
class: info.magnolia.ui.form.field.definition.OptionGroupFieldDefinition
multiselect: true
type: String
options:
 - name: tolls
 value: tolls
 - name: ferries
 value: ferries
 - name: highways
 value: highways

 

Conclusion / justification of severity

Clear, this was produced by adding a dialog sub-config into the dialogs registry instead into an outside inclusion folder (best practice). We had this problem also in older versions, but there is just logged a warn message. Now it breaks the whole system (after startup).

Not all developers visit a training and know about this best practice.

But the really severe about it is:
Any invalid dialog definition,  wehre using a wrong or non existing class, will break the system.

And finding the problem is really hard. Especially as it only shows up after a restart.

 

Solution:

I have seen such behavior (not as severe) before when using invalid yamls.

Registries in general should go on registering definitions even after trying to process a wrong one.

Add a invalid template and all templates are also gone etc...



 Comments   
Comment by Christopher Zimmermann [ 02/Apr/19 ]

Besides not crashing, the system should write an error to the log and the problem definition should show up in definitions app Problems view.

Comment by Dai Ha [ 22/Apr/19 ]

Verify with bundle magnolia-enterprise-pro-demo-bundle-6.0.1-20190419.084627-881-tomcat-bundle.zip, apps still work normal after restart.

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