(Angeblich?) Nicht vorhandene Funktion wird ausgeführt | Fehler in der Matrix?

Begonnen von t0m, 27 September 2017, 19:43:13

Vorheriges Thema - Nächstes Thema

t0m

Hi,


ich habe hier ein sehr seltsames Verhalten. Ich habe folgendes AT definiert:

./fhem.cfg:362:define AtGarbageOut at *10:00:00 {GarbageOutAt();;}

Also: Jeden Tag um 10:00 Uhr soll GarbageOutAt() aufgerufen werden. GarbageOutAt() hatte ich in 99_myUtils.pm
definiert. Da werden Mails an zwei Personen geschickt.  :)

Ich wollte nun eine weitere Person, an die diese Mail auch gehen soll, aufnehmen. Seltsamerweise finde ich
GarbageOutAt() nicht mehr. Ich habe mal einen grep gemacht:

pi@raspberrypi:/opt/fhem $ grep -rin '.' -e 'GarbageOutAt('
./restoreDir/2017-09-08/fhem.cfg:357:define AtGarbageOut at *10:00:00 {GarbageOutAt();;}
./fhem.cfg:362:define AtGarbageOut at *10:00:00 {GarbageOutAt();;}
pi@raspberrypi:/opt/fhem $ pwd
/opt/fhem
pi@raspberrypi:/opt/fhem $


Man sieht also die Stellen des Aufrufs, aber da scheint keine Definition vorhanden zu sein.

:o Und jetzt kommt der Fehler in der Matrix (anders kann ich mir es derzeit nicht erklären): Ich habe mir das heutige
Log um 10:00 Uhr angesehen. Der Aufruf von GarbageOutAt() findet statt. Naja, sagt man sich, im Log kann ja
viel stehen. Aber, und nun kommt das Matrix-Problem, die beiden Personen (inkl. mir) haben die eMail erhalten.

So, nun meine Frage an die Matrix- bzw. FHEM-Spezialisten: Was läut hier in meinem Weltbild total aus der Spur?

Danke schon mal für's Anders-Analysieren-Als-Ich-Es-Tat! Falls noch mehr Infos benötigt werden -> immer her damit -
ich kann alles grep'pen. ;-)


Cheers,
tom   

CoolTux

Die 99_myUtils befindet sich unter /opt/fhem/FHEM

Und wenn du in FHEMWEB mal auf die Line Seite schaust unter Edition Files hättest Du se auch gefunden.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

t0m


Hi CoolTux,

die Suche (grep) war in /opt/fhem (deswegen habe ich das das 'pwd' dringelassen) und rekursiv. Hätte die Definition also finden müssen. Oder habe ich jetzt in deiner Antwort etwas falsch verstanden?

Danke und Grüße
t0m

CoolTux

Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

t0m

Hi CoolTux,

das hatte ich oben ja schon gepostet - aber ok:

pi@raspberrypi:/opt/fhem $ grep -R "GarbageOutAt" /opt/fhem/
/opt/fhem/restoreDir/2017-09-08/fhem.cfg:define AtGarbageOut at *10:00:00 {GarbageOutAt();;}
/opt/fhem/fhem.cfg:define AtGarbageOut at *10:00:00 {GarbageOutAt();;}


Diese (relativ simplen) Analysen habe ich ja schon durch.  ;)


Regards,
t0m

CoolTux

Kannst Du mal bitte in FHEMWEB in der Kommandozeile folgendes eingeben
{ GarbageOutAt() }
Sollte die Funktion ausführen.
Wann hast Du mal neu gestartet. Wenn man eine Funktion löscht bleibt sie ja erstmal im Speicher geladen.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

t0m

Zitat von: CoolTux am 27 September 2017, 20:33:53
Kannst Du mal bitte in FHEMWEB in der Kommandozeile folgendes eingeben
{ GarbageOutAt() }
Sollte die Funktion ausführen.
Wann hast Du mal neu gestartet. Wenn man eine Funktion löscht bleibt sie ja erstmal im Speicher geladen.

Hi CoolTux,

