[gelöst] JsonMod bringt FHEM zum Absturz

Begonnen von FlatTV, 11 April 2023, 19:37:54

Vorheriges Thema - Nächstes Thema

betateilchen

Du solltest vielleicht Deinen api-key entfernen.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

FlatTV

Raspi3 - im wesentlichen mit Phoscon, HomeMatic ( aktuell über debmatic), CUL, BOSE-ST und Alexa (Connector)

FlatTV

@herrmannj
Hallo Jörg,
danke für deinen Support.
Das Modul rennt! Ich habe das lokal jetzt so am laufen und keine Ausfälle.
Anbei der Diff zum Original.

Grüße aus dem Norden
Jörg 🖖

--- a/98_JsonMod.pm   2023-04-13 18:04:29.130206354 +0200
+++ b/98_JsonMod.pm       2023-04-14 21:37:47.381621591 +0200
@@ -374,7 +374,12 @@
                        my $resultObject;
                        my $index = 0;
 
-                       my sub count {
+                       # forum 133135
+                       # my sub count {
+                       #       return $index;
+                       # };
+
+                       local *count = sub {
                                return $index;
                        };
Raspi3 - im wesentlichen mit Phoscon, HomeMatic ( aktuell über debmatic), CUL, BOSE-ST und Alexa (Connector)

herrmannj

Zitat von: FlatTV am 14 April 2023, 15:45:04Läuft seit heute Morgen jede Stunde ohne Probleme mit allen Readings.

Schön. Dann haben wir perl wohl bei einem bug erwischt. Im Anhang die dann finale Version.

Da Du und Yersinia die einzigen seid wo mir das bekannt ist: vielleicht könntet ihr die Version im Anhang für 24h mit dieser def testen:
define confirm_segv JsonMod https://jsonplaceholder.typicode.com/comments
attr confirm_segv interval * * * * *
attr confirm_segv readingList multi(jsonPath('$.[*]'),concat(sprintf('%03d', count()), concat('-with_id-', property('id'), '-', sub {my $e = shift;; $e =~ s/@/_at_/;;$e;;}->(property('email')), '-', count)), concat(count(), concat(':', time, ':'), sub {my $t = substr(property('body'), 0, 48);; $t =~ s/[^a-zA-Z0-9 ]*//g;; $t}->()));;\
single(sub {return undef if $^O ne 'linux';; my $s = `ps -p $$ -o %cpu,rss --no-headers`;; my @a = split ' ', $s;; return $a[1]}->(), '999-sys');;

Es werden dummydaten geladen und die readingslist ist halbwegs komplex.

Grüße aus dem Norden in den Norden,
Joerg


MadMax-FHEM

Ich hab zwar kein Problem aber trotzdem mal die Testversion inkl. DEF auf eines meiner Testsysteme "geworfen"...
Muss man/ich da noch was tun?
Oder "nur" warten, ob es durchläuft?

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

herrmannj

Moin,

Danke.

Context: gibt ganz selten und nur auf ganz wenigen systemen einen bug in perl - und das nur manchmal. Die Version oben hat workarounds dafür drin, funktionell alles so wie es war

Die def lädt 500 Datensätze im Minutentakt und quält die durch die readinglist. Damit kommen in 24h ca 7k Aufrufe der vorher problematischen Funktionen zustande und die sollen fehlerfrei durchlaufen. Wenn Du vorher keine Probleme (segv im perl interpreter) hattest, wird es bei Dir keinen Unterschied machen.

MadMax-FHEM

Zitat von: herrmannj am 14 April 2023, 22:59:14Moin,

Danke.

Context: gibt ganz selten und nur auf ganz wenigen systemen einen bug in perl - und das nur manchmal. Die Version oben hat workarounds dafür drin, funktionell alles so wie es war

Die def lädt 500 Datensätze im Minutentakt und quält die durch die readinglist. Damit kommen in 24h ca 7k Aufrufe der vorher problematischen Funktionen zustande und die sollen fehlerfrei durchlaufen. Wenn Du vorher keine Probleme (segv im perl interpreter) hattest, wird es bei Dir keinen Unterschied machen.

Hm, ok.
Wobei ich JsonMod erst seit heute nutze bzw. heute (seit langem) mal wieder angeworfen habe/hatte ;)
Daher: keine Probleme...

Aber schadet ja nicht es mal mitlaufen zu lassen? ;)

System:
PRETTY_NAME="Raspbian GNU/Linux 11 (bullseye)"
NAME="Raspbian GNU/Linux"
VERSION_ID="11"
VERSION="11 (bullseye)"
VERSION_CODENAME=bullseye
ID=raspbian
ID_LIKE=debian
HOME_URL="http://www.raspbian.org/"
SUPPORT_URL="http://www.raspbian.org/RaspbianForums"
BUG_REPORT_URL="http://www.raspbian.org/RaspbianBugs"
Relativ aktuell (max. 1 Woche oder so außer "Takt")...

This is perl 5, version 32, subversion 1 (v5.32.1) built for arm-linux-gnueabihf-thread-multi-64int
(with 47 registered patches, see perl -V for more detail)

fhem habe ich extra noch mal aktualisiert, bevor ich diese Spezialversion eingespielt habe...

Lasse es halt mal laufen und geb Bescheid.
(kannst es ja ignorieren 8)  )

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

herrmannj

#37
doch, sehr gerne. Gerade weil der bug nur selten auftritt sind tests sehr hilfreich und sehr gern gesehen.

Edit: deine perl version ist auch identisch mit der von Joerg.

FlatTV

Zitat von: herrmannj am 14 April 2023, 22:23:50
Zitat von: FlatTV am 14 April 2023, 15:45:04Läuft seit heute Morgen jede Stunde ohne Probleme mit allen Readings.

Schön. Dann haben wir perl wohl bei einem bug erwischt. Im Anhang die dann finale Version.

Da Du und Yersinia die einzigen seid wo mir das bekannt ist: vielleicht könntet ihr die Version im Anhang für 24h mit dieser def testen:
define confirm_segv JsonMod https://jsonplaceholder.typicode.com/comments
attr confirm_segv interval * * * * *
attr confirm_segv readingList multi(jsonPath('$.[*]'),concat(sprintf('%03d', count()), concat('-with_id-', property('id'), '-', sub {my $e = shift;; $e =~ s/@/_at_/;;$e;;}->(property('email')), '-', count)), concat(count(), concat(':', time, ':'), sub {my $t = substr(property('body'), 0, 48);; $t =~ s/[^a-zA-Z0-9 ]*//g;; $t}->()));;\
single(sub {return undef if $^O ne 'linux';; my $s = `ps -p $$ -o %cpu,rss --no-headers`;; my @a = split ' ', $s;; return $a[1]}->(), '999-sys');;

Es werden dummydaten geladen und die readingslist ist halbwegs komplex.

Grüße aus dem Norden in den Norden,
Joerg



Hab ich gerade gemacht, Test läuft seit 7:30 Uhr.
Raspi3 - im wesentlichen mit Phoscon, HomeMatic ( aktuell über debmatic), CUL, BOSE-ST und Alexa (Connector)

betateilchen

Zitat von: herrmannj am 14 April 2023, 22:23:50Schön. Dann haben wir perl wohl bei einem bug erwischt. Im Anhang die dann finale Version.

offtopic: hast Du schon einen Zeitplan, wann die anderen Dinge auf der ToDo-Liste zu JsonMod (insbesondere die Fehlerbehebung in der cron-Berechnung) umgesetzt werden können?
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

MadMax-FHEM

Kurze Zwischenrückmeldung:

läuft seit gestern ohne Auffälligkeiten...

Nur das hier kam im Log beim Start:
2023.04.14 22:47:30 3: json [JsonMod::JSON::StreamWriter] is pure perl. Consider installing Cpanel::JSON::XS

ist/wäre das für einen Test wichtig (gewesen)?

Ich lasse es heute oder bis morgen mal weiterlaufen...

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

herrmannj

Zitat von: MadMax-FHEM am 15 April 2023, 12:22:51Kurze Zwischenrückmeldung:

läuft seit gestern ohne Auffälligkeiten...

Nur das hier kam im Log beim Start:
2023.04.14 22:47:30 3: json [JsonMod::JSON::StreamWriter] is pure perl. Consider installing Cpanel::JSON::XS

ist/wäre das für einen Test wichtig (gewesen)?

Ich lasse es heute oder bis morgen mal weiterlaufen...

Gruß, Joachim
Nein, das ist nicht erforderlich. Allerdings kannst Du es so https://forum.fhem.de/index.php?topic=133135.msg1272236#msg1272236 installieren, dann sparst Du einige ms pro request

herrmannj

Zitat von: betateilchen am 15 April 2023, 09:29:34
Zitat von: herrmannj am 14 April 2023, 22:23:50Schön. Dann haben wir perl wohl bei einem bug erwischt. Im Anhang die dann finale Version.

offtopic: hast Du schon einen Zeitplan, wann die anderen Dinge auf der ToDo-Liste zu JsonMod (insbesondere die Fehlerbehebung in der cron-Berechnung) umgesetzt werden können?
Di meinst die Wochentage? Die hatte ich tatsächlich nicht mehr auf dem zettel. Schau ich rein

betateilchen

#43
Zitat von: herrmannj am 15 April 2023, 21:11:40Di meinst die Wochentage? Die hatte ich tatsächlich nicht mehr auf dem zettel. Schau ich rein

Prima, danke.

Es gab aber auch irgendwo noch einen Thread, in dem weitere Wünsche von JsonMod-Nutzern gesammelt wurden. Muss mal schauen, ob ich den wiederfinde.

Edit: https://forum.fhem.de/index.php?topic=111489.0

Da sind in den letzten Beiträgen noch ein paar Fragen, Wünsche und Ideen aufgeführt und teilweise in anderen Threads verlinkt.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

FlatTV

So, ich denke der Patch könnte so eingecheckt werden.
Hier lief der Test ohne Probleme.

In allen 3 bei mir aktiven JsonMod Devices, waren auch alle Readings aktiviert.

THX nochmal.
Raspi3 - im wesentlichen mit Phoscon, HomeMatic ( aktuell über debmatic), CUL, BOSE-ST und Alexa (Connector)