bIT_sosswald
Returning Responder

Generierung verhält sich anders als Vorschau (Zeitgesteuerte Generierung bei Datensätzen)

Hallo liebe Crownpeak-Community,

 

ich habe gerade ein sehr seltsames Verhalten (evtl. Bug) in einem unserer Projekte, bei dem sich das Verhalten in der Vorschau von dem im generierten Zustand unterscheidet. (In der Crownpeak-Cloud)

Der Sachverhalt ist etwas komplexer, aber ich versuche ihn bestmöglich zu erklären.

 

Hintergrund:

Im Projekt gibt es Inhalte die zeitgesteuert veröffentlicht bzw. wieder offline genommen werden sollen. Also ein klassisches „Gültig von – bis“ Szenario.
Die betroffenen Inhalte befinden sich all in Datenquellen (News, Pressemeldungen, Stellenanzeigen, usw.)

Da sich die betroffenen Inhalte in Datenquellen befinden bilde ich die Prüfung, ob sie gültig sind über Queries für Übersichts- und Detailseiten von Contentprojektionen.

 

Problem:

In der Vorschau funktioniert das zeitgesteuerte Ausspielen von Inhalten problemlos. Inhalte werden am Tag nach Ablauf ihres Gültigkeitszeitraums nicht mehr angezeigt.
Auch im SiteArchitect / ContentCreator werden die Datensätze in entsprechend gefilterten Datenquellen (Datensätze im Gültigkeitszeitraum bzw. Datensätze nicht im Gültigkeitszeitraum) korrekt angezeigt.

In der Generierung hingegen sind die entsprechenden Datensätze sowohl auf den Übersichts- als auch auf den Detailseiten noch vorhanden.

Anbei einige Screenshots vom FTP-Server auf die FirstSpirit die Daten deployed. Zu sehen ist, dass Detailseiten an einem Tag generiert und deployed wurden, an dem sie eigentlich nicht mehr gültig sind.

Fehlerhaft-Alte Datei noch vorhandenFehlerhaft-Alte Datei noch vorhandenKorrekt-Alte Datei nicht mehr vorhandenKorrekt-Alte Datei nicht mehr vorhandenVersionshistorie - Keine Änderung am DatensatzVersionshistorie - Keine Änderung am Datensatz

Nach allem, was ich bisher über mehrere Tage testen glaube herausgefunden zu haben, werden die Datensätze in der Generierung erst dann korrekt generiert, wenn sich an einem Datensatz (dies kann auch ein anderer als der betroffene sein) etwas geändert hat. Evtl. auch wenn ich im gesamten Projekt etwas geändert hat. – Mein einziger Verdacht geht daher gerade in die Richtung, dass Problem mit den Projektrevisionen / Datenbankrevisionen zu tun hat.

 

Umsetzung:

Die Filterung der Datensätze basiert prinzipiell immer auf einer gleichförmigen Query:

 

 

 

 

<OR>

                <LTE attribute="tt_valid_from_date" datatype="de.espirit.common.Today" value="1679007600000"/>

                <IS_NULL attribute="tt_valid_from_date"/>

                <LTE attribute="tt_valid_from_date" datatype="de.espirit.common.Today" value="1679007600000"/>

                <IS_NULL attribute="tt_valid_from_date"/>

</OR>

<OR>

                <GTE attribute="tt_valid_to_date" datatype="de.espirit.common.Today" value="1679007600000"/>

                <IS_NULL attribute="tt_valid_to_date"/>

                <IS_NULL attribute="tt_valid_to_date"/>

                <GTE attribute="tt_valid_to_date" datatype="de.espirit.common.Today" value="1679007600000"/>

</OR>

 

 

 

 

 

Today stellt den Tag der Generierung um 0 Uhr dar, was der Wert ist, auf den ich prüfen möchte.

 

Eigene Lösungsansätze:

Umstellen der betroffenen Datenbankfelder von Date auf Long um UTC-Probleme mit der Serverzeit zu verhindern. Im ersten Stand der Implementierung waren die verwendeten Datenbankfelder vom Typ Date. Dies hat aber zu Problemen mit UTC geführt. Daher habe ich alle Felder auf Long umgestellt und die Daten entsprechend migriert.

Verschiebung der automatischen Deployments von nachts um 1 auf morgens um 5/6 Uhr um mögliche Sommer-/Winterzeitprobleme zu umgehen. Aber auch bei manuellen Deployments Tagsüber werden die Daten falsch generiert.

 

Habt ihr auch nur den Ansatz einer Idee, was die Ursache für das Problem sein könnte? Ich bin aktuell ratlos. (Oder übersehe einen absolut banalen Fehler.)

 

Beste Grüße
Sandro

0 Kudos
0 Replies