Hängender Import/Export Task zurücksetzen

Hallo zusammen,

ich habe ein Problem mit dem Import/Export Module. Hier hat sich wohl der Task aufgehangen und im Adminbereich erscheint seit geraumer Zeit die Mitteilung:

grafik

Folgende Schritte habe ich bereits erfolglos versucht:

  • Admin Worker ist deaktiviert, CLI Worker ist über Cronjob eingerichtet
  • In der Tabelle scheduled_task war ein Task namens „product_export_generate_task“ auf queued. Diese habe ich wieder auf scheduled gesetzt.
  • In den Tabellen enqueue, dead_message und message_queue_stats sind keine Einträge vorhanden

Jemand eine Idee wie ich den Task wieder zurücksetzen kann?

Danke und Grüße.

Was für einen Status hat der Task denn im Import/Export?

Schau mal in der Tabelle „increment“ und such nach dem key „ImportExport@sw.import.export.index“. Wenn ich richtig liege, ist der Wert (key kann unter Umständen mehrfach vorhanden sein) > 0. Tabelle backuppen (just in case) und Wert auf 0 setzen sollte Dein Problem beheben. Die Werte in dieser Tabelle werden scheinbar nicht immer richtig gesetzt, wenn vorher irgendeine Störung beim Basisprozess eintrat.

1 „Gefällt mir“

zusätzlich kannst Du nochmal nach einem Eintrag mit cluster „message_queue_stats“ und key „Shopware\Core\Content\ImportExport\Message\ImportExportMessage“ suchen. Ggf. steht hier count auch > 0

1 „Gefällt mir“

Ich hab zwar nicht verstanden was ich da mache, aber es hat hervorragend funktioniert!

Es gab zwei mal den key „ImportExport@sw.import.export.index“ mit Wert < 0. Diese habe ich auf den Wert 0 gesetzt und einmal den Key „Shopware\Core\Content\ImportExport\Message\ImportExportMessage“, welcher zuvor den Wert 1 hatte, auf 0 gesetzt.

Jetzt würde ich ja nur noch gern verstehen, was ich dort eigentlich angepasst habe.

Du hast dem Nachrichtensystem mitgeteilt, dass alles erledigt ist :wink: Der eigentliche Prozess, z.B. der Indexer, und die Messages laufen getrennt. Der Prozess schreibt, wenn er läuft, regelmäßig in die Tabelle dass er läuft und an welcher Stelle er gerade ist bzw. was noch zu erledigen ist. Wenn der Basisprozess, aus welchen Gründen auch immer, abbricht und danach nicht wieder gestartet wird, bleibt der Status in der Tabelle unverändert und Du bekommst immer die Meldungen. Wenn Du Dich im Backend bewegst fragt ein JS asynchron immer den Status ab und präsentiert ihn dir ggf als Message, auch wenn Du den Basisprozess gar nicht mehr am Laufen hast. Thats it.