Updater editor: “no matching property definition found” after 15.6 Update

I updated Bloomreach from 14.7.3 to 15.6.0. Since then, when I run an update script, I get the following error message:

StringResourceModel[key:exception,type=${type},message=${message},default:Model:classname=[org.apache.wicket.model.Model]:object=[no matching property definition found for {http://www.onehippo.org/jcr/hipposys/nt/1.0}logtarget],params:[]]

Is there a stack trace in the logs? I think logtarget is set on the updater node, this is implying that the property is not defined for that node. If you look in the hipposys cnd (from the console) you should see that defined in [hipposys:updaterinfo] > nt:base. That was introduced in 14.7.7 it seems.

is it possible you are running with bootstrap disabled (repo.bootstrap=false). If so, try running with repo.bootstrap=true. If you are already doing that, try with repo.bootstrap=full. Warning, running with full potentially overwrites changes to configuration that haven’t been saved to your project. See here for details

Yes, the hipposys:logtarget property is definitely missing in the node for the script, which also cannot be added manually via the console. But in hipposys.cnd the property is defined.

I have already used repo.bootstrap=true for the update. But I have now tried it again with repo.bootstrap=full. However, that didn’t work either.

To do this, I created the following file and uploaded it to the Mission Control:
releaseUpdateFull properties

When deploying, I then selected the file as follows:

Note: locally the property exists and the migration script can be executed. I only have the problem in the test environment so far

Many thanks

That’s strange. Does it do this for existing scripts or also new scripts?

Might be an idea to restore a database from before updating and the retry the update.

Hey @ms2024 ,

the error hints what the issue relates to but without seeing your complete project setup it is hard to identify the cause.

However, there are some notes on this documentation page Run an Updater Script - Bloomreach Experience Manager (PaaS/Self-Hosted) - The Fast and Flexible Headless CMS
and specifically about the property “Log target” and close to the version you upgraded from. Could you have a look if any of them might potentially apply to your case?

Specifically

The Log Target option is only available either when running in local development mode (i.e. using the cargo.run profile) or when the system property groovy.persist.logs.supported is set to true. In all other scenarios, the Log Target option is not available and log messages are written to log files only.

HTH

The problem affects both old and new scripts.

Whenever I run a script locally, the hipposys:logtarget property is automatically added to the YAML file. However, when I deploy a packet with the YAML script file, no changes from the whole package are applied, although no error is displayed.

For the log I first need an account, since it has not been possible to download it as a file since a few weeks

I also restored the environment and tried the update again (with repo.bootstrap=full) but that didn’t help either

Hi,
This is unexpected, on data level the property hipposys:logtarget should be allowed on the underlying node below /hippo:configuration/hippo:update/hippo:registry/ if it is of type hipposys:updaterinfo. Maybe you can double check its primary type.

Also there seems to be no “Log Target” field available in the UI, can you try to set system property groovy.persist.logs.supported=true?
See Run an Updater Script.

HTH
Jeroen

I checked the primary type. It is correct.

I also tried to set the system property groovy.persist.logs.supported=true in the deploy property file. But that didn’t work either.

Thanks

Here is the error message from the test environment log:

20.06.2024 10:25:22 [main] ERROR [org.onehippo.cm.engine.ConfigurationServiceImpl.applyConfig():979] Failed to apply config
org.onehippo.cm.engine.ConfigurationRuntimeException: Failed to process property '/hippo:configuration/hippo:update/hippo:registry/Test Groovy Script/hipposys:logtarget' in path '/hippo:configuration/hippo:update/hippo:registry/Test Groovy Script' defined in [core/xxx/xxx/xxx-repository-data-application [config: configuration/update/registry/testScript.yaml]]: no matching property definition found for {http://www.onehippo.org/jcr/hipposys/nt/1.0}logtarget
	at org.onehippo.cm.engine.ConfigurationConfigService.updateProperty(ConfigurationConfigService.java:980) ~[hippo-repository-engine-15.6.0.jar:15.6.0]
	at org.onehippo.cm.engine.ConfigurationConfigService.computeAndWritePropertiesDelta(ConfigurationConfigService.java:618) ~[hippo-repository-engine-15.6.0.jar:15.6.0]
	at org.onehippo.cm.engine.ConfigurationConfigService.computeAndWriteNodeDelta(ConfigurationConfigService.java:448) ~[hippo-repository-engine-15.6.0.jar:15.6.0]
	at org.onehippo.cm.engine.ConfigurationConfigService.computeAndWriteChildNodesDelta(ConfigurationConfigService.java:705) ~[hippo-repository-engine-15.6.0.jar:15.6.0]
	at org.onehippo.cm.engine.ConfigurationConfigService.computeAndWriteNodeDelta(ConfigurationConfigService.java:451) ~[hippo-repository-engine-15.6.0.jar:15.6.0]
	at org.onehippo.cm.engine.ConfigurationConfigService.computeAndWriteChildNodesDelta(ConfigurationConfigService.java:705) ~[hippo-repository-engine-15.6.0.jar:15.6.0]
	at org.onehippo.cm.engine.ConfigurationConfigService.computeAndWriteNodeDelta(ConfigurationConfigService.java:451) ~[hippo-repository-engine-15.6.0.jar:15.6.0]
	at org.onehippo.cm.engine.ConfigurationConfigService.computeAndWriteChildNodesDelta(ConfigurationConfigService.java:705) ~[hippo-repository-engine-15.6.0.jar:15.6.0]
	at org.onehippo.cm.engine.ConfigurationConfigService.computeAndWriteNodeDelta(ConfigurationConfigService.java:451) ~[hippo-repository-engine-15.6.0.jar:15.6.0]
	at org.onehippo.cm.engine.ConfigurationConfigService.computeAndWriteChildNodesDelta(ConfigurationConfigService.java:705) ~[hippo-repository-engine-15.6.0.jar:15.6.0]
	at org.onehippo.cm.engine.ConfigurationConfigService.computeAndWriteNodeDelta(ConfigurationConfigService.java:451) ~[hippo-repository-engine-15.6.0.jar:15.6.0]
	at org.onehippo.cm.engine.ConfigurationConfigService.computeAndWriteDelta(ConfigurationConfigService.java:322) ~[hippo-repository-engine-15.6.0.jar:15.6.0]
	at org.onehippo.cm.engine.ConfigurationServiceImpl.applyConfig(ConfigurationServiceImpl.java:967) [hippo-repository-engine-15.6.0.jar:15.6.0]
	at org.onehippo.cm.engine.ConfigurationServiceImpl.init(ConfigurationServiceImpl.java:438) [hippo-repository-engine-15.6.0.jar:15.6.0]
	at org.onehippo.cm.engine.ConfigurationServiceImpl.start(ConfigurationServiceImpl.java:207) [hippo-repository-engine-15.6.0.jar:15.6.0]
	at com.onehippo.repository.HippoEnterpriseRepository.initializeConfiguration(HippoEnterpriseRepository.java:180) [hippo-enterprise-repository-engine-15.6.0.jar:15.6.0]
	at org.hippoecm.repository.LocalHippoRepository.initialize(LocalHippoRepository.java:292) [hippo-repository-engine-15.6.0.jar:15.6.0]
	at com.onehippo.repository.HippoEnterpriseRepository.create(HippoEnterpriseRepository.java:65) [hippo-enterprise-repository-engine-15.6.0.jar:15.6.0]
	at com.onehippo.repository.HippoEnterpriseRepository.create(HippoEnterpriseRepository.java:55) [hippo-enterprise-repository-engine-15.6.0.jar:15.6.0]
	at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:?]
	at jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:?]
	at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?]
	at java.lang.reflect.Method.invoke(Method.java:566) ~[?:?]
	at org.hippoecm.repository.HippoRepositoryFactory.getHippoRepository(HippoRepositoryFactory.java:147) [hippo-repository-connector-15.6.0.jar:15.6.0]
	at org.hippoecm.repository.RepositoryServlet.init(RepositoryServlet.java:207) [hippo-repository-servlets-15.6.0.jar:15.6.0]
	at org.apache.catalina.core.StandardWrapper.initServlet(StandardWrapper.java:1106) [catalina.jar:9.0.88]
	at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1063) [catalina.jar:9.0.88]
	at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:960) [catalina.jar:9.0.88]
	at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:4638) [catalina.jar:9.0.88]
	at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:4945) [catalina.jar:9.0.88]
	at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:171) [catalina.jar:9.0.88]
	at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:687) [catalina.jar:9.0.88]
	at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:659) [catalina.jar:9.0.88]
	at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:661) [catalina.jar:9.0.88]
	at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:1014) [catalina.jar:9.0.88]
	at org.apache.catalina.startup.HostConfig$DeployWar.run(HostConfig.java:1866) [catalina.jar:9.0.88]
	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515) [?:?]
	at java.util.concurrent.FutureTask.run(FutureTask.java:264) [?:?]
	at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75) [tomcat-util.jar:9.0.88]
	at java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:118) [?:?]
	at org.apache.catalina.startup.HostConfig.deployWARs(HostConfig.java:816) [catalina.jar:9.0.88]
	at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:468) [catalina.jar:9.0.88]
	at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1584) [catalina.jar:9.0.88]
	at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:312) [catalina.jar:9.0.88]
	at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:114) [catalina.jar:9.0.88]
	at org.apache.catalina.util.LifecycleBase.setStateInternal(LifecycleBase.java:402) [catalina.jar:9.0.88]
	at org.apache.catalina.util.LifecycleBase.setState(LifecycleBase.java:345) [catalina.jar:9.0.88]
	at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:903) [catalina.jar:9.0.88]
	at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:794) [catalina.jar:9.0.88]
	at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:171) [catalina.jar:9.0.88]
	at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1345) [catalina.jar:9.0.88]
	at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1335) [catalina.jar:9.0.88]
	at java.util.concurrent.FutureTask.run(FutureTask.java:264) [?:?]
	at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75) [tomcat-util.jar:9.0.88]
	at java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:140) [?:?]
	at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:876) [catalina.jar:9.0.88]
	at org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:248) [catalina.jar:9.0.88]
	at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:171) [catalina.jar:9.0.88]
	at org.apache.catalina.core.StandardService.startInternal(StandardService.java:470) [catalina.jar:9.0.88]
	at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:171) [catalina.jar:9.0.88]
	at org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:951) [catalina.jar:9.0.88]
	at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:171) [catalina.jar:9.0.88]
	at org.apache.catalina.startup.Catalina.start(Catalina.java:735) [catalina.jar:9.0.88]
	at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:?]
	at jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:?]
	at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?]
	at java.lang.reflect.Method.invoke(Method.java:566) ~[?:?]
	at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:345) [bootstrap.jar:9.0.88]
	at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:473) [bootstrap.jar:9.0.88]
