FHEM Forum

FHEM - Entwicklung => FHEM Development => Thema gestartet von: Dr. Boris Neubert am 03 Mai 2021, 19:24:02

Titel: [erledigt] Race Condition bei der Icon-Ermittlung in FHEMWEB
Beitrag von: Dr. Boris Neubert am 03 Mai 2021, 19:24:02
Hallo,

auf zwei verschiedenen Instanzen von FHEM liefert

get myFHEMWEB icon cloudy
dies

/opt/fhem/www/images/default/weather/cloudy.png
bzw. das

/opt/fhem/www/images/default/weather/cloudy.png
Richtig wäre das erste, weil FW_readIconsFrom() die Icons vor dem Einlesen alphabetisch sortiert und immer das erste ausgegeben wird. Anscheinend werden auf der zweiten Instanz die Icons früher und anders geladen, so dass diese Logik zum Sortieren nicht zum Zuge kommt.

Das führt dazu, dass die Weather-Icons auf der zweiten Instanz gemischt PNG- und SVG-Icons sind.

Wie kann ich die Icon-Ladereihenfolge debuggen?

Viele Grüße
Boris
Titel: Antw:Race Condition bei der Icon-Ermittlung in FHEMWEB
Beitrag von: Otto123 am 03 Mai 2021, 19:48:52
Hi Boris,

ich finde den Unterschied nicht?  :-[

Gruß Otto
Titel: Antw:Race Condition bei der Icon-Ermittlung in FHEMWEB
Beitrag von: Dr. Boris Neubert am 03 Mai 2021, 20:00:17
Die zweite solltr .svg als Endung haben ::)
Titel: Antw:Race Condition bei der Icon-Ermittlung in FHEMWEB
Beitrag von: Thorsten Pferdekaemper am 03 Mai 2021, 20:26:04
Hi,

also bei mir gewinnt immer .svg, wenn die .svg-Dateien überhaupt vorhanden sind. Das ist auch kein Wunder:
Das hier wird für alle Dateien aus dem jeweiligen Verzeichnis ausgeführt:
       my $tag = $filename;     # Add it without extension too
        $tag =~ s/\.[^.]*$//;
        $FW_icons{$dir}{$tag} = $filename;
Vorher werden die Dateien sortiert. Dadurch kommt cloudy.svg nach cloudy.png und überschreibt den Eintrag für cloudy.

Aber das gilt natürlich nur, wenn es die .svg-Dateien auch gibt. Ich habe auch zwei Instanzen auf meiner Entwicklungskiste. Eine hat die .svg-Dateien, die andere nicht. Dadurch beobachte ich dasselbe Verhalten wie Du.

Was hat das eigentlich mit "Race Condition" zu tun?

Gruß,
   Thorsten
Titel: Antw:Race Condition bei der Icon-Ermittlung in FHEMWEB
Beitrag von: rudolfkoenig am 04 Mai 2021, 09:52:28
Race Condition sollte es nicht geben, da FHEMWEB nicht multithreaded ist und _eigentlich_ alle notwendigen Variablen am Anfang der HTTP-Request-Behandlung gesetzt werden. Ich will damit nicht ausschliessen, dass es Probleme gibt, von mir aus auch Race Condition, ich brauche aber was Konkretes zum Nachstellen, wenn ich die Ursache finden soll.
Titel: Antw:Race Condition bei der Icon-Ermittlung in FHEMWEB
Beitrag von: Dr. Boris Neubert am 04 Mai 2021, 10:25:28
also bei mir gewinnt immer .svg, wenn die .svg-Dateien überhaupt vorhanden sind. Das ist auch kein Wunder:
Das hier wird für alle Dateien aus dem jeweiligen Verzeichnis ausgeführt:
       my $tag = $filename;     # Add it without extension too
        $tag =~ s/\.[^.]*$//;
        $FW_icons{$dir}{$tag} = $filename;
Vorher werden die Dateien sortiert. Dadurch kommt cloudy.svg nach cloudy.png und überschreibt den Eintrag für cloudy.

Im Code von 01_FHEMWEB.pm wird ab Zeile 2937 per sub FW_iconPath($) das erste Icon, dessen Name (ohne Dateierweiterung) trifft, zurückgeliefert. An Zeile 2871 werden in sub FW_readIconsFrom($$) die Icons geladen und sortiert. Ich war der irrigen Meinung, dass das erste Icon (cloudy.png) gewinnt, aber es ist wie Du es schreibst so, dass das letzte Icon (cloudy.svg) alle anderen gleichen Namens überschreibt.

Zitat
Aber das gilt natürlich nur, wenn es die .svg-Dateien auch gibt. Ich habe auch zwei Instanzen auf meiner Entwicklungskiste. Eine hat die .svg-Dateien, die andere nicht. Dadurch beobachte ich dasselbe Verhalten wie Du.

Grmpf. Du hast Recht. Auf dem anderen System, das mir wie gewünscht das PNG-Icon liefert, fehlen die SVG-Icons. Ich war der irrigen Meinung, dass alle drei Systeme, die ich warte, auf dem gleichen Stand sind... Aber das für mich funktionierende System ohne SVG-Icons habe ich wohl vor dem 18.02.2019 aufgesetzt, dem Datum an dem Wuppi68 die SVG-Icons hinzugefügt hat.

Zitat
Was hat das eigentlich mit "Race Condition" zu tun?

... und dass eine Aufrufreihenfolge dafür verantwortlich ist, welche Icons zuerst in die Liste eingetragen werden. Ich habe falsch gedacht.

Muss mehr eigene Analysezeit in diese Themen stecken und weniger vorschnell vermuten (schäm).

Fazit:

Sofern es keine andere Einstellmöglichkeit als den iconPath gibt, schlage ich vor, die von Wuppi68 in fhem/www/images/default/weather hinzugefügten SVG-Icons nach fhem/www/images/fhemSVG/weather zu verschieben.

Viele Grüße
Boris
Titel: Antw:Race Condition bei der Icon-Ermittlung in FHEMWEB
Beitrag von: Wuppi68 am 10 Mai 2021, 15:36:49
hat Wupp getan ;-)