Hallo,
erst einmal allen Entwicklern meinen herzlichen Dank! Ich bin seit ca. 2 Wochen begeisteter FHEM Einsteiger.
Ich hatte heute ein Problem mit FHEM, das vielleicht nicht sehr häufig auftaucht:
Na dem Speichern über das Webfrontend war die fhem.cfg 0 Bytes groß (zum Glück hatte ich Backups). Es hat einen Augenblick gedauert, bis ich kappiert habe, dass die SD-Card meines Raspberries komplett voll war.
Eine Abfrage vor dem Speichern der fhem.cfg, ob noch genügend Speicherplatz frei ist und andernfalls eine Fehlermeldung auszugeben (am besten die fhem.cfg nochmal im Klartext unten drunter - dann kann man sie auch in schlimmeren Fällen ggf. via Copy & Paste retten), könnte vor unangenehmen Überraschungen schützen.
Viele Grüße,
Christian
Habe die Rueckgabewerte abgefragt und gemeldet und mit "limit filesize" getestet, scheint zu funktionieren.
Ab morgen per update.
Ich bin eigentlich dagegen, an dieser Stelle etwas zu ändern.
Zitat von: pirmanji am 26 September 2014, 17:20:48
Eine Abfrage vor dem Speichern der fhem.cfg, ob noch genügend Speicherplatz frei ist
Und wie frage ich vor dem Speichern ab, ob in den nächsten drei Sekunden nicht der Strom ausfällt?
Hey - das Vollwerden eines Speichermediums sollte man über das Betriebssystems abfangen und entsprechend reagieren (z.B. eine Mail an root verschicken, wenn der freie Speicherplatz unter 5% fällt) und die Speicherplatzverwaltung ausserhalb von fhem sollte auch ausserhalb von fhem bleiben.
Man kann aber die Rueckgabewerte von close auswerten und als Fehlermeldung zurueckliefern.
Wenn man die Meldung sieht, dann kann man in ruhe Speicher freigeben, und dann nochmal auf Save druecken.
Ich möchte an dieser Stelle ausdrücklich darauf hinweisen, dass Du nun an dieser Stelle wieder eine Ungleichbehandlung zwischen fhem.cfg und configDB einführst, die Du selbst ja immer gerne vermieden haben wolltest. Denn für configDB Anwender funktioniert Deine Prüfung nicht.
Achso: Wo prüfst Du eigentlich, ob der Fehler nicht schon beim WriteStatefile auftritt, bevor es überhaupt zum Wegschreiben der Konfiguration selbst kommt?
Ich kann keine Ungleichbehandlung erkennen, CommandSave liefert etwaige Fehlermeldungen von cfgDB_SaveCfg zurueck.
WriteStateFile: Danke fuer den Hinweis, der Rueckgabewert wurde bisher in CommandSave ignoriert, habs aber jetzt auch geaendert. Fuer WriteStateFile muss cfgDB_SaveState eine Fehlermeldung zurueckliefern, sie wird ab sofort auch ausgewertet, bisher wurde sie leider auch explizit ignoriert.