HBCI-Konfiguration plötzlich verschwunden

 
hibiscus
Benutzer
Avatar
Geschlecht: keine Angabe
Herkunft: Leipzig
Homepage: willuhn.de/
Beiträge: 10843
Dabei seit: 03 / 2005
Betreff:

Re: HBCI-Konfiguration plötzlich verschwunden

 · 
Gepostet: 07.09.2012 - 12:18 Uhr  ·  #21
Zitat geschrieben von maf-soft
Ich wäre dafür, dass du das änderst, und zwar so, dass ein Abort/Retry Dialog kommt, mit Hinweisen, was passiert ist, und warum, und was passiert, wenn man Abort klickt.


Da kann kein Dialog kommen. Der Code stammt nicht aus Hibiscus sondern aus der von Hibiscus verwendeten HBCI-Protokoll-Implementierung "HBCI4Java" von Stefan Palme (http://hbci4java.kapott.org). Da kann ich keinen Dialog mit Abort/Retry anbieten.

Was man machen koennte, waere in dem Fall eine Exception zu werfen. Das aendert aber am Ergebnis nichts. Naemlich dass die PIN/TAN-Config kaputt/ungueltig ist. Und ich wuesste auch nicht, wie ich in Hibiscus auf so einen Schreibfehler sinnvoll reagieren soll ausser die Fehlermeldung durchzureichen. Es aendert nichts an der Ursache: Dass das OS oder der Datentraeger beim Schreiben von Daten Mist gebaut hat. Wuerde ich versuchen, so ein Fehler-Szenario sinnvoll mit Retry-Moeglichkeeit zu behandeln, dann muesste man das an 100 anderen Stellen, wo ebenfalls Daten geschrieben werden, ebenfalls machen. Ich kann doch nicht um jede Datei-Operation eine Retry-Schleife bauen.
maf-soft
Benutzer
Avatar
Geschlecht:
Beiträge: 158
Dabei seit: 11 / 2010
Betreff:

Re: HBCI-Konfiguration plötzlich verschwunden

 · 
Gepostet: 07.09.2012 - 12:39 Uhr  ·  #22
Zitat geschrieben von hibiscus
Da kann kein Dialog kommen. Der Code stammt nicht aus Hibiscus sondern aus der von Hibiscus verwendeten HBCI-Protokoll-Implementierung "HBCI4Java" von Stefan Palme (http://hbci4java.kapott.org). Da kann ich keinen Dialog mit Abort/Retry anbieten.

Dann nehme ich an, dass Stefan Palme einfach gedacht hat, diese Operationen würden Exceptions werfen:
passportfile.delete();
tempfile.renameTo(passportfile);
} catch

Wenn du es nicht selbst machen willst, schreibe ich ihm gerne.

Zitat
Wuerde ich versuchen, so ein Fehler-Szenario sinnvoll mit Retry-Moeglichkeeit zu behandeln, dann muesste man das an 100 anderen Stellen, wo ebenfalls Daten geschrieben werden, ebenfalls machen. Ich kann doch nicht um jede Datei-Operation eine Retry-Schleife bauen.
Klar kannst du. Ich würde genau das tun, wenn es mein Projekt wäre. Insbesondere .delete und .renameTo könnte man wunderbar irgendwo zentral kapseln und müsste dann an den 101 Stellen nur eine einfache Ersetzung machen.

Den Fehler einfach zu ignorieren und sogar ohne jede Log-Meldung mit einem ungültigen Zustand weiterzumachen, ist auf jeden Fall kein Zustand. Und in einer normalen Benutzerapplikation wäre ein Retry genau richtig. Sicherlich könnte man es noch weiter treiben und z.B. erstmal eine halbe Sekunde warten und es ohne Benutzerinteraktion nochmal versuchen...
hibiscus
Benutzer
Avatar
Geschlecht: keine Angabe
Herkunft: Leipzig
Homepage: willuhn.de/
Beiträge: 10843
Dabei seit: 03 / 2005
Betreff:

Re: HBCI-Konfiguration plötzlich verschwunden

 · 
Gepostet: 07.09.2012 - 12:58 Uhr  ·  #23
Zitat geschrieben von maf-soft
Dann nehme ich an, dass Stefan Palme einfach gedacht hat, diese Operationen würden Exceptions werfen:
passportfile.delete();
tempfile.renameTo(passportfile);
} catch

