Enhancement
Major
Detail
Major
Detail
Bugfix
With #25881 an annotation that could set model annotations at the table definition of legacy types "model-annotations" was dropped. However, corresponding configurations set in the base line of the database definition were not removed. Instead, the entire model-base-line was reset. As a result, an application with a new software version and an old data version will no longer boot and an application that wants to perform its own (automatic) model migrations together with the update will not be able to do so.
Caused by: com.top_logic.basic.config.ConfigurationException: List entry elements '[key-attributes, annotation]' expected, but got 'model-annotations' for property 'annotations' (com.top_logic.dob.schema.config.MetaObjectConfig.getAnnotations()) at [no name] line 920 column 28. at com.top_logic.basic.config.ConfigurationReader$Handler.getElementDescriptor(ConfigurationReader.java:1116) at com.top_logic.basic.config.ConfigurationReader$Handler.readElementDescriptor(ConfigurationReader.java:1053) at com.top_logic.basic.config.ConfigurationReader$Handler.readListEntry(ConfigurationReader.java:859) at com.top_logic.basic.config.ConfigurationReader$Handler.handleCollection(ConfigurationReader.java:727) at com.top_logic.basic.config.ConfigurationReader$Handler.readElementValue(ConfigurationReader.java:664) at com.top_logic.basic.config.ConfigurationReader$Handler.readContents(ConfigurationReader.java:522) at com.top_logic.basic.config.ConfigurationReader$Handler.readNextElement(ConfigurationReader.java:205) at com.top_logic.basic.config.ConfigurationReader$Handler.readConfigurationItem(ConfigurationReader.java:1317) at com.top_logic.basic.config.ConfigurationReader$Handler.handleMapAdd(ConfigurationReader.java:1156) at com.top_logic.basic.config.ConfigurationReader$Handler.readMapEntry(ConfigurationReader.java:802) at com.top_logic.basic.config.ConfigurationReader$Handler.readContents(ConfigurationReader.java:503) at com.top_logic.basic.config.ConfigurationReader$Handler.readNextElement(ConfigurationReader.java:205) at com.top_logic.basic.config.ConfigurationReader$Handler.readConfigurationItem(ConfigurationReader.java:1317) at com.top_logic.basic.config.ConfigurationReader$Handler.readItemConfig(ConfigurationReader.java:1086) at com.top_logic.basic.config.ConfigurationReader$Handler.readItemConfig(ConfigurationReader.java:752) at com.top_logic.basic.config.ConfigurationReader$Handler.readElementValue(ConfigurationReader.java:654) at com.top_logic.basic.config.ConfigurationReader$Handler.readContents(ConfigurationReader.java:522) at com.top_logic.basic.config.ConfigurationReader$Handler.readNextElement(ConfigurationReader.java:205) at com.top_logic.basic.config.ConfigurationReader$Handler.readConfigurationItem(ConfigurationReader.java:1317) at com.top_logic.basic.config.ConfigurationReader$Handler.parseContents(ConfigurationReader.java:167) at com.top_logic.basic.config.ConfigurationReader$Handler.parse(ConfigurationReader.java:112) at com.top_logic.basic.config.ConfigurationReader.parseAndClose(ConfigurationReader.java:2097) at com.top_logic.basic.config.ConfigurationReader.readInternal(ConfigurationReader.java:2077) at com.top_logic.basic.config.ConfigurationReader.readInternal(ConfigurationReader.java:2060) at com.top_logic.basic.config.ConfigurationReader.read(ConfigurationReader.java:2043) at com.top_logic.basic.config.ConfigurationReader.read(ConfigurationReader.java:2005) at com.top_logic.basic.config.TypedConfiguration.readConfig(TypedConfiguration.java:723) at com.top_logic.basic.config.TypedConfiguration.parse(TypedConfiguration.java:679) at com.top_logic.basic.config.TypedConfiguration.parse(TypedConfiguration.java:655) at com.top_logic.basic.config.TypedConfiguration.fromString(TypedConfiguration.java:634) at com.top_logic.knowledge.service.db2.KBSchemaUtil.parseSchema(KBSchemaUtil.java:99) at com.top_logic.knowledge.service.db2.KBSchemaUtil.loadSchema(KBSchemaUtil.java:72) ... 50 more
In the database definition, constructs are as follows:
<metaobject db_name="PERSON" object_name="Person" object_type="MOKnowledgeObject" super_class="KnowledgeObject" > <annotations> <annotation config:interface="com.top_logic.knowledge.service.xml.annotation.ImplementationBindingAnnotation"> <binding application-type="com.top_logic.knowledge.wrap.person.Person"/> </annotation> <model-annotations> <main-properties properties="_self,name,locale"/> </model-annotations> </annotations> <mo_attribute att_name="name" att_type="String" mandatory="true" /> ...
Data migration
Data migration takes place automatically the next time the application is booted with the new software version.
Test
- Set up the application with a 7.4 dataset and boot it with a 7.5 software version.
- Test realized in #26798