I/O-Instanzen lassen sich noch immer nicht schließen

Noch immer kann ich z.B. den Client-Socket nicht schließen.

Log meldet: Einstellungen gespeichert und Schließe Socket…
Die Console reagiert dabei gar nicht mehr und muss beendet werden.
Shutdown vom Dienst geht auch nicht und Client Socket löschen auch nicht :frowning:

Sollte doch schon vor einigen Versionen gelößt sein ?

Update:
Vermutich passiert das nur, wenn die Instanz per Skript geschlossen wird.
Ist PHP hier eventuell zu ‚schnell‘. So dass das ApplyChanges sind mit dem SetProperty überschneidet ?
Gerde sehr mühselig das zu testen, da dannach die Instanz bis zum IPS neustart nicht zu verwenden ist.

Update 2:
Mit einer 2 Sekunden Pause beim schließen, hat es jetzt 3 mal hintereinander funktioniert und dann war wieder vorbei :frowning:

Michael

Schaue ich mir gerne an… Wenn du es über die Konsole machst, passiert es nie?

paresy

Korrekt,
aber da werden dann auch keine Daten gesendet und empfangen.

Im APCUPSD-Skript wird der Socket geöffnet und die Abfrage gesendet und nach 1 Sekunde wieder geschlossen (1. PHP-Thread per Execute oder Timer).
Die in der Zwischenzeit empfangenen Daten werden per RegVar im Script abgearbeitet (2. PHP-Thread per RegVar).
Allerdings ‚hängt‘ der 1. Thread beim schließen.

Eventuell noch Daten im Clientsocket welche das Schließen desselben verhindern ?

Werden keine Daten gesendet, läuft das Script fehlerfrei durch beim öffnen und schließen des Socket.
Auch ohne jede Pause dazwischen und sogar wenn es 10mal direkt hintereinander läuft.

Michael

Perfekte Beschreibung. Ich denke da noch einen Fehler gefunden zu haben :slight_smile: Die Verbesserung landet zum nächsten Update!

paresy

Leider noch nicht behoben.
Werden Daten von einem Socket an eine Instanz von einem PHP-Modul weitergeleitet und diese Instanz wirft eine Exception, kann der Socket nicht mehr korrekt geschlossen und neu geöffnet werden.

Michael

Tritt auch auf, wenn ein Modul ein Update bekommt.
Manchmal hängt IPS dann mit den Daten im/zum Socket in der ‚Luft‘.

Verstehe gerade aber die Meldung auch nicht wirklich.
Zeile 871 ist zwar die SendToParent-Methode aber… warum ‚Kann Daten nicht zur Instanz…‘
Nach einen Neustart wieder alles ok :confused:


22:42:14 | 16510 | Client Socket | Einstellungen gespeichert
22:42:14 | 16510 | Client Socket | Schließe Socket...
22:42:14 | 54186 | FlowHandler | Kann Daten nicht zur Instanz #54186: <br />
<b>Warning</b>:  Kann für die Instanz #54186 die Schnittstelle nicht finden in <b>/usr/share/symcon/modules/SqueezeBox/SqueezeBoxDevice/module.php</b> on line <b>871</b><br />
<br />
<b>Warning</b>:  Kann für die Instanz #54186 die Schnittstelle nicht finden in <b>/usr/share/symcon/modules/SqueezeBox/SqueezeBoxDevice/module.php</b> on line <b>871</b><br />

Michael

Die Übersetzung ist doof. Wahrscheinlich ist die Instanz nach dem Update nicht korrekt „erstellt“ worden, sodass diese im Baum dunkelrot ist. Werde ich mir ansehen.

paresy

Ich schätze mal das Thema ist erledigt.
Hatte hiermit zu tun:

IP-Symcon Community Forum
Fix: Zeichen (Hex 0x27) kann nun in PHP Modulen empfangen werden.
Michael