DbLog -- Timeout möglich wenn DB nicht erreichbar?

Begonnen von kadettilac89, 07 September 2021, 22:04:41

Vorheriges Thema - Nächstes Thema

kadettilac89

Hi,

ich habe eine Remotedatenbank als dblog-Ziel konfiguriert. Wenn die Datenbank nicht erreichbar ist wird schön alles in den Cache geschoben und geschrieben sobald die DB wieder online ist. Soweit so gut.

Wenn die Datenbank offline ist, ich dann aber
1) config check
2) fhem restart
ausführe hängt dblog mehrere Minuten und blockiert Fhem (Oberfläche nicht mehr erreichbar). Docker geht in Status "unhealthy".


Gibt es eine MÖglichkeit die Prüfung ob der Server erreichbar ist mit einem Timeout zu versehen? Per Attribut oder einen Workaround?

Danke!

Meine Config

defmod myDbLogRemote DbLog ./db_remote.conf .*:.*
attr myDbLogRemote DbLogExclude .*
attr myDbLogRemote DbLogSelectionMode Exclude/Include
attr myDbLogRemote asyncMode 1
attr myDbLogRemote bulkInsert 1
attr myDbLogRemote cacheEvents 1
attr myDbLogRemote event-on-change-reading countHistory,state,CacheUsage
attr myDbLogRemote expimpdir /opt/fhem/backup/db/
attr myDbLogRemote group DB-Log
attr myDbLogRemote room Server
attr myDbLogRemote showNotifyTime 0
attr myDbLogRemote showproctime 1
attr myDbLogRemote syncInterval 300

DS_Starter

Das müßtest du mal näher beschreiben.
Stehen die Punkte 1) und 2) in direktem Zusammenhang oder sind es 2 use cases ?

Auf jeden Fall ist "config check" nicht asynchron implementiert.
ESXi@NUC+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

kadettilac89

2 unterschiedliche use cases, selbe Ursache. DB nicht erreichbar, ggf. sogar pingbar aber keine Antwort auf SQL Abfragen --> Fhem wartet eisern.

ich brauche kein asynchrones Verhalten. Mein Problem ist, dass bei einem Reboot permanent am Verbindungsaufbau zur Datenbank hängt und alles blockt. Ich möchte nur verhindern, dass mein Fhem beim reboot hängen bleibt und nicht mehr ansprechbar ist.

Ein großzügiger Timeout, z. B. eine Minute wäre ausreichend. Irgendwie mit aktuellem Modul machbar?

DS_Starter

#3
Guten Morgen,

mir kam das etwas komisch vor und habe den case bei mir getestet.
Habe meine DB (MariaDB auf remote Host) heruntergefahren und FHEM neu gestartet.

Ergebnis war dass FHEM ohne Blockierung einwandfrei neu gestartet ist.
Lediglich im Log sieht man die vergeblichen Verbindungsversuche:


2021.09.08 08:52:03.731 3: SSCam.Keller - Polling-Log of Keller is deactivated
2021.09.08 08:52:03.732 3: SSCam.Keller - Pollinginterval of Keller has been changed to: 210 s
2021.09.08 08:52:06.019 3: DbLog LogDB - Creating Push-Handle to database mysql:database=fhemtest;host=192.168.2.44;port=3306 with user fhemtest
2021.09.08 08:52:06.021 2: DbLog LogDB - Error: DBI connect('database=fhemtest;host=192.168.2.44;port=3306','fhemtest',...) failed: Can't connect to MySQL server on '192.168.2.44' (115) at ./FHEM/93_DbLog.pm line 3238.

2021.09.08 08:52:06.023 2: DbLog LogDB1 - Error: DBI connect('database=fhemtest1;host=192.168.2.44;port=3306','fhemtest1',...) failed: Can't connect to MySQL server on '192.168.2.44' (115) at ./FHEM/93_DbLog.pm line 3238.

2021.09.08 08:52:06.677 3: DbLog LogMariaVM - Creating Push-Handle to database mysql:database=fhemtest;host=192.168.2.44;port=3306 with user fhemtest
2021.09.08 08:52:06.679 2: DbLog LogMariaVM - Error: DBI connect('database=fhemtest;host=192.168.2.44;port=3306','fhemtest',...) failed: Can't connect to MySQL server on '192.168.2.44' (115) at ./FHEM/93_DbLog.pm line 3238.

2021.09.08 08:52:06.680 3: DbLog LogStby - Creating Push-Handle to database mysql:database=fhemtest;host=192.168.2.44;port=3306 with user fhemtest
2021.09.08 08:52:06.682 2: DbLog LogStby - Error: DBI connect('database=fhemtest;host=192.168.2.44;port=3306','fhemtest',...) failed: Can't connect to MySQL server on '192.168.2.44' (115) at ./FHEM/93_DbLog.pm line 3238.


Kann es sein, dass deine DB zwar eine Verbindung zulässt, dann aber irgendwie nicht mehr reagiert ?

Grüße,
Heiko
ESXi@NUC+Debian+MariaDB, PV: SMA, Victron MPII+Pylontech+CerboGX
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard, PylonLowVoltage
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

kadettilac89

Zitat von: DS_Starter am 08 September 2021, 09:00:52
Guten Morgen,

mir kam das etwas komisch vor und habe den case bei mir getestet.
Habe meine DB (MariaDB auf remote Host) heruntergefahren und FHEM neu gestartet.

Ergebnis war dass FHEM problos ohne Blockierung einwandfrei neu gestartet ist.
Lediglich im Log sieht man die vergeblichen Verbindungsversuche:

Kann es sein, dass deine DB zwar eine Verbindung zulässt, dann aber irgendwie nicht mehr reagiert ?

Grüße,
Heiko
das kann sein, ja. Ist eine Online-DB die ich eingebunden habe. Die war zur Wartung down, ob und welche Verbindung zustande kam weiß ich nicht. Der Server war pingbar. Hab nur gesehen dass Fhem stand.