[patch] fhem.pl - statefile versioning in configDB

Begonnen von betateilchen, 20 Februar 2022, 11:57:17

Vorheriges Thema - Nächstes Thema

betateilchen

Hallo Rudi,

auf meiner ToDo-Liste steht seit geraumer Zeit das Thema Versionierung des statefile im Rahmen der configDB.

Unglücklicherweise führt CommandSave() in fhem.pl das Sichern in der Reihenfolge


  • zuerst StateFile
  • dann Konfiguration

aus, was dazu führt, dass ich in configDB keine eindeutige Zuordnung vornehmen kann.

Deshalb bitte ich darum, in CommandSave eine entsprechende ID zu generieren, die ich dann in configDB verwenden kann, um die beiden Konfigurationsteile zusammenzuführen. Mein Bestreben war, den Eingriff in die fhem.pl so minimal wie möglich zu gestalten.


Index: fhem.pl
===================================================================
--- fhem.pl     (revision 25712)
+++ fhem.pl     (working copy)
@@ -1717,6 +1717,7 @@
   DoTrigger("global", "SAVE", 1);

   restoreDir_saveFile($restoreDir, $attr{global}{statefile});
+  $data{saveID} = createUniqueId(); # for statefile versioning in configDB
   my $ret = WriteStatefile();

   return $ret if($ret);


Die saveID wird von configDB nach dem Speichern der Konfiguration automatisch wieder gelöscht.

In diesem Zusammenhang frage ich mich, ob das restoreDir_saveFile() in der Zeile vor der Änderung überhaupt einen Sinn macht, wenn configDB nicht im Einsatz ist? In diesem Fall gäbe es gar kein (aktuelles) statefile, was man irgendwohin kopieren sollte.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

rudolfkoenig

Habe die Zeile hinzugefuegt.

ZitatIn diesem Zusammenhang frage ich mich, ob das restoreDir_saveFile() in der Zeile vor der Änderung überhaupt einen Sinn macht, wenn configDB nicht im Einsatz ist? In diesem Fall gäbe es gar kein (aktuelles) statefile, was man irgendwohin kopieren sollte.
Ich habe das "nicht" aus dem Zitat gedanklich entfernt, und eine entsprechende Abfrage fuer restoreDir_saveFile eingebaut.

betateilchen

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