yup, { GarbageOutAt() } versendet die Mails wie erwartet. Neu gestartet habe ich nicht mehr, als ich bemerkte, dass die Funktion nicht mehr aufzufinden war. Darauf zielte meine Frage ja ab -> kann ich das, was FHEM jetzt gerade im Speicher hat, wieder irgendwie herstellen?

GarbageOutAt() ist nicht ein Riesen-Ding - aber wenn ich nicht alles wieder neu schreiben müsste, wäre schon cool. Ausserdem hätte ich dann eine Lösung, falls das mal wieder passiert... vorallem für grössere Sache, die plötzlich verschwinden.  :(


Grüße
t0m

CoolTux

ich glaube nicht das man das wieder herstellen kann aus dem speicher, weiß es aber auch nicht genau. wüsste gerade nicht wie
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

Thorsten Pferdekaemper

Hi,
gib mal das hier im Kommandofeld ein:

{use B::Deparse;; my $d = B::Deparse->new();; return $d->coderef2text(\&GarbageOutAt)}

Gruß,
   Thorsten
FUIP

viegener

Zitat von: t0m am 27 September 2017, 21:21:06
GarbageOutAt() ist nicht ein Riesen-Ding - aber wenn ich nicht alles wieder neu schreiben müsste, wäre schon cool. Ausserdem hätte ich dann eine Lösung, falls das mal wieder passiert... vorallem für grössere Sache, die plötzlich verschwinden.  :(

Falls das mal wieder passiert würde ich zu backups raten, wenn man das vorher gemacht hat soll das schon geholfen haben etwas wiederherzustellen, dass unabsichtlich überschrieben wurde  ;)
Kein Support über PM - Anfragen gerne im Forum - Damit auch andere profitieren und helfen können

t0m

Zitat von: Thorsten Pferdekaemper am 27 September 2017, 22:14:41
Hi,
gib mal das hier im Kommandofeld ein:

{use B::Deparse;; my $d = B::Deparse->new();; return $d->coderef2text(\&GarbageOutAt)}


Hi Thorsten,

Sorry, dass es so lange mit meiner Antwort gedauert hat, aber unter der Woche habe ich immer recht wenig Zeit für FHEM, Postings, etc.

Ich habe das Statement von dir ausprobiert. Wie kommt man denn auf sowas? Ich war mir ja ziemlich sicher, dass mein Code im Daten-Nirwana verblichen ist. Und wenn man sich ziemlich sicher ist, dass etwas nicht geht und dann erscheinen die verschwundenen Zeilen plötzlich auf dem Bildschirm, dann ist das wie - ein Wunder.  :D

Ich weiß gar nicht, wie ich dir danken soll! Du bist mein persönlicher FHEM-Held.  ;)


I owe you more than ONE beer,
t0m

CoolTux

Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

Thorsten Pferdekaemper

Zitat von: t0m am 29 September 2017, 18:51:34
Ich habe das Statement von dir ausprobiert. Wie kommt man denn auf sowas?
Im Gegensatz zu Dir habe ich vermutet, dass das gehen könnte. Der Rest war ein bisschen <hier Suchmaschine Deiner Wahl einsetzen>, gut geraten und ausprobiert.

Zitat
Ich war mir ja ziemlich sicher, dass mein Code im Daten-Nirwana verblichen ist. Und wenn man sich ziemlich sicher ist, dass etwas nicht geht und dann erscheinen die verschwundenen Zeilen plötzlich auf dem Bildschirm, dann ist das wie - ein Wunder.  :D
https://de.wikipedia.org/wiki/Clarkesche_Gesetze
SCNR

Zitat
Ich weiß gar nicht, wie ich dir danken soll! Du bist mein persönlicher FHEM-Held.  ;)
I owe you more than ONE beer,
Danke.
https://forum.fhem.de/index.php/topic,74527.0.html

Gruß,
   Thorsten
FUIP

t0m

Hi Thorsten,

RNK werde ich vermutlich eher nicht schaffen. Solltest du dich aber mal in Oberfranken aufhalten, dann gib mir Bescheid. Bierauswahl hätten wir hier genug -> http://www.bierland-oberfranken.de/deutsch/brauereien/brauereiportraits_46.html . ;)

Grüße
t0m