Autor Thema: [erledigt] Race Condition bei der Icon-Ermittlung in FHEMWEB  (Gelesen 753 mal)

Offline Dr. Boris Neubert

  • Global Moderator
  • Hero Member
  • ****
  • Beiträge: 4981
  • Are we just self-replicating DNA?
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
« Letzte Änderung: 10 Mai 2021, 16:21:14 von Dr. Boris Neubert »
Globaler Moderator, Developer, aktives Mitglied des FHEM e.V. (Marketing, Verwaltung)
Bitte keine unaufgeforderten privaten Nachrichten!

Offline Otto123

  • Tester
  • Hero Member
  • ****
  • Beiträge: 19508
  • schon mal restore trainiert?
    • Otto's Technik Blog
Antw:Race Condition bei der Icon-Ermittlung in FHEMWEB
« Antwort #1 am: 03 Mai 2021, 19:48:52 »
Hi Boris,

ich finde den Unterschied nicht?  :-[

Gruß Otto
Viele Grüße aus Leipzig
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7490+7412,WRT1900ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266
Zustimmung Zustimmung x 1 Liste anzeigen

Offline Dr. Boris Neubert

  • Global Moderator
  • Hero Member
  • ****
  • Beiträge: 4981
  • Are we just self-replicating DNA?
Antw:Race Condition bei der Icon-Ermittlung in FHEMWEB
« Antwort #2 am: 03 Mai 2021, 20:00:17 »
Die zweite solltr .svg als Endung haben ::)
Globaler Moderator, Developer, aktives Mitglied des FHEM e.V. (Marketing, Verwaltung)
Bitte keine unaufgeforderten privaten Nachrichten!

Offline Thorsten Pferdekaemper

  • Developer
  • Hero Member
  • ****
  • Beiträge: 6258
  • Finger weg von der fhem.cfg
Antw:Race Condition bei der Icon-Ermittlung in FHEMWEB
« Antwort #3 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
FUIP

Offline rudolfkoenig

  • Administrator
  • Hero Member
  • *****
  • Beiträge: 24481
Antw:Race Condition bei der Icon-Ermittlung in FHEMWEB
« Antwort #4 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.

Offline Dr. Boris Neubert

  • Global Moderator
  • Hero Member
  • ****
  • Beiträge: 4981
  • Are we just self-replicating DNA?
Antw:Race Condition bei der Icon-Ermittlung in FHEMWEB
« Antwort #5 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:
  • FHEM tut was es soll.
  • Bei Icons, die sich nur in der Dateierweiterung unterscheiden, gewinnt das Icon mit dem höchsten Sortierwert.
  • Gleichnamige Icons mit unterschiedlicher Dateierweiterung im selben Verzeichnis im Dateisystem ergeben keinen Sinn, es sei denn, ich übersehe eine Einstellmöglichkeit in FHEM, SVG-Icons herunterzuprorisieren.

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
Globaler Moderator, Developer, aktives Mitglied des FHEM e.V. (Marketing, Verwaltung)
Bitte keine unaufgeforderten privaten Nachrichten!

Offline Wuppi68

  • Developer
  • Hero Member
  • ****
  • Beiträge: 2295
  • On the Highway to Shell
Antw:Race Condition bei der Icon-Ermittlung in FHEMWEB
« Antwort #6 am: 10 Mai 2021, 15:36:49 »
hat Wupp getan ;-)
Jetzt auf nem I3 und primär Homematic - kein Support für cfg Editierer

Support heißt nicht wenn die Frau zu Ihrem Mann sagt: Geh mal bitte zum Frauenarzt, ich habe Bauchschmerzen