NEWS
Alpha Test js-controller 4.0
-
FAQ
Known Issues
Aktuell sind folgende Themen bekannt, welche noch parallel bearbeitet werden:
- Admin hat bei den "Host settings" noch keine Wahlmöglichkeit für "JSONL". Daher bitte den DB Typ aktuell nicht über Admin ändern!
- Bei einer Neuinstallation der Alpha kann es sein das im Admin nue die 3 Standardadapter angezeigt werden. Bitte auf Reload" in der UI klicken um das Repository zu laden. Dies liegt am verwendeten Build
- Die "Migration zu JSONL"-Meldung im Admin kommt auch bei Neuinstallationen. Dies wird mit dem Latest-Release nicht mehr vorkommen.
- Der "Rebuild"-Button in der Adapter-Kachel im Admin5 liefert einen Fehler bei der Ausführung. Der Button in Admin wird entfernt.
Informationen zu pot. angezeigten Meldungen und Logs
(info) "Sets unsupported"
In MutliHost-Umgebungen wo noch nicht alle Hosts aktualisiert sind arbeitet eine Optimierung in einem Kompatibilitätsmodus. In diesem wird ggf vom js-controller und von Adaptern beim Start einmalig die Meldung "Sets unsupported" im Loglevel "info" geloggt. Diese verschwindet wenn alle Hosts auf js-controller 4.0+ sind.
(warn) Object XXX is invalid: obj.common.min/max has an invalid type!
Dies ist eine neue Prüfung, wie oben bereits erwähnt, welche prüft das der Minimum bzw Maximum Wert eines Objekts auch eine Zahl ist. Wenn diese Meldung kommt dann diese bitte per Issue an den Adapter-Entwickler weitergeben, das dies im Adapter behoben wird.
Betroffen/Gemeldet bisher:
- info (fixed in 1.9.18+)
"Ignoring Directory "benchmark.files" because officially not created as meta ob ject. Please remove directory!"
Wenn bei der Inatallation des js-controller diese Meldung kommt:
The following notifications happened during sync: - Ignoring Directory "benchmark.files" because officially not created as meta ob ject. Please remove directory!
Bitte ein
iob upload all
ausführen.Infos zum Thema "Rebuilds bei Node.js Aktualisierungen"
Generell gilt das Node.JS Updates wie unter https://forum.iobroker.net/topic/44566/how-to-node-js-für-iobroker-richtig-updaten-2021-edition beschrieben funktionieren. Der js-controller 4.0 führt nur die automatisierten Rebuilds etwas anders aus als die 3.3.
In der neuen Version versuchen wir zuerst generell alle Module neu zu erstellen. Das sollte alle Probleme auf einen Schlag lösen. Falls das (und ja da kann es Gründe geben) nicht funktioniert ist der zweite Versuch das wirklich betroffene NPM-Paket zu identifizieren (also z.B. direkt "serialport" o.ä.) und dieses neu zu kompilieren. Das hat deutlich weniger Nebeneffekte wie die bisherigen Versuche.
Bitte hier Feedback geben wie es geht.
FAQ zur DB Umstellung File -> JSONL
Ich nutze Redis. Betrifft mich das?
Wenn Du für beide Datenbanken einen Redis einsetzt dann nicht. Es ist nur relevant wenn eine oder beide DBs "File" sind.
Was ist denn so besser an der "JSONL"-Datenbank anstelle "File"?
Von der Funktionalität ist alles identisch! Die beiden Datenbanken unterscheiden sich nur darin wie die Daten gespeichert werden.
Die File-DB schreibt hier alles in einem großen JSON-File regelmäßig - bei Objekten sind dies schnell mal 20MB. Dies kann durchaus viel I/O verursachen und ist vor allem bei SD-Karten-Basierten Systemen nicht optimal, weil es die Karte sehr belastet. Aber auch für SSDs ist dies nicht optimal. Zusätzlich besteht das Problem das ein Absturz beim Schreiben dazu führt das das ganze File defekt ist. ioBroker greift in diesen Fällen auf ein Backup-File zurück.
JSONL arbeitet hier anders. Änderungen werden erst einmal nur an die Datei angehangen und - nur wenn nötig - wird dann das File "komprimiert" und so neu geschrieben. Dies erfolgt aber viel seltener als bei der File-DB.
Für JSONL hat es @AlCalzone mal folgendermaßen zusammengefasst:
JSONL ist resistenter. Ein kaputtes Byte in der DB macht nicht alles kaputt und ein Absturz beim Schreibvorgang sorgt nur dafür, dass die ausstehenden Änderungen verloren gehen, nicht alles.
JSONL schont die SD-Karte durch weniger und kleinere Schreibvorgänge (nur wenn nötig).
JSONL braucht zumindest phasenweise etwas mehr Platz (die DB ist bis auf Kompaktierungsvorgänge append-only)
JSONL braucht etwas länger, wenn viele Objekte in kurzer Zeit geschrieben werden sollen (wobei meine letzten Tests nur noch Unterschiede im Rahmen der Standardabweichung ergeben haben)Wir denken das das neue Datenbank-Handling mehr Vorteile hat - vor allem für SD-Karten- und SSD-basierte Systeme.
Was bedeutet es das die Datenbank jetzt jsonl ist?
Im Normalfall bedeutet hies für den täglichen Betrieb nichts. Auch die Umstellung erfolg vollautomatisch im Rahmen des js-controller Updates.
Einiob status
wird nach der Installation anstelle "file" jetzt "jsonl" anzeigen. Das wars auch schon. Backups über BackItUp oderiob backup
und auch restores funktionieren weiterhin ohne Änderungen.WICHTIG: Durch die automatische Datenbankumstellung ist ein direkter Downgrade oder Backup Restore eines mit 4.0 erstellten Backups nur noch auf js-controller 3.3.x möglich! Für andere Downgrade Optionen bitte im nächsten Eintrag lesen. Ein Downgrade mit Redis als Datenbank ist problemlos weiterhin möglich!
Die Datenfiles im iobroker-data Verzeichnis haben jetzt .jsonl am Ende und nicht mehr .json. Die letzten "file DB .json"-Files werden umbenannt und liegen noch im Verzeichnis mit der Endung ".migrated".
Wie kann ich doch auf js-controller 3.2 oder kleiner downgraden wenn "jsonl" der DB Typ ist?
js-controller Versionen kleiner als 3.3.x hatten die nötigen Dateien für eine "jsonl" Datenbank nicht an Board. Daher ist ein direkter Downgrade nicht möglich weil dann die Daten nicht lesbar sind!
Daher muss ZUERST (!!) unter js-controller 4.0 die Datenbank manuell zurück auf "file" migriert werden. Dies erfolgt per
iob setup custom
und dort bei der Abfrage des DB Typsfile
angeben. Alle weiteren Fragen beantworten und dann die Migration abwarten. Danach zeigtiob status
wieder "file" an. Dann kann ein Backup für den Restore in einer kleineren Version erstellt werden oder ein Downgrade vianpm i iobroker.js-controller@version
(Vorher ins ioBroker Verzeichnis wechseln!) auf die gewünschte Version erfolgen.FAQ zu Redis "Sets" Optimierungen
Für Redis-basierte Systeme bringt der js-controller 4.0 einige Optimierungen mit. EIne davon nutzt spezielle interne Datenstrukturen, die konsistent initialisiert werden müssen. Da
-
los geht's
-
Dann wollen wir mal das Testsystem wieder etwas stressen und zum schwitzen bringen
-
Bin auch dabei...iobroker-data sichern und ab geht es.
Testbericht 1:
Alles schnell und gut verlaufen unter Windows.
-
@feuersturm sagte in Alpha Test js-controller 4.0:
Dann wollen wir mal das Testsystem wieder etwas stressen und zum schwitzen bringen
Feigling Ich zieh das nachher auf meinem Produktivsystem durch
Natürlich NACH Sicherung... -
Hab hier mal flugs umgestellt. Auf den ersten Blick keine Show Stopper, System läuft problemlos weiter.
Node17/npm8 als Runtime. -
@thomas-braun sagte in Alpha Test js-controller 4.0:
Node17/npm8 als Runtime.
Jaja der ganz "edgy" Test wieder
-
@apollon77
Ja, lüppt aber...
Einer muss den Job ja machen. -
@apollon77 Bei mehreren Adaptern taucht im Log folgendes auf
nina.0 (5475) Sets unsupported
Was steckt hier dahinter, bzw. wie soll die Fehleransprache bei den Adaptern lauten?
-
@feuersturm Was ist es bei Dir für ein System? Wenn es die "mnormale File/JsonlL" DB ist dann ist das ok und wird mit nächstem Update auf debug log geändert
-
@apollon77 Ist ein jsonl System. Master gerade aktualisiert. Gleich ist der Slave dran.
proxmox@ioBrokerTestsystem:/opt/iobroker$ iobroker status iobroker is running on this host. Objects type: jsonl States type: jsonl
-
@feuersturm Das liegt aktuell daran das dein Multihost nicht voll aktualisiert ist. Sollte danach wieder verschwinden
-
@apollon77 Jup, Master und Slave sind jetzt auf js-controller 4.0 und die Meldungen sind nicht mehr da.
System startet ohne Probleme und bisher keine Probleme ersichtlich.Habe gerade den Slave Host neu gestartet, indem ich eine Logging Änderung für Seq im Host konfiguriert habe was zum Neustart des Hosts geführt hat.
Im Log stand dann folgendes:2022-01-31 23:26:17.539 - debug: history.1 (9160) Plugin sentry destroyed 2022-01-31 23:26:17.517 - info: host.ioBrokerNew received SIGTERM 2022-01-31 23:26:17.542 - info: discovery.0 (9175) Terminated (START_IMMEDIATELY_AFTER_STOP): Without reason 2022-01-31 23:26:17.547 - info: history.1 (9160) Terminated (START_IMMEDIATELY_AFTER_STOP): Without reason 2022-01-31 23:26:17.566 - info: host.ioBrokerNew stopInstance system.adapter.history.1 (force=false, process=true) 2022-01-31 23:26:17.570 - info: host.ioBrokerNew stopInstance system.adapter.discovery.0 (force=false, process=true) 2022-01-31 23:26:17.583 - info: discovery.0 (9175) Got terminate signal TERMINATE_YOURSELF 2022-01-31 23:26:17.593 - info: host.ioBrokerNew stopInstance system.adapter.discovery.0 send kill signal 2022-01-31 23:26:18.332 - info: host.ioBrokerNew instance system.adapter.history.1 terminated with code 156 (START_IMMEDIATELY_AFTER_STOP) 2022-01-31 23:26:18.594 - info: host.ioBrokerNew instance system.adapter.discovery.0 terminated with code 156 (START_IMMEDIATELY_AFTER_STOP) 2022-01-31 23:26:18.598 - info: host.ioBrokerNew All instances are stopped. 2022-01-31 23:26:18.638 - error: host.ioBrokerNew uncaught exception: Connection is closed. 2022-01-31 23:26:18.640 - error: host.ioBrokerNew Error: Connection is closed. at Redis.sendCommand (/opt/iobroker/node_modules/ioredis/built/redis/index.js:628:24) at Redis.get (/opt/iobroker/node_modules/ioredis/built/commander.js:122:25) at ObjectsInRedisClient._getObject (/opt/iobroker/node_modules/@iobroker/db-objects-redis/lib/objects/objectsInRedisClient.js:2662:37) at Immediate. (/opt/iobroker/node_modules/@iobroker/db-objects-redis/lib/objects/objectsInRedisClient.js:2708:33) at processImmediate (internal/timers.js:466:21) 2022-01-31 23:26:18.644 - info: host.ioBrokerNew stopInstance system.adapter.history.1 (force=false, process=false) 2022-01-31 23:26:18.646 - info: host.ioBrokerNew stopInstance system.adapter.discovery.0 (force=false, process=false) 2022-01-31 23:26:18.649 - info: host.ioBrokerNew iobroker _restart 2022-01-31 23:26:18.915 - info: host.ioBrokerNew terminated 2022-01-31 23:26:18.919 - info: host.ioBrokerNew terminated 2022-01-31 23:26:21.591 - info: host.ioBrokerNew iobroker.js-controller version 4.0.0 js-controller starting 2022-01-31 23:26:21.603 - info: host.ioBrokerNew Copyright (c) 2014-2022 bluefox, 2014 hobbyquaker 2022-01-31 23:26:21.605 - info: host.ioBrokerNew hostname: ioBrokerNew, node: v14.18.1 2022-01-31 23:26:21.607 - info: host.ioBrokerNew ip addresses: 192.168.178.78 fe80::d4a0:37ff:fe8e:f0c1 2022-01-31 23:26:22.091 - info: host.ioBrokerNew connected to Objects and States 2022-01-31 23:26:22.123 - info: host.ioBrokerNew added notifications configuration of host 2022-01-31 23:26:23.102 - info: host.ioBrokerNew 59 instances found 2022-01-31 23:26:23.199 - info: host.ioBrokerNew starting 2 instances 2022-01-31 23:26:23.415 - info: host.ioBrokerNew instance system.adapter.history.1 started with pid 9238 2022-01-31 23:26:25.047 - debug: history.1 (9238) Redis Objects: Use Redis connection: 192.168.178.77:9001 2022-01-31 23:26:25.156 - debug: history.1 (9238) Objects client ready ... initialize now 2022-01-31 23:26:25.160 - debug: history.1 (9238) Objects create System PubSub Client 2022-01-31 23:26:25.164 - debug: history.1 (9238) Objects create User PubSub Client 2022-01-31 23:26:25.287 - debug: history.1 (9238) Objects client initialize lua scripts 2022-01-31 23:26:25.297 - debug: history.1 (9238) Objects connected to redis: 192.168.178.77:9001 2022-01-31 23:26:25.361 - debug: history.1 (9238) Redis States: Use Redis connection: 192.168.178.77:9000 2022-01-31 23:26:25.396 - debug: history.1 (9238) States create System PubSub Client 2022-01-31 23:26:25.398 - debug: history.1 (9238) States create User PubSub Client 2022-01-31 23:26:25.463 - debug: history.1 (9238) States connected to redis: 192.168.178.77:9000 2022-01-31 23:26:25.989 - debug: history.1 (9238) Plugin sentry Initialize Plugin (enabled=true) 2022-01-31 23:26:26.362 - info: history.1 (9238) starting. Version 1.10.5 in /opt/iobroker/node_modules/iobroker.history, node: v14.18.1, js-controller: 4.0.0-alpha.67-20220131-6621d47f 2022-01-31 23:26:27.423 - info: host.ioBrokerNew instance system.adapter.discovery.0 started with pid 9253 2022-01-31 23:26:30.270 - info: discovery.0 (9253) starting. Version 2.7.5 in /opt/iobroker/node_modules/iobroker.discovery, node: v14.18.1, js-controller: 4.0.0-alpha.67-20220131-6621d47f
-
@apollon77
Nach dem update auf den js-controller 4 bekomme ich wieder invalid
Type errors.2022-01-31 23:45:51.995 - warn: info.0 (9932) Object info.0.sysinfo.cpu.currentLoad.currentLoad is invalid: obj.common.min has an invalid type! Expected "number", received "string" 2022-01-31 23:45:51.996 - warn: info.0 (9932) This object will not be created in future versions. Please report this to the developer. 2022-01-31 23:45:51.998 - warn: info.0 (9932) Object info.0.sysinfo.cpu.currentLoad.currentLoadUser is invalid: obj.common.min has an invalid type! Expected "number", received "string" 2022-01-31 23:45:51.999 - warn: info.0 (9932) This object will not be created in future versions. Please report this to the developer. 2022-01-31 23:45:52.000 - warn: info.0 (9932) Object info.0.sysinfo.cpu.currentLoad.currentLoadSystem is invalid: obj.common.min has an invalid type! Expected "number", received "string" 2022-01-31 23:45:52.000 - warn: info.0 (9932) This object will not be created in future versions. Please report this to the developer. 2022-01-31 23:45:52.002 - warn: info.0 (9932) Object info.0.sysinfo.cpu.currentLoad.currentLoadNice is invalid: obj.common.min has an invalid type! Expected "number", received "string" 2022-01-31 23:45:52.002 - warn: info.0 (9932) This object will not be created in future versions. Please report this to the developer. 2022-01-31 23:45:52.003 - warn: info.0 (9932) Object info.0.sysinfo.cpu.currentLoad.currentLoadIdle is invalid: obj.common.min has an invalid type! Expected "number", received "string" 2022-01-31 23:45:52.003 - warn: info.0 (9932) This object will not be created in future versions. Please report this to the developer. 2022-01-31 23:45:52.004 - warn: info.0 (9932) Object info.0.sysinfo.cpu.currentLoad.currentLoadIrq is invalid: obj.common.min has an invalid type! Expected "number", received "string" 2022-01-31 23:45:52.005 - warn: info.0 (9932) This object will not be created in future versions. Please report this to the developer.
edit: war etwas zu schnell.
Fehler war vorher auch schon da, war aber vorher Info, jetzt Warnung -
@apollon77
update lief durch:The object "system.certificates" was updated successfully. States DB type migrated from "file" to "jsonl" Objects DB type migrated from "file" to "jsonl" ioBroker configuration updated npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@~2.3.2 (node_modules/chokidar/node_modules/fsevents): npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@2.3.2: wanted {"os":"darwin","arch":"any"} (current: {"os":"linux","arch":"x64"}) npm WARN optional SKIPPING OPTIONAL DEPENDENCY: osx-temperature-sensor@1.0.7 (node_modules/osx-temperature-sensor): npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for osx-temperature-sensor@1.0.7: wanted {"os":"darwin","arch":"any"} (current: {"os":"linux","arch":"x64"}) npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@2.3.2 (node_modules/zigbee-herdsman-converters/node_modules/fsevents): npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@2.3.2: wanted {"os":"darwin","arch":"any"} (current: {"os":"linux","arch":"x64"}) npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@2.3.2 (node_modules/zigbee-herdsman-converters/node_modules/zigbee-herdsman/node_modules/fsevents): npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@2.3.2: wanted {"os":"darwin","arch":"any"} (current: {"os":"linux","arch":"x64"}) npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@2.3.2 (node_modules/zigbee-herdsman/node_modules/fsevents): npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@2.3.2: wanted {"os":"darwin","arch":"any"} (current: {"os":"linux","arch":"x64"}) + iobroker.js-controller@4.0.0-alpha.67-20220131-6621d47f added 21 packages from 19 contributors, removed 1 package and updated 38 packages in 91.744s 183 packages are looking for funding run `npm fund` for details
Im Admin kam erstmal nix, das liegt aber glaube ich am Firefox und dem Cache. Nach F5 kam dann
Update Slave lief auch durch, da kam dann allerdings
╭───────────────────────────────────────────────────────────────╮ │ │ │ New major version of npm available! 6.14.15 -> 8.3.0 │ │ Changelog: https://github.com/npm/cli/releases/tag/v8.3.0 │ │ Run npm install -g npm to update! │ │ │ ╰───────────────────────────────────────────────────────────────╯ pi@iostrom:/opt/iobroker $ pi@iostrom:/opt/iobroker $ + iobroker.js-controller@4.0.0-alpha.67-20220131-6621d47f -bash: +: Kommando nicht gefunden. pi@iostrom:/opt/iobroker $ added 46 packages from 20 contributors, removed 146 packages and updated 38 packages in 122.123s -bash: added: Kommando nicht gefunden. pi@iostrom:/opt/iobroker $ pi@iostrom:/opt/iobroker $ 38 packages are looking for funding -bash: 38: Kommando nicht gefunden. pi@iostrom:/opt/iobroker $ run `npm fund` for details
Soll npm 8.3.0 installiert werden ???? Ich denke mal nein, oder?
Fazit: Alle Instanzen grün, System läuft
-
@amg_666 sagte in Alpha Test js-controller 4.0:
Soll npm 8.3.0 installiert werden ???? Ich denke mal nein, oder?
Nein, die Meldung kommt auch nicht vom iobroker sondern von npm selber.
-
@maik-0 ja weil das Objekt falsch ist. In dem Fall definiert ein Objekt einen minimum Wert welcher den falschen datentyp hat. Bitte wie üblich beim Adapter ein issue anlegen
-
@amg_666 naja schau mal genau hin. Du hattest ein + vor dem npm Befehl und da kamen die bash Fehler her. Und nein funniest keine npm Updates machen ;-))
-
Edgy (node17/npm8) Testing meldet beim Upgrade von Adaptern:
RangeError: Maximum call stack size exceeded
Cannot upgrade: Maximum call stack size exceededechad@chet:~ $ iobroker update -u && iobroker upgrade all Used repository: live-beta Adapter "socketio" : 4.1.0 , installed 4.0.3 [Updatable] Adapter "web" : 4.1.0 , installed 4.0.1 [Updatable] Exception in PromiseRejectCallback: /opt/iobroker/node_modules/iobroker.js-controller/lib/setup/setupUpgrade.js:139 }; ^ RangeError: Maximum call stack size exceeded Exception in PromiseRejectCallback: /opt/iobroker/node_modules/iobroker.js-controller/lib/setup/setupUpgrade.js:128 await this.upgradeAdapterHelper(repo, sortedAdapters, forceDowngrade, autoConfirm); ^ RangeError: Maximum call stack size exceeded Cannot upgrade: Maximum call stack size exceeded echad@chet:~ $
-
@thomas-braun GitHub Issue im Controller bitte