PRESENCE/Blocking: Check unerkannt gestorben?

Begonnen von Catinor, 24 April 2017, 22:20:35

Vorheriges Thema - Nächstes Thema

Catinor

Hallo

ich hab in unregelmässigen Abständen den Effekt (ca. alle 2 Wochen), dass ein Gerät innerhalb des PRESENCE-Objekts nicht mehr erkannt wird. Netzwerktechnisch ist alles ok, vom FHEM-Server aus lässt sich das Gerät problemlos anpingen.

Ein Anstossen des Checks im Objekt mit set statusRequest ergibt immer das Resultat another check is currently running, was sich auch als Resultat für die regulären Checks im Log findet. Ein ps -ef|grep ping zeigt mir immer wieder Checks, aber nie für die betreffende IP.

Der Zustand lässt sich nur durch Neustart von FHEM beheben, dann läuft alles wieder ohne Probleme.

Ich hab den Code nicht bis in alle Tiefen von Blocking.pm durchgesehen, aber mir scheint, dass PRESENCE eine PID des Subprozesses mit dem Check hält, die nicht mehr gültig ist. Der Subprozess muss beendet worden sein, ohne dass das bis zu PRESENCE zurück kam, ohne dass weder PRESENCE_ProcessLocalScan noch PRESENCE_ProcessAbortedScan aufgerufen wurden, welche die PID löschen würden. So bleibt dann die PID bestehen und verhindert dauerhaft einen erneuten Scan.

rudolfkoenig

Bin fuer Blocking zustaendig, vermute deswegen :) zunaechst ein Problem in PRESENCE: es schaut so aus, dass PRESENCE_ProcessLocalScan RUNNING_PID nicht entfernt, falls die gestartete Funktion nichts zurueckliefert. Ich gehe davon aus, dass es in Spezialfaellen das trotzdem passiert.

Ist leider schwer zu debuggen, wuerde helfen, was Nachstellbares zu haben. Ein Workaround in so einem Fall ist {delete($defs{Presence_Name}{helper}{RUNNING_PID}) }.
Man muss nur 100% sicher sein, dass das notwendig ist.

Catinor

So was


{delete($defs{Presence_Name}{helper}{RUNNING_PID}) }.


reicht mir eigentlich schon mal.

Ich muss wohl mal für länger das debugging für das Gerät einschalten, bei welchem der Effekt mit Abstand am häufigsten auftritt: das einzige iPhone hier. Bis zum ersten Auftreten bei einem Samsung gestern dachte ich es sei iSpezifisch. Da es das nun nicht ist, beobachte ich mal und schaue dass ich mehr Infos bekomme.