Datenimport: Falsche Verlinkung beim Abbruch-Button

**Hallo ich habe den oben beschriebenen Fehler ausgemacht und konnte Ihn mit Hilfe von KI beheben - deshalb alle Angaben ohne Gewähr - aber bei mir hat es funktioniert:

(ein Neustart behebt den Fehler nicht, weil eine Datei gelöscht/umbenannt werden muss):

A. Falsche Verlinkung beim Abbruch-Button (UI-Bug)**

  • Symptom: Im Portal wird dem Benutzer unter „Datenimport (Nextcloud)“ ein Abbrechen-Button angezeigt. Beim Klick auf diesen Button passiert jedoch nichts bzw. der Import-Status wird nicht aufgehoben.

  • Ursache: Im HTML-Template data_import.html ist die falsche URL hinterlegt.

    • Datei: /usr/lib/libre-workspace/portal/unix/templates/unix/data_import.html

    • Fehlerhafter Code:

      HTML

      <a href="{% url "abort_current_data_export" %}">{% translate "Cancel" %}</a>
      
      
    • Problem: Der Abbruch-Button des Imports ruft fälschlicherweise die Routine zum Abbrechen des Exports (abort_current_data_export) auf. Da kein Export läuft, schlägt der Vorgang ins Leere fehl.

B. Hängender Status bei Abbruch/Fehler (Logik-Problem)

  • Symptom: Wenn der Import-Prozess unerwartet beendet wird oder abstürzt, bleibt das Interface dauerhaft im Zustand „Der Datenimport läuft derzeit…“ gesperrt.

  • Ursache: Der Status wird über die Existenz einer Flag-Datei geprüft (os.path.isfile(...)).

    • Datei: /usr/lib/libre-workspace/portal/unix/unix_scripts/unix.py

    • Funktion:

      Python

      def nextcloud_import_process_running():
          return os.path.isfile("nextcloud_import_process_running")
      
      
    • Problem: Die Datei nextcloud_import_process_running wird beim Start des Shell-Skripts import_folder_to_nextcloud_user.sh per touch erstellt und erst am Ende per rm gelöscht. Wenn der Prozess vorzeitig endet oder der Abbruch-Link den falschen Endpunkt anspricht, wird diese Datei nie entfernt und sperrt die UI dauerhaft.

2. Behebung und Empfehlung zur Lösung

Kurzfristige Behebung (Workaround)

Die Blockade im System konnte manuell aufgehoben werden, indem die Flag-Datei auf dem Server entfernt bzw. umbenannt wurde:

Ich persönlich habe die Datei umbenannt:

# Datei löschen
rm /usr/lib/libre-workspace/portal/unix/unix_scripts/nextcloud_import_process_running

# Datei umbenannt
sudo mv /usr/lib/libre-workspace/portal/unix/unix_scripts/nextcloud_import_process_running /usr/lib/libre-workspace/portal/unix/unix_scripts/nextcloud_import_process_running.bak

Der Datenimport war augenblicklich wieder normal erreichbar.

Empfohlene dauerhafte Lösung für den Support/Entwickler

  1. Korrektur des Templates (data_import.html): Den Link im Template auf die korrekte Import-Abbruch-URL anpassen:

    <a href="{% url "abort_current_data_import" %}">{% translate "Cancel" %}</a>
    
    
  2. Robusteres Error-Handling im Skript / Python-Backend:

    • Es sollte sichergestellt werden, dass die Flag-Datei auch bei einem Fehler (z. B. via trap im Bash-Skript oder try...finally in Python) verlässlich aufgeräumt wird.

    • Alternativ sollte geprüft werden, ob der zugehörige Prozess mit der verknüpften PID tatsächlich noch im System läuft, statt sich rein auf die Existenz der Datei zu verlassen.

Grüße
Linux-Mint-Franky

1 Like