Seite 1 von 1

mySQL Connection neu starten bei Fehler

Verfasst: 19. Jan 2019 11:44
von Caddy
Hallo zusammen,


Ich habe das MySQL Persistent aktiviert mit Maria 5 DB.
Die DB läuft auf meiner Synology das OH 2.4 auf einem Raspberry

Es kommt vor, wenn das WLAN weg war oder auch so ab und an das der folgende Fehler kommt

2019-01-19 11:38:00.084 [ERROR] [sql.internal.MysqlPersistenceService] - mySQL: Connection is not valid!

Nach einem Raspberry Neustart ist wieder alles OK.
Soweit funktioniert alles, bis auf den Fehler oben.

Kann mir jemand eine Idee sagen wie ich den Fehler überwachen kann und dann den Dienst oder Server oder Connection neu starten kann?
Sollte das hier falsch sein bitte in raspbian verschieben ...

Danke caddy

Re: mySQL Connection neu starten bei Fehler

Verfasst: 19. Jan 2019 21:06
von udo1toni
Nein, das passt schon. Allerdings habe ich auch keine Idee, wie Du das umsetzen kannst, weil die Information in den openHAB rules nicht vorliegt.
Die Persistence sollte sich neu starten lassen, indem Du auf der Karaf Konsole bundle:restart org.openhab.persistence.mysql eingibst. Aber auch dieses Kommando lässt sich nicht ohne weiteres mit den Rules absetzen.

Re: mySQL Connection neu starten bei Fehler

Verfasst: 21. Jan 2019 12:34
von Caddy
hast Du eine Idee wie ich den Fehler in einer Regel abgefangen bekomme ?
Dann würde ich mir ein Telegramm senden und den OH von Hand starten ?!

Re: mySQL Connection neu starten bei Fehler

Verfasst: 21. Jan 2019 22:13
von udo1toni
Du kannst auf lastUpdate eines Items zugreifen, welches Du z.B. jede Minute persistierst. Wenn die Datenbnak weg fliegt, müsste dann NULL zurück kommen, oder der Zeitstempel ändert sich zumindest nicht mehr.

Allerdings ist das nur Theorie ;)

Re: mySQL Connection neu starten bei Fehler

Verfasst: 1. Feb 2019 20:41
von Caddy
Hallo Udo1Toni.

ich habe es mit

Code: Alles auswählen

rule "xx_Stundenregel"
when
    Time cron "*/5 * * * * ?"
then
	logInfo("Rule.Nase","XXX: {} ", temperatur_holssel.lastUpdate )
end
versucht, mit dem Ergebnis wenn die connection offline geht, das dir rule nicht mal mehr ausgeführt wird.
Leider bekomme ich auch keinen Eintrag im Log .... Es sieht so aus als wenn er es einfach nicht mehr macht.

Noch eine Idee vielleicht ?

Wenn ich den Netzwerkstecker des SQL wieder rein stecke kommt das Datum ....

Jetzt die Frage wie komme ich an NULL :-)

Danke Caddy

Re: mySQL Connection neu starten bei Fehler

Verfasst: 1. Feb 2019 21:15
von Caddy
Nachtrag:

das hier habe ich gefunden

Code: Alles auswählen

rule "xx_Stundenregel"
when
    Time cron "*/5 * * * * ?"
then
   try {
      // do some stuff
	  logInfo("Rule.Nase","Mache was: {} ", temperatur_holssel.lastUpdate )
   }
   catch(Throwable t) {
      logError("Error", "Some bad stuff happened in my rule: " + T.toString)
   }
   finally {
      // always runs even if there was an error, good place for cleanup
	  logInfo("Rule.Nase"," ENDE ")
   }
end
funktioniert leider auch nicht

Re: mySQL Connection neu starten bei Fehler

Verfasst: 2. Feb 2019 01:58
von udo1toni
Ich kann mir ehrlich gesagt nicht vorstellen, dass die Rule nicht mehr ausgeführt wird, das riecht eher danach, dass die Verbindung zu SQL weg fliegt, weil der Rechner beschäftigt ist (so beschäftigt, dass keine Rules mehr ausgeführt werden).

Nutzt du viele Time cron Ausdrücke? openHAB erlaubt default nur 2 gleichzeitig laufende Rules, die vom Scheduler gestartet wurden.
Nutzt Du Thread::sleep() Anweisungen, um die Ausführung von Befehlen zu verzögern? openHAB erlaubt default nur 5 gleichzeitig laufende Rules durch andere Trigger, sind mehr rules am Start, guckt der Letzte in die Röhre.

Re: mySQL Connection neu starten bei Fehler

Verfasst: 2. Feb 2019 15:11
von Caddy
ich denke das auch

zu deinen Fragen

Nutzt du viele Time cron Ausdrücke? openHAB erlaubt default nur 2 gleichzeitig laufende Rules, die vom Scheduler gestartet wurden.
Nutzt Du Thread::sleep() Anweisungen, um die Ausführung von Befehlen zu verzögern? openHAB erlaubt default nur 5 gleichzeitig laufende Rules durch andere Trigger, sind mehr rules am Start, guckt der Letzte in die Röhre.

alles nein
nur wenige rules keine laufen zur gleichen zeit

Caddy