NEWS
IoBroker absturz (scheinbar in js-controller) bei Namensänderung in Admin
-
Hallo mitsammen,
bastle gerade an einem Adapter wo die Namen von Objekten nachher im admin geändert werden sollen da der Adapter States mit Zeitstempel im namen kreiert.
Vast bei jeder Namensänderung stürzt iobroker ab, im Log sehe ich manchmal sowas:
host.jessi4 2017-08-04 12:52:58.065 info force terminating host.jessi4 2017-08-04 12:52:55.970 info received SIGTERM host.jessi4 2017-08-04 12:52:50.952 info received SIGTERM iobroker 2017-08-04 12:52:49.816 info exit 0 iobroker 2017-08-04 12:52:49.762 info Starting node restart.js iobroker 2017-08-04 12:52:47.894 info _restart TypeError: 2017-08-04 12:52:47.886 error at ObjectsInMemServer. (/opt/iobroker/node_modules/iobroker.js-controller/lib/objects/objectsInMemServer.js:2053:33) TypeError: 2017-08-04 12:52:47.886 error at ObjectsInMemServer.getObject (/opt/iobroker/node_modules/iobroker.js-controller/lib/objects/objectsInMemServer.js:2060:23) TypeError: 2017-08-04 12:52:47.886 error at clone (/opt/iobroker/node_modules/iobroker.js-controller/lib/objects/objectsInMemServer.js:1730:29) TypeError: 2017-08-04 12:52:47.886 error at clone (/opt/iobroker/node_modules/iobroker.js-controller/lib/objects/objectsInMemServer.js:1730:29) TypeError: 2017-08-04 12:52:47.886 error at clone (/opt/iobroker/node_modules/iobroker.js-controller/lib/objects/objectsInMemServer.js:1730:29) TypeError: 2017-08-04 12:52:47.886 error at clone (/opt/iobroker/node_modules/iobroker.js-controller/lib/objects/objectsInMemServer.js:1730:29) TypeError: 2017-08-04 12:52:47.886 error at clone (/opt/iobroker/node_modules/iobroker.js-controller/lib/objects/objectsInMemServer.js:1726:24) TypeError: 2017-08-04 12:52:47.886 error at new Buffer (buffer.js:80:17) TypeError: 2017-08-04 12:52:47.886 error at Function.Buffer.from (buffer.js:101:10) TypeError: 2017-08-04 12:52:47.886 error at fromObject (buffer.js:262:9) TypeError: 2017-08-04 12:52:47.886 error First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object. uncaught 2017-08-04 12:52:47.853 error exception: First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.
Mein iobroker ist 1.1.2, node 6.11.1 und admin 1.8.1.
-
Machst Du dazu bitte ein Github Issue auf ?! Danke!
-
Scheinbar passiert da was komisches beim "clonen" des Objekts. Da ist scheinbar irgendwo ein "Buffer" Objekt drin und da knallt es.
Wie sieht das Objekt denn genau aus?
-
Appollon77,
hast Recht! im common ist ein Wert mit einem Buffer. Hab das weggegeben und speichere die Daten in hex und jetzt geht's ohne Absturz!
Trotzdem noch eine issue auf Github (bei welchen Adapter/instanz)?
-
Wie genau sah das Common denn aus?
-
So wie:
{ broadlink2: { data: buffer } }
wo Buffer eine Buffer-Variable war.
Hab diese in hex umgewandelt und als solches gespeichert.
Übrigens, einen Änderungswunsch an den admin-Adapter:
Sobald common etwas enthält wird das Zahnrad im objektviewer blau angezeigt.
Es sollte wohl anzeigen welche Adapter eine History aufzeichnen!
Wenn keine adapter.instanzen im Common aufscheinen sollte es nicht blau werden!
Ich verwende 'adaptername' als Name aber nicht 'adaptername.instanz' und deshalb sollte klar sein dass mein Adapter nicht irgendwas aufzeichnet sonder nur was zwischenspeichert.
-
Meinst Du "common" oder "custom"? Die History-Werte landen in "custom"
-
Genau gesagt ist es 'common.custom'!
-
Jupp.
der Plan von common.custom ist das dort andere Instanzen Details ablegen können und das das dann auch editiert werden kann. Aktuell nutzen das nur die History Adapter.
Von daher wäre in custom sauber mit der Instanz zu arbeiten. Ansonsten kannst du in common direkt durch eigene Felder erweitern. Musst ja nicht common.custom nehmen.
-
Ok,
hab die Daten nach native verschoben um nicht das blaue Zahnrad bei allen Objekten zu haben (sondern nur dort wo wirklich aufgezeichnet wird).
Nun, das funktioniert auch super aber ich wollte jetzt den custom-Eintrag mit dem admin/objects rauslöschen aber das geht nicht.
Admin fragt zwar ob ich es wirklich will, löscht es aber nicht :(!
-
@fsjoke:Ok,
hab die Daten nach native verschoben um nicht das blaue Zahnrad bei allen Objekten zu haben (sondern nur dort wo wirklich aufgezeichnet wird).
Nun, das funktioniert auch super aber ich wollte jetzt den custom-Eintrag mit dem admin/objects rauslöschen aber das geht nicht.
Admin fragt zwar ob ich es wirklich will, löscht es aber nicht :(!
2017-08-06_e.png `
Schreibe einfach {} ins custom. -
Ja, damit kann ich zwar custom auf ein leeres Objekt setzen aber das blaue Zahnrad bleibt da iobroker custom eben noch immer findet.
Einziger Ausweg schnell in den Javascript Adapter und dort mit Rohmitteln gearbeitet:
const id = 'xxxx.0.xxxx.xxxx'; s = getObject(id); s.common.custom = null; setObject(id, s, (err, ok) => log(err));
Das funktioniert nur mit 'null' als Zuweisung, eine delete oder ein undefined, oder ein leeres Objekt funktioniert auch da nicht!
Aber ich hab's ja geschafft…
Ergänzung:
Habe bemerkt dass die Zuweisung von {} bei manchen funktioniert hat und bei anderen nicht!
Aber eine andere Methode: Zuweisung von null im RAW-Fenster scheint immer zu funktionieren. Also mach ich das jetzt falls ich es jemals noch brauche nachdem ich die Objekte migriert habe.