Caused by: javax.jcr.nodetype.ConstraintViolationException: no matching property definition found for {http://www.onehippo.org/jcr/hipposys/nt/1.0}logtarget
	at org.apache.jackrabbit.core.nodetype.EffectiveNodeType.getApplicablePropertyDef(EffectiveNodeType.java:782) ~[jackrabbit-core-2.21.19-h2.jar:2.21.19-h2]
	at org.apache.jackrabbit.core.NodeImpl.getApplicablePropertyDefinition(NodeImpl.java:852) ~[jackrabbit-core-2.21.19-h2.jar:15.6.0]
	at org.apache.jackrabbit.core.NodeImpl.getOrCreateProperty(NodeImpl.java:437) ~[jackrabbit-core-2.21.19-h2.jar:15.6.0]
	at org.apache.jackrabbit.core.NodeImpl$SetPropertyOperation.perform(NodeImpl.java:2056) ~[jackrabbit-core-2.21.19-h2.jar:15.6.0]
	at org.apache.jackrabbit.core.NodeImpl$SetPropertyOperation.perform(NodeImpl.java:2002) ~[jackrabbit-core-2.21.19-h2.jar:15.6.0]
	at org.apache.jackrabbit.core.session.SessionState.perform(SessionState.java:216) ~[jackrabbit-core-2.21.19-h2.jar:2.21.19-h2]
	at org.apache.jackrabbit.core.NodeImpl.setProperty(NodeImpl.java:1924) ~[jackrabbit-core-2.21.19-h2.jar:15.6.0]
	at org.hippoecm.repository.impl.NodeDecorator.setProperty(NodeDecorator.java:94) ~[hippo-repository-engine-15.6.0.jar:15.6.0]
	at org.hippoecm.repository.impl.NodeDecorator.setProperty(NodeDecorator.java:54) ~[hippo-repository-engine-15.6.0.jar:15.6.0]
	at org.onehippo.cm.engine.ConfigurationConfigService.updateProperty(ConfigurationConfigService.java:973) ~[hippo-repository-engine-15.6.0.jar:15.6.0]
	... 68 more

To limit the problem, I have now resets the test environment and only updated from 14.7.3 to 14.7.20, but the problem still occurs.

If I deploy without -Drepo.bootstrap=true, the environment is deployed to 14.7.20 and I can run the migration scripts.

But instead of the Logs I only see “Logs are stored in normal log files for logger 'org.onehippo.repository.update.UpdaterExecutionReport' and not visible here”.

Where can I find the logs now?
And is the update problem solved or do I need -Drepo.bootstrap=true when updating?

It looks a bit like that during bootstrapping, the cnd change is processed, or useable at least, later than the bootstrapping of the yaml that has hipposys:logtarget in it.

Maybe you can retry after having removed that property from your yamls?

If that doesn’t help, you’re advised to create a support ticket so this case can get some dedication it appears to need.

HTH
Jeroen

Thank you for the answers.

I have now been able to solve the problem together with the support.

  • The logs are in the CMS logs. However, I had to expand the log4j2-dist.xml file first.
  • The problem itself was solved by redeploying (redeploy strategy: stop start, bootstrap activated)

Ah lovely, indeed stop start makes sense. Thanks for reporting back :+1: