NEWS
Frage zu: adapter.on('unload', function (callback) {…})
-
Hallo zusammen,
stehe gerade etwas auf der Leitung. Kann mir jemand erklären wann
adapter.on('unload', function (callback) {...});
tatsächlich aufgerufen wird. Bei mir eigentlich nie mit js-controller V. 1.03 und win32 als BS. Ich wollte in der Funktion einige Aufräumarbeiten durchführen und war davon ausgegangen, dass sowohl beim Deaktivieren der Instanz, als auch beim Löschen selbiger ein 'unload' event erzeugt und die Funktion aufgerufen wird. Hab dann mal als Referenzadapter den Sonos-Adapter installiert, aber auch hier wird ein
adapter.log.info('terminating');
nie geloggt, also die Funktion nicht aufgerufen. Ist das eventuell noch ein Bug?
Habe gerade festgestellt: auf meiner Produktionsumgebung mit linux als BS läuft es. Scheint also ein win32 Problem zu sein. Vielleicht hat ja trotzdem jemand eine Idee.
Ergänzung: Habe jetzt die selbe Nodeversion (v4.8.0) wie unter Linux installiert (da funktioniert es ja). Effekt ist aber identisch. Ich habe mittlerweile die Vermutung, dass sich hier ein win32 ioBroker anders verhält wie unter linux, d.h. der registrierte callback() für das unload-Event nie aufgerufen wird. Könnte das jemand von den Entwicklern (Bluefox oder apollon77) mal verifizieren, oder sagen wie es geht?
Grüße
Carsten
-
Irgendwie komme ich bei dem Thema alleine nicht weiter. Vielleicht findet sich ja jemand, der auch node.js/win32 fährt und z.B. bei dem sonos-Adapter mal versucht den Fehler nachzustellen, also Instanz deaktiviert und im Log nachschaut, ob
adapter.log.info('terminating');
ausgeführt wurde.
Danke
Carsten
-
Bin ich denn wirklich der Einzige, der das Problem hat?
Grüße
Carsten
-
@Bluefox: Was meinst Du? Kannst Du hier Licht ins Dunkel bringen?
-
ich verstehe auch nur Bahnhof
-
Hallo zusammen,
stehe gerade etwas auf der Leitung. Kann mir jemand erklären wann
adapter.on('unload', function (callback) {...});
tatsächlich aufgerufen wird. Bei mir eigentlich nie mit js-controller V. 1.03 und win32 als BS. Ich wollte in der Funktion einige Aufräumarbeiten durchführen und war davon ausgegangen, dass sowohl beim Deaktivieren der Instanz, als auch beim Löschen selbiger ein 'unload' event erzeugt und die Funktion aufgerufen wird. Hab dann mal als Referenzadapter den Sonos-Adapter installiert, aber auch hier wird ein
adapter.log.info('terminating');
nie geloggt, also die Funktion nicht aufgerufen. Ist das eventuell noch ein Bug?
Habe gerade festgestellt: auf meiner Produktionsumgebung mit linux als BS läuft es. Scheint also ein win32 Problem zu sein. Vielleicht hat ja trotzdem jemand eine Idee.
Ergänzung: Habe jetzt die selbe Nodeversion (v4.8.0) wie unter Linux installiert (da funktioniert es ja). Effekt ist aber identisch. Ich habe mittlerweile die Vermutung, dass sich hier ein win32 ioBroker anders verhält wie unter linux, d.h. der registrierte callback() für das unload-Event nie aufgerufen wird. Könnte das jemand von den Entwicklern (Bluefox oder apollon77) mal verifizieren, oder sagen wie es geht?
Grüße
Carsten `
Unter Linux sind die Signale wie 'SIGINT' oder 'SIGTERM' wirklich da.Unter windows werden die vermutlich von node.js simuliert und funktioniert nicht wirklich.
Um jetzt wirklich dann unload zu erzwingen gibt es WorkAround:
supportStopInstance
<url url="https://github.com/ioBroker/ioBroker/blob/master/doc/SCHEMA.md#adapter[quote]common.supportStopInstance-"><link_text text="https://github.com/ioBroker/ioBroker/bl … pInstance-">https://github.com/ioBroker/ioBroker/blob/master/doc/SCHEMA.md#adapter
common.supportStopInstance- (optional) [true/false] if adapter supports signal stopInstance (messagebox required). The signal will be sent before the stop to the adapter. (used if the problems occured with SIGTERM)
Falls Adapter dann supportStopInstance und messagebox auf true (im common) setzt, dann wird erst ein Message "stopInstance" an die Instanz geschickt.
Wenn Adapter diese Meldung bekommt, dann hat der 1 Sekunde Zeit um runter zu gehen. Danach wird der gekillt.
Ansonsten räumt node.js schon sauber alle Datei und Netzwerk-Deskriptoren auf. Diese Lösung wurde für Serielle Schnittstelle verwendet.</link_text></url>
-
Hi Bluefox,
das war genau das fehlende Puzzleteil um mein Problem zu lösen. Vielen Dank für den Hinweis und Dein unglaubliches Engagement für ioBroker.
Grüße
Carsten