Autor Thema: DbLog -- Timeout möglich wenn DB nicht erreichbar?  (Gelesen 235 mal)

Offline kadettilac89

  • Hero Member
  • *****
  • Beiträge: 1431
DbLog -- Timeout möglich wenn DB nicht erreichbar?
« am: 07 September 2021, 22:04:41 »
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

Offline DS_Starter

  • Developer
  • Hero Member
  • ****
  • Beiträge: 7358
Antw:DbLog -- Timeout möglich wenn DB nicht erreichbar?
« Antwort #1 am: 07 September 2021, 23:02:17 »
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 6.5 @NUC6i5SYH mit FHEM auf Debian 10, DbLog/DbRep mit MariaDB auf VM
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

Offline kadettilac89

  • Hero Member
  • *****
  • Beiträge: 1431
Antw:DbLog -- Timeout möglich wenn DB nicht erreichbar?
« Antwort #2 am: 08 September 2021, 08:30:39 »
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?

Offline DS_Starter

  • Developer
  • Hero Member
  • ****
  • Beiträge: 7358
Antw:DbLog -- Timeout möglich wenn DB nicht erreichbar?
« Antwort #3 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 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
« Letzte Änderung: 08 September 2021, 09:28:31 von DS_Starter »
ESXi 6.5 @NUC6i5SYH mit FHEM auf Debian 10, DbLog/DbRep mit MariaDB auf VM
Maintainer: SSCam, SSChatBot, SSCal, SSFile, DbLog/DbRep, Log2Syslog, SolarForecast,Watches, Dashboard
Kaffeekasse: https://www.paypal.me/HMaaz
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/DS_Starter

Offline kadettilac89

  • Hero Member
  • *****
  • Beiträge: 1431
Antw:DbLog -- Timeout möglich wenn DB nicht erreichbar?
« Antwort #4 am: 08 September 2021, 09:32:17 »
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.

 

decade-submarginal