Wenn du es nicht selbst machen willst, schreibe ich ihm gerne.


Kannst du gern machen. Wie gesagt: Den Return-Wert der Funktionen kann man natuerlich pruefen und bei False eine Exception werfen. Mehr geht aber nicht. HBCI4Java ist keine GUI-Anwendung.

Das aendert aber wie gesagt nichts an der Ursache des Problems. Naemlich dass die Datei nicht geloescht werden kann. Du wuerdest eher eine Loesung finden, wenn du nach DIESER Ursache suchst. Stattdessen hast du dich jetzt auf die BEHANDLUNG des Fehlers eingeschossen.

Zitat
Klar kannst du. Ich würde genau das tun, wenn es mein Projekt wäre. Insbesondere .delete und .renameTo könnte man wunderbar irgendwo zentral kapseln und müsste dann an den 101 Stellen nur eine einfache Ersetzung machen.


Na dann. Der Source ist offen. Du kannst dich gern daran betun, alle Stellen zu isolieren und das entsprechend umbauen.

Jetzt mal im Ernst: Wenn ich im Programmcode nicht mal darauf vertrauen kann, dass das Filesystem funktioniert, dann kann man auch einen Retry-Loop um jede Schreib-Operation bauen. Das macht niemand. Wenn ein Schreib-Vorgang nicht funktioniert, kommt ein Fehler. Ohne Retry. Sowas kann man vielleicht bei nem File-Upload bauen. Aber doch nicht bei jeder IO-Operation.

Zitat
Den Fehler einfach zu ignorieren und sogar ohne jede Log-Meldung mit einem ungültigen Zustand weiterzumachen, ist auf jeden Fall kein Zustand.


Deswegen schrieb ich ja: Ich kann das so aendern, dass in dem Fall eine Exception geworfen wird. Das aendert aber nichts an deinem Problem. Naemlich dass deine PIN/TAN-Config kaputt geht, weil dein Dateisystem sich "irgendwie merkwuerdig" verhaelt. Mir ist bisher auch kein anderer Fall bekannt, bei dem der bisherige Code ein solches Problem darstellt. Wenn bei Usern mit Windows dieser Fehler mal auftrat, dann liess sich das bisher immer durch Pruefen und Anpassen der Berechtigungen auf dem Ordner/den Dateien loesen.

Zitat
Und in einer normalen Benutzerapplikation wäre ein Retry genau richtig. Sicherlich könnte man es noch weiter treiben und z.B. erstmal eine halbe Sekunde warten und es ohne Benutzerinteraktion nochmal versuchen...


Zeig mir eine Anwendung, die sowas macht.
maf-soft
Benutzer
Avatar
Geschlecht:
Beiträge: 158
Dabei seit: 11 / 2010
Betreff:

Re: HBCI-Konfiguration plötzlich verschwunden

 · 
Gepostet: 17.12.2012 - 11:56 Uhr  ·  #24
Ich bin leider immer noch nicht dahinter gekommen, warum diese Dateioperationen bei mir fehlschlagen.

Es passiert alle paar Tage, dass das Löschen der Originaldatei fehlschlägt und sich somit nach und nach immer mehr Tempdateien in dem Ordner ansammeln, die nicht umbenannt werden konnten, weil die Originaldatei noch existierte. Somit gehen Änderungen an diesen Dateien verloren. Davon bekomme ich nichts mit. Oder liegt es daran, dass ab und zu plötzlich doch wieder nach den PINs gefragt wird, obwohl ich sie eigentlich speichern lasse?

Sehr viel seltener, z.B. gerade eben wieder, klappt nur das Löschen, aber das Umbenennen nicht, so dass anschließend die Datei fehlt. Das merke ich dann, beende Hibiscus, benenne die Temp-Datei um, und es geht wieder.

Ich arbeite den ganzen Tag und sehr viel mit diesem Rechner und habe in keinen anderen Programmen irgendwelche Dateiprobleme. Ich verstehe das nicht.
Gewählte Zitate für Mehrfachzitierung:   0