[gelöst] Datenverlust: fhem.cfg wird bei "Cannot load module" überschrieben

Begonnen von Schlimbo, 30 Oktober 2017, 23:43:25

Vorheriges Thema - Nächstes Thema

betateilchen

Zitat von: Thorsten Pferdekaemper am 03 November 2017, 17:21:54
Man könnte sich überlegen, eine Kopie der fhem.cfg zu speichern,

das macht FHEM seit Mittwoch automatisch.


15377 by rudolfkoenig, 17:59 Hide 6 Items
fhem.pl: save writes a copy into restoreDirs (Forum #78769)
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Thorsten Pferdekaemper

Zitat von: betateilchen am 03 November 2017, 18:40:07
das macht FHEM seit Mittwoch automatisch.


15377 by rudolfkoenig, 17:59 Hide 6 Items
fhem.pl: save writes a copy into restoreDirs (Forum #78769)

Bist Du Dir sicher, dass das das ist, was ich gemeint habe? Es klingt für mich eher so, dass ein "save" den alten Stand sichert. Was ich aber gemeint habe ist ein Sichern des neuen Stands. Also z.B. immer wenn sich etwas "fhem.cfg-relevantes" getan hat, dann eine Datei schreiben, aber eben nicht nach fhem.cfg. Um zu viel Datenmüll zu vermeiden kann man das ja auf eine Sicherung pro Minute/10 Minuten plus eine beim shutdown (oder wie auch immer) beschränken.
Gruß,
   Thorsten
FUIP

betateilchen

Zitat von: Thorsten Pferdekaemper am 03 November 2017, 21:02:57
Bist Du Dir sicher, dass das das ist, was ich gemeint habe?

Vermutlich nicht, aber es ist besser als gar nix.

Zitat von: Thorsten Pferdekaemper am 03 November 2017, 21:02:57
Also z.B. immer wenn sich etwas "fhem.cfg-relevantes" getan hat, dann eine Datei schreiben, aber eben nicht nach fhem.cfg.

...sondern in die configDB. Die ist genau dafür ausgelegt.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

rudolfkoenig

ZitatDaraus lese ich, dass ein Modul nicht mehr prüfen muss, ob "global autosave" gesetzt ist, sondern soll bei strukturalen Änderungen 'AnalyzeCommand(undef, "save")' aufrufen.
Pruefen muss es nicht, aber save ausloesen _muss_ es auch nicht.

Diese Diskussion hatten wir schon vor zwei Jahren, damals ist das global autosave Attribut reingekommen.
Ich bin der Ansicht, dass FHEM Module kein autosave ausloesen sollten. Es gibt aber das Problem, dass manchmal Aenderungen in einem anderen System auch in FHEM Spuren hinterlassen, und wenn man die FHEM Konfiguration nicht speichert, dann hat man nach Neustart was Kaputtes. Ich meine in solchen Faellen ist ein save gerechtfertigt.

Die Idee von Thorsten ist interessant, allerdings ist es (noch?) nicht sehr anfaengerfreundlich: man hat zwei Optionen beim Start, und im Zweifel startet man mit dem falschen fhem.cfg.
Neuer Vorschlag: global autosave kann die Werte 0,1,2 aufnehmen. 0: nur Benutzergesteuert speichern, 1: wie jetzt, halbautomatisch, 2: zusaetzlich nach jeder Strukturaenderung, mit X Sekunden delay, damit das "batch"-setzen von 10 Attributen nicht 10 Speichervorgaenge ausloest. Die Voreinstellung bleibt bei 1.

betateilchen

Kann ich auch was von dem Zeugs haben, das Ihr raucht?

Wer, der nicht drei Jahre intensive FHEM Nutzung hinter sich hat, soll denn das noch verstehen und sinnvoll einsetzen? Es ist doch jetzt schon absehbar, dass in irgendwelchen Internet-Blogs dann die Empfehlung gegeben wird, auf ,,maximale Sicherung" umzustellen. Und was das dann wieder an Problemen und Fragen aufwirft, schlägt dann hier im Forum auf. Und wenn es ,,woanders" empfohlen wird, kriegst Du das hier nie wieder gradegezogen.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

betateilchen

Ausserdem sollte es nicht Aufgabe der fhem.pl sein, jeden Schwachsinn denn irgendwelche Frickler "Entwickler" in ihren Modulen verbrochen haben, wieder ausbügeln zu wollen.

Da wäre ich lieber für eine bessere Qualitätssicherung von Modulen VOR dem Einchecken und der Veröffentlichung. Z.B. ein pre-commit-hook, der CommandSave() verbietet.


-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

dev0

ZitatNeuer Vorschlag
Finde ich gut. Falls Option 1/2 beinhaltet, dass nach einem Fehler beim FHEM Start nicht mehr automatisch gespeichert wird, dann sollte mAn der Anwender darüber informiert werden.

Thorsten Pferdekaemper

Zitat von: rudolfkoenig am 03 November 2017, 21:40:48
Die Idee von Thorsten ist interessant, allerdings ist es (noch?) nicht sehr anfaengerfreundlich: man hat zwei Optionen beim Start, und im Zweifel startet man mit dem falschen fhem.cfg.
Neuer Vorschlag: global autosave kann die Werte 0,1,2 aufnehmen. 0: nur Benutzergesteuert speichern, 1: wie jetzt, halbautomatisch, 2: zusaetzlich nach jeder Strukturaenderung, mit X Sekunden delay, damit das "batch"-setzen von 10 Attributen nicht 10 Speichervorgaenge ausloest. Die Voreinstellung bleibt bei 1.
Naja, das ist aber genau umgekehrt als das, was ich gemeint hatte. Ich meinte, dass man nie die fhem.cfg automatisch speichert, sondern Änderungen "vorsorglich" in eine andere Datei (oder eine Reihe anderer Dateien) speichert. Wenn man dann mal vergisst "save config" zu drücken, dann kann man sich den neusten Stand (manuell) von dort holen.

Zitat von: betateilchen am 03 November 2017, 21:38:13
...sondern in die configDB. Die ist genau dafür ausgelegt.
Woher weiß die configDB dann welchen Stand der Konfiguration mein FHEM benutzen soll?

Gruß,
   Thorsten
FUIP

Timmy.m

Zitat von: rudolfkoenig am 01 November 2017, 18:00:26
Habe die oben vorgeschlagenen Aenderungen eingebaut, getestet und eingecheckt.

Vielen Dank, gute Sache.. etwas finde ich nur unglücklich gelöst.

- Mache ich ein Update von FHEM wird ins "restoreDir" mit dem aktuellen Daten ein Backup angelegt. -> Soweit so gut.
- Speichere ich dann die Konfiguration nach ein paar Änderungen ab, landet diese im gleichen Backup Verzeichnis meines FHEM Backups.
In meinen Augen erhöht sich die Gefahr sich seine Backup Daten zu zerschießen. Ich würde es bevorzugen, wenn die Konfigurationsdaten in einen anderen Ordner im "restoreDir" gespeichert wird oder noch besser eine Anzahl von Backups dort bevorratet wird und man in FHEM einstellen kann, dass man die älteste nach z.B. 5 neuen Sicherungen löscht.

Grüße Tim
FHEM5.9@RaspPi.3B|HMLAN|CUL868V3|1Wire|HUE|FritzBox|BotVacDconnected|3xKindleDisplay|
FHEM2FHEM|
FHEM5.9@RaspPi.2B|nanoCul868|TCM310|JeeLinkClone|RFXTRX433E|ZWave|Zigbee|xiaomi
RaspberryMatic@RaspPi.3B+ in Planung