FHEM Forum

FHEM => Sonstiges => Thema gestartet von: Frank_Huber am 03 März 2018, 11:09:01

Titel: [gelöst] -- DbLog - useCommand "vacuum" nonblocking?
Beitrag von: Frank_Huber am 03 März 2018, 11:09:01
Mahlzeit,

gibt es eine Möglichkeit User-commands innerhalb DbLog non-blocking auszuführen?
bei meiner Wöchentlichen automatischen Bereinigung führe ich auch ein "VACUUM;" aus. während dieses läuft ist FHEM blockiert.
wäre mir angenehmer wenn es nonblocking machbar wäre. :-)

Danke & Grüße
Frank
Titel: Antw:DbLog - useCommand nonblocking?
Beitrag von: DS_Starter am 03 März 2018, 11:19:54
Hallo Frank,

ja gibt es.
Nutze dafür DbRep. Es gibt dort sogar ein Kommando " set <DbRep> vacuum" speziell für diesen Zweck.

vacuum
- optimiert die Tabellen in der angeschlossenen Datenbank (SQLite, PostgreSQL).
Vor und nach der Optimierung kann ein FHEM-Kommando ausgeführt werden. (siehe Attribute "executeBeforeProc", "executeAfterProc")

    Hinweis:
    Obwohl die Funktion selbst non-blocking ausgelegt ist, muß das zugeordnete DbLog-Device im asynchronen Modus betrieben werden um ein Blockieren von FHEM zu vermeiden.

setze dir zum Beispiel die Attribute:


executeAfterProc set <DbLog-Device> reopen
executeBeforeProc set <DbLog-Device> reopen 3600


Das verhindert das DbLog während der Optimierungsphase versucht Werte in die DB zu schreiben was zu Fehlermeldungen führt.

Grüße,
Heiko
Titel: Antw:DbLog - useCommand nonblocking?
Beitrag von: Frank_Huber am 03 März 2018, 11:41:45
Danke Heiko!

Das DbRep Modul muss ich mir mal genauer anschauen. das kann wohl richtig viel mittlerweile. :-)
Der Tipp mit dem reopen klingt auch sinnvoll!

Thema gelöst. :-)