Fehlerbehebung
Mit #25881 fiel eine Annotation weg, die an der Tabellendefinition von Legacy-Typen Modellanotationen setzten konnte "model-annotations". Allerdings wurde versäumt entsprechende Konfigurationen, die in der Base-Line der Datenbankdefinition gesetzt sind, zu entfernen. Stattdessen wurde die komplette Model-Base-Line zurückgesetzt. Das hat zur Folge, dass eine Anwendung mit neuem Softwarestand und alter Datenversion nicht mehr bootet und eine Anwendung, die zusammen mit dem Update eigene (automatische) Modell-Migrationen ausführen will dies nicht kann.
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 der Datenbankdefinition stehen Konstrukte wie folgt:
<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" /> ...
Daten-Migration
Die Datenmigration findet automatisch beim nächsten Booten der Anwendung mit der neuen Software-Version statt.
Test
- Anwendung mit einem 7.4 Datenbestand aufsetzen und danch mit einem 7.5 Softwarestand booten.
- Test realisiert in #26798