Verbesserung
Top-Thema
Detail
Wichtig
Detail
Top-Thema
#25842
TL-Sync löscht zufällige Objekte, wenn es die eigentlich zu löschenden nicht findet
TL-Sync überträgt serialisierte tl:KnowledgeBase [tl:ChangeSet|ChangeSets]. Um die Objekte systemübergreifend zu identifizieren, wird zusätzlich deren tl:ExtID mit in die [tl:ItemEvent|ItemEvents] des [tl:ChangeSet|ChangeSets] geschrieben. Die interne tl:TLID (ItemEvent.objectId) wird aber nicht extra aus dem tl:ItemEvent entfernt. Statt dessen wird diese beim Empfang nach dem Auflösen der tl:ExtID ersetzt. Kann die tl:ExtID nicht aufgelöst werden, wird die tl:TLID aber nicht ersetzt. Dann wird auf dem empfangenden System das Objekt gelöscht, welches die gleiche tl:TLID hat, wie das zu löschende Objekt auf dem sendenden System, also ein zufälliges.
Lösung
Es wird ermittelt welche tl:ExtIDs nicht aufgelöst werden konnten. Die dazugehören Änderungen werden aus dem Changeset entfernt: Löschungen und Updates werden komplett entfernt. Referenzen auf diese Objekte werden aus dem Changeset entfernt, wobei andere Attribut-Updates erhalten bleiben.
Test
test.com.top_logic.kafka.services.TestTLSyncReceiveMissingExtReference