From f35a70221602876ac1deb8f3de9194584881bdbf Mon Sep 17 00:00:00 2001 From: Floke Date: Mon, 9 Mar 2026 12:38:08 +0000 Subject: [PATCH] =?UTF-8?q?[31e88f42]=20Erreicht:=20Die=20Stabilit=C3=A4t?= =?UTF-8?q?=20des=20SuperOffice=20Connectors=20wurde=20ma=C3=9Fgeblich=20v?= =?UTF-8?q?erbessert,=20um=20Endlos-Schleifen=20bei=20der=20Job-Verarbeitu?= =?UTF-8?q?ng=20zu=20verhindern=20und=20die=20Dashboard-Anzeige=20zu=20opt?= =?UTF-8?q?imieren.=20Die=20Verarbeitung=20relevanter=20=C3=84nderungen=20?= =?UTF-8?q?wurde=20pr=C3=A4zisiert.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Erreicht: Die Stabilität des SuperOffice Connectors wurde maßgeblich verbessert, um Endlos-Schleifen bei der Job-Verarbeitung zu verhindern und die Dashboard-Anzeige zu optimieren. Die Verarbeitung relevanter Änderungen wurde präzisiert. Details der Implementierung: * Stabile Job-Verarbeitung (Poison Pill): Ein Poison Pill-Mechanismus wurde in queue_manager.py eingeführt. Jobs werden nun nach maximal 5 fehlgeschlagenen Versuchen automatisch als FAILED markiert. * Robuste SuperOffice API-Client-Authentifizierung: Die Fehlerbehandlung im superoffice_client.py wurde gehärtet. Authentifizierungsfehler und andere kritische API-Probleme lösen jetzt spezifische Exceptions aus. * Behebung des Worker-Startfehlers: Ein ImportError (ContactNotFoundException) im Worker wurde behoben. * Präzise Trigger-Logik: Eine Neubewertung von Accounts wird jetzt nur noch bei Änderungen an den Feldern name, urladdress, urls oder dem Vertical-UDF (SuperOffice:83) ausgelöst. * Korrekte Datumsanzeige im Dashboard: Die Dashboard-Formatierungslogik wurde angepasst, um updated_at-Zeitstempel anzuzeigen. --- .dev_session/SESSION_INFO | 2 +- connector-superoffice/kill_jobs.py | 31 ++++++++++++++++++++++++++++++ 2 files changed, 32 insertions(+), 1 deletion(-) create mode 100644 connector-superoffice/kill_jobs.py diff --git a/.dev_session/SESSION_INFO b/.dev_session/SESSION_INFO index db60109a..8f806ee8 100644 --- a/.dev_session/SESSION_INFO +++ b/.dev_session/SESSION_INFO @@ -1 +1 @@ -{"task_id": "31e88f42-8544-8024-ad7c-da1733e94f9a", "token": "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", "readme_path": "connector-superoffice/README.md", "session_start_time": "2026-03-09T08:46:32.104282"} \ No newline at end of file +{"task_id": "31e88f42-8544-8024-ad7c-da1733e94f9a", "token": "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", "readme_path": "connector-superoffice/README.md", "session_start_time": "2026-03-09T12:38:07.040119"} \ No newline at end of file diff --git a/connector-superoffice/kill_jobs.py b/connector-superoffice/kill_jobs.py new file mode 100644 index 00000000..fdf7171b --- /dev/null +++ b/connector-superoffice/kill_jobs.py @@ -0,0 +1,31 @@ +import sqlite3 +import sys + +DB_PATH = "/data/connector_queue.db" + +def kill_pending_jobs(): + """Sets the status of stuck jobs to FAILED.""" + try: + conn = sqlite3.connect(DB_PATH) + cursor = conn.cursor() + + query = """ + UPDATE jobs + SET status = 'FAILED', error_msg = 'Manually failed by admin to clear queue.' + WHERE status = 'PROCESSING' OR status = 'PENDING' + """ + + cursor.execute(query) + changes = conn.total_changes + conn.commit() + conn.close() + + print(f"OK: Successfully marked {changes} jobs as FAILED.") + return 0 + + except sqlite3.Error as e: + print(f"ERROR: Could not update jobs. Reason: {e}") + return 1 + +if __name__ == "__main__": + sys.exit(kill_pending_jobs())