Fehler in Modulen (alle) - InstanceInterface is not available in

@paresy:
Nach einem Absturz gerade habe ich mir das IPSlog angesehen, darin sind zu allen Modulen, die ich eingebunden habe folgende Meldungen beim Neustart:


15:25:46 | 10494 | ERROR   | InstanceManager      | <br />
<b>Warning</b>:  InstanceInterface is not available in <b>/usr/share/symcon/modules/rk_dwd_werte/rk_dwd_werte/module.php</b> on line <b>99</b><br />
<br />
<b>Warning</b>:  InstanceInterface is not available in <b>/usr/share/symcon/modules/rk_dwd_werte/rk_dwd_werte/module.php</b> on line <b>100</b><br />

Meine aktuelle Entwicklung als Beispiel, das betrifft aber auch SqueezeBox, Whitings, ownCloud, BY_…, etc. mit mehr oder weniger vielen Einträgen, somit vermute ich einen allgemeineren Fehler, eventuell in der Reihenfolge des Starts oder noch nicht vorhandener Abhängigkeiten.

Check aller Logs, der Fehler ist erst seit c963918c5148 (31.01. bei mir 16:37) vorhanden, danach bei jeden Neustart, aber auch Nachts gegen 00:04 jeweils alle Module.

Squeezebox auch ?
Weil beim Starten kommt der Fehler durch Instanzfunktionen welche im Applychanges liegen.
Ich prüfe dort ob der Kernel schon betriebsbereit ist und führe keine Funktion vom Instance-Manager aus, somit sollten auch keine Fehler auftreten :confused:
Nachteil: Ich muss die eigene Instanz in ‚Fehlerzustand‘ setzen, damit IPS nach 60 sekunden wieder Applychanges aufruft um die Initialisierung zur Hardware/Server neu anzustoßen, in der Hoffnung dass IPS dann betriebsbereit ist.

Prüft man nicht auf den Runlevel, kommen diese Meldungen, wenn du irgendeine Funktion welche Instanzen betrifft, ausführst.
Das ist so auch ‚korrekt‘ weil IPS ja in dem Zustand noch nicht betriebsbereit ist.

Das mit Nachts habe ich in meinen Log ebenfalls nicht, sicher das IPS bei dir da nicht abstürzt ? Zum Beispiel das ‚Problem‘ mit dem Connect-Control ?

Michael

Direkt nach meinem Modul kommt das SqueezeModul:

15:25:46 | 45934 | MESSAGE | SqueezeboxDevice     | Erstelle...
15:25:46 | 00000 | DEBUG   | ScriptEngine         | Executing Text (Length: 188) ~ Sender: RunScript
15:25:46 | 00000 | DEBUG   | ScriptEngine         | Executed Text (Length: 0) ~ Sender: RunScript
15:25:46 | 00000 | DEBUG   | ScriptEngine         | Executing Text (Length: 194) ~ Sender: RunScript
15:25:46 | 00000 | DEBUG   | ScriptEngine         | Executed Text (Length: 0) ~ Sender: RunScript
15:25:46 | 45934 | ERROR   | InstanceManager      | <br />
<b>Warning</b>:  InstanceInterface is not available in <b>/usr/share/symcon/modules/IPSSqueezeBox/SqueezeBoxDevice/module.php</b> on line <b>1799</b><br />
<br />
<b>Warning</b>:  Invalid argument supplied for foreach() in <b>/usr/share/symcon/modules/IPSSqueezeBox/SqueezeBoxDevice/module.php</b> on line <b>1801</b><br />
<br />
<b>Warning</b>:  InstanceInterface is not available in <b>/usr/share/symcon/modules/IPSSqueezeBox/SqueezeBoxDevice/module.php</b> on line <b>1815</b><br />
<br />
<b>Warning</b>:  InstanceInterface is not available in <b>/usr/share/symcon/modules/IPSSqueezeBox/SqueezeBoxDevice/module.php</b> on line <b>1816</b><br />

Connect werde ich noch mal ausschalten, in den letzten Tagen hatte ich ein paar Abstürze, die ich eher auf meine „Modul Unfähigkeit“ geschoben haben.
Fehlendes Komma oder Semikolon oder geschweifte Klammer sorgen scheinbar für ein schnelles Ende.

Das Nachts war nach genauer Analyse ein Neustart von IPS, das sieht nicht nach einem Absturz aus.

Ah ok das SqueezeBoxDevice nicht der LMSSplitter… dann ist das ein Fehler bei mir, den hatte ich nicht auf dem Zettel :slight_smile:
Danke.

Michael

PS: Hier ist es das RegisterHook was ‚böse‘ ist.
IPS_GetInstanceListByModuleID scheint dann noch nicht möglich zu sein. Ich versuche das mal genauso zu ‚umschiffen‘.

Dann schaun wir mal, was du findest, die Meldung „InstanceInterface is not available in…“ kommt seit dem Update c963918c5148 bei allen Modulen.

Da es die Meldung vorher nicht gab, muss paresy da doch gefummelt haben :eek:.

Ich habe meinen fix schon :wink:
Nur noch nicht online, weil jetzt gerade keine Zeit.
Selbst wenn sich da etwas geändert hat, du kannst nie sagen was zuerst geladen wird.
Also ist der Entwickler des Moduls in der Pflicht dies selbst zu lösen (war im Delphi-SDK auch so).
Michael

EDIT: Für Squeezeboxe ist jetzt ein Fix online :smiley:

Ich sehe den Code, aber mir fehlt das Verständnis :o, ich über halt noch :).

Magst du einem Modulentwicklungsanfänger mal erklären, was wann wo sinnvoll zu machen ist, damit es die Meldungen nicht mehr gibt?

Vielleicht möchten das die anderen Modulentwickler ja auch einbauen bzw. verstehen.

Ich schaffe es ja noch nicht mein dein Modul zutesten :o
Aktuell fehlt irgendwie überall Zeit :frowning:
‚Eigentlich‘ ist es ganz ‚einfach‘ sofern man nicht so verworrenen Code hat wie ich aktuell im Applychanges :wink:

Du musst halt aufpassen dass du keine Funktionen des InstanceInterface aufrufst, wenn der Kernel nicht bereit ist.
Den Runlevel vom Kernel kannst du mit IPS_GetKernelRunlevel bekommen.
Nur wenn hier 10103 gemeldet wird, ist der IPS-Kernel ‚ready and running‘ und du kannst alle Funktionen nutzen.

Michael