bIT_sosswald
Returning Responder

Generierung verhält sich anders als Vorschau zeitgesteuerte Generierung von Datensätzen

Jump to solution

Hallo liebe Crownpeak-Community,

ich habe gerade ein sehr seltsames Verhalten (evtl. Bug) in unseren Projekten, bei dem sich das Verhalten in der Vorschau von dem im generierten Zustand unterscheidet. (Getestet in der Crownpeak Cloud.)

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

 

Hintergrund:

Der Kunde hat 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. (rot) Nach Änderung im Projekt und erneutem Deployment ist der betroffene Datensatz verschwunden. (Grün) Der betroffene Datensatz selbst hat sich aber nicht geändert. (Siehe Revisionshistorie)

 

 

2023-03-17_10h54_09.png2023-03-17_14h42_14.pngUnbenannt.png

 

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 Hauch 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
1 Solution

Accepted Solutions
2 Replies
mbergmann
Crownpeak employee
rmx
Returning Observer

Hallo @bIT_sosswald,

es freut mich zu lösen, welch komplizierte Anforderungen Du mit Deinen Kunden umsetzt  🙂 Ich hatte aktuell auch ein Problem mit der zeitgesteuerten Publizierung. Ohne so aufwendigen Randbedingungen wie Du. Der Hinweis auf den Community Beitrag von zweitausendelf (2011) von @mbergmann hat unser Problem auch gelöst. Soweit so prima! Danke!

Ich kämpfe allerdings noch mit meiner Erschütterung, warum ich für eine Bordfunktion von FirstSpirit einen Community Beitrag lesen muss und danach ein Skript in meine Publikationsaufträge integrieren muss. Wäre nicht in den letzten 12 Jahren genug Zeit gewesen diesen Wahnsinn in FS zu integrieren?
Liebe Grüße aus der Erschütterung, 

Roman

0 Kudos