n0name45 / node-red-contrib-yandex-station-management

Модуль node-red-contrib-yandex-station-management для управления умными колонками от Яндекс
25 stars 6 forks source link

Краш Node Red #5

Open earlywaff opened 3 years ago

earlywaff commented 3 years ago

Добрый день! Использую только Yandex OUT узел. Переодически раз в день node red падает, я логирую это событие. Не знаю, какая информация конфиденциальна, буду вместо потенциально не нужной информации вставлять прочерки. Примерно начинается все с такого:

8 Jun 13:48:38 - [info] [yandex-login:Яндекс Станция] Status update event: {"color":"yellow","text":"connecting..."} for __ 8 Jun 13:48:38 - [info] [yandex-login:Яндекс Станция] Connecting to wss://192.168.1.63:1961 8 Jun 13:48:38 - [info] [yandex-login:Яндекс Станция] Connected to 192.168.1.63, data: undefined 8 Jun 13:48:38 - [info] [yandex-login:Яндекс Станция] Status update event: {"color":"green","text":"connected"} for __ 8 Jun 13:48:38 - [info] [yandex-login:Яндекс Станция] connection of __ success! 8 Jun 13:48:51 - [info] [yandex-login:Яндекс Станция] Status update event: {"color":"red","text":"disconnected"} for __ 8 Jun 13:48:51 - [info] [yandex-login:Яндекс Станция] Closed connection code 1000 with reason . Reconnecting... 8 Jun 13:48:51 - [info] [yandex-login:Яндекс Станция] Connecting to device __. ws is {"_events":{},"_eventsCount":4,"_binaryType":"nodebuffer","_closeCode":1000,"_closeFrameReceived":true,"_closeFrameSent":true,"_closeMessage":"","_closeTimer":{"_idleTimeout":-1,"_idlePrev":null,"_idleNext":null,"_idleStart":99865414,"_onTimeout":null,"_repeat":null,"_destroyed":true},"_extensions":{},"_protocol":"","_readyState":3,"_receiver":{"_writableState":{"objectMode":false,"highWaterMark":16384,"finalCalled":false,"needDrain":false,"ending":true,"ended":true,"finished":true,"destroyed":false,"decodeStrings":true,"defaultEncoding":"utf8","length":0,"writing":false,"corked":0,"sync":false,"bufferProcessing":false,"writecb":null,"writelen":0,"afterWriteTickInfo":null,"bufferedRequest":null,"lastBufferedRequest":null,"pendingcb":0,"prefinished":tr

Там очень длинная простыня такого лога строчного лога, затем после него идет

8 Jun 13:48:51 - [info] [yandex-login:Яндекс Станция] ws.state: 3 8 Jun 13:48:51 - [info] [yandex-login:Яндекс Станция] Status update event: {"color":"yellow","text":"connecting..."} for 643078f6401c5c2904d0 8 Jun 13:48:51 - [info] [yandex-login:Яндекс Станция] Connecting to wss://192.168.1.63:1961 8 Jun 13:48:51 - [info] [yandex-login:Яндекс Станция] Connected to 192.168.1.63, data: undefined 8 Jun 13:48:51 - [info] [yandex-login:Яндекс Станция] Status update event: {"color":"green","text":"connected"} for 643078f6401c5c2904d0 8 Jun 13:48:51 - [info] [yandex-login:Яндекс Станция] connection of 643078f6401c5c2904d0 success! 8 Jun 13:49:04 - [info] [yandex-login:Яндекс Станция] Status update event: {"color":"red","text":"disconnected"} for 643078f6401c5c2904d0 8 Jun 13:49:04 - [info] [yandex-login:Яндекс Станция] Lost server, reconnect in 60 seconds...1006 + 8 Jun 13:49:04 - [info] [yandex-login:Яндекс Станция] Status update event: {"color":"red","text":"disconnected"} for 643078f6401c5c2904d0 8 Jun 13:49:04 - [info] [yandex-login:Яндекс Станция] Closed connection code 1000 with reason . Reconnecting... 8 Jun 13:49:04 - [info] [yandex-login:Яндекс Станция] Connecting to device 643078f6401c5c2904d0. ws is {"_events":{},"_eventsCount":4,"_binaryType":"nodebuffer","_closeCode":1000,"_closeFrameReceived":true,"_closeFrameSent":true,"_closeMessage":"","_closeTimer":{"_idleTimeout":-1,"_idlePrev":null,"_idleNext":null,"_idleStart":99878571,"_onTimeout":null,"_repeat":null,"_destroyed":true},"_extensions":{},"_protocol":"","_readyState":3,"_receiver":{"_writableState":{"obje

Т.е история с реконнектом продолжается. Затем происходит еще один реконнект и идут вот такие логи , если я пришлю все я положу гит)

"encoding":"buffer","next":{"chunk":{"type":"Buffer","data":[88,15,172,83,77,91,170,78,80,76,187,85,76,67,155,83,72,72,161,30,25,15,170,69,105,69,173,123,64,68,128,85,105,100,154,70,106,28,129,85,106,94,134,82,113,24,172,127,106,27,134,87,83,117,153,127,105,20,225,89,90,103,167,88,116,124,166,115,74,103,161,94,100,107,161,94,17,90,166,112,96,103,163,89,107,108,166,115,73,104,253,113,73,96,182,113,89,120,252,113,119,78,188,117,78,65,181,95,90,100,249,117,77,107,254,101,123,99,167,95,74,28,166,101,116,99,189,102,116,24,164,117,74,90,166,95,100,85,255,117,73,66,166,89,116,107,186,102,100,123,251,95,16,127,167,88,100,65,185,94,74,100,188,117,77,99,254,101,74,100,249,117,73,116,255,113,89,108,252,115,100,116,253,114,103,108,183,101,89,123,165,113,73,70,184,114,100,124,184,117,77,29,225,81,70,85,185,14,79,84,162,104,21,101,174,102,81,91,157,72,113,103,149,113,97,73,139,85,102,116,152,123,19,105,129,88,14,114,185,82,98,68,253,84,109,94,237,16,1,68,171,30,25,15,249,8,16,29,248,4,69,27,251,12,18,78,250,95,17,20,255,8,71,29,237,16,1,93,174,69,79,66,174,88,1,23,180,30,64,66,162,81,66,67,171,30,25,15,191,85,77,74,237,65,15,15,188,89,77,89,155,85,78,72,237,6,18,27,253,15,18,25,246,15,23,28,250,10,21,80]},"encoding":"buffer","next":{"chunk":{"type":"Buffer","data":[129,254,1,74,26,187,21,55]},"encoding":"buffer","next":{"chunk":{"type":"Buffer"

Прямо перед смертью Node Red он присылает вот это:

e,"parser":null,"_httpMessage":null,"timeout":0},"_bufferedAmount":0,"_isServer":false,"_redirects":0,"_url":"wss://192.168.1.63:1961","_req":null} 8 Jun 13:59:38 - [info] [yandex-login:Яндекс Станция] ws.state: 3 8 Jun 13:59:38 - [info] [yandex-login:Яндекс Станция] Status update event: {"color":"yellow","text":"connecting..."} for __ 8 Jun 13:59:38 - [info] [yandex-login:Яндекс Станция] Connecting to wss://192.168.1.63:1961 8 Jun 13:59:38 - [info] [yandex-login:Яндекс Станция] Connected to 192.168.1.63, data: undefined 8 Jun 13:59:38 - [info] [yandex-login:Яндекс Станция] Status update event: {"color":"green","text":"connected"} for 8 Jun 13:59:38 - [info] [yandex-login:Яндекс Станция] connection of __ success! 8 Jun 13:59:46 - [red] Uncaught Exception: 8 Jun 13:59:46 - RangeError: Maximum call stack size exceeded at JSON.stringify () at Timeout.connect [as _onTimeout] (/home/pi/.node-red/node_modules/node-red-contrib-yandex-station-management/nodes/yandex-login.js:204:79) at listOnTimeout (internal/timers.js:556:17) at processTimers (internal/timers.js:497:7) nodered.service: Main process exited, code=exited, status=1/FAILURE nodered.service: Failed with result 'exit-code'. nodered.service: Service RestartSec=20s expired, scheduling restart. nodered.service: Scheduled restart job, restart counter is at 8. Stopped Node-RED graphical event wiring tool. Started Node-RED graphical event wiring tool. 8 Jun 14:00:08 - [info] Welcome to Node-RED 8 Jun 14:00:08 - [info] Node-RED version: v1.2.9 8 Jun 14:00:08 - [info] Node.js version: v12.22.1 8 Jun 14:00:08 - [info] Linux 5.10.17-v7l+ arm LE 8 Jun 14:00:08 - [info] Loading palette nodes Initializing HAP-NodeJS v0.9.4... 8 Jun 14:00:12 - [info] Settings file : /home/pi/.node-red/settings.js 8 Jun 14:00:12 - [info] Context store : 'default' [module=localfilesystem] 8 Jun 14:00:13 - [info] User directory : /home/pi/.node-red 8 Jun 14:00:13 - [warn] Projects disabled : editorTheme.projects.enabled=false 8 Jun 14:00:13 - [info] Flows file : /home/pi/.node-red/flows_raspberrypi.json 8 Jun 14:00:13 - [info] Server now running at http://127.0.0.1:1880/ 8 Jun 14:00:13 - [warn]

n0name45 commented 3 years ago

Привет! Напоминает старый баг, который я исправлял в одной из прошлых версий.

Скажи, пожалуйста, какая у тебя колонка, какая версия плагина и где запускаешь Нод-Ред(докер или нет)

earlywaff commented 3 years ago

Привет еще раз! Колонка подписочная Алиса большая (не знаю мало ли подписочная особенная, но на всякий указал) Версия плагина : 0.2.6 Node Red установлен на Raspberry pi 4 , не в доккере. Версия Node Red 1.2.9

n0name45 commented 2 years ago

Привет еще раз! Колонка подписочная Алиса большая (не знаю мало ли подписочная особенная, но на всякий указал) Версия плагина : 0.2.6 Node Red установлен на Raspberry pi 4 , не в доккере. Версия Node Red 1.2.9

Ищу еще пользователей со станцией по подписке.

n0name45 commented 2 years ago

@earlywaff выложи все-таки полный лог файлом или на какой-нибудь ресурс. Еще вопрос. У тебя работает один Node-red с установленным плагином?

earlywaff commented 2 years ago

Привет! Извини, что не отвечал. Я к сожалению больше так и не словил именно краша и перезагрузки. Был неделю назад один, но он был ночью и я не словил логи. Сейчас в основном просто нагрузка через htop шла до 100% на CPU. Без твоей ноды вроде бы все в пределах 5-10%. Сейчас обновил и поставил себе алерт на увеличение нагрузки до 50% , чтобы вовремя собрать логи. Обновился до 0.2.7 спасибо за то, что ты делаешь! Пару дней понаблюдаю. В чате нодреда в тг кстати тоже вроде был человек с колонкой арендной, но мини.

MaksimShakavin commented 2 years ago

Добрый день, я словил такую-же ошибку и тоже перезагрузку node-red Версия плагина: 0.3.0 Лог:

ек 10 05:23:38 wirenboard-ASWHWRGG Node-RED[6412]: 10 Dec 05:23:38 - [red] Uncaught Exception:
дек 10 05:23:38 wirenboard-ASWHWRGG Node-RED[6412]: 10 Dec 05:23:38 - [error] RangeError: Maximum call stack size exceeded
дек 10 05:23:38 wirenboard-ASWHWRGG Node-RED[6412]:     at JSON.stringify (<anonymous>)
дек 10 05:23:38 wirenboard-ASWHWRGG Node-RED[6412]:     at Timeout.connect [as _onTimeout] (/mnt/data/root/.node-red/node_modules/node-red-contrib-yandex-station-management/nodes/yandex-login.js:212:79)
дек 10 05:23:38 wirenboard-ASWHWRGG Node-RED[6412]:     at listOnTimeout (internal/timers.js:556:17)
дек 10 05:23:38 wirenboard-ASWHWRGG Node-RED[6412]:     at processTimers (internal/timers.js:497:7)

Попробую поставить более новую версию, в надежде, что ошибка исправлена

Update: похоже ошибка падает на команде JSON.stringify(device.ws). Минимальное гугление показывает, что такое возможно, если device.ws - слишком большой объект. Так же, мне кажется, проблема может быть в том, что device.ws содержит внутри себя циклические ссылки.

n0name45 commented 2 years ago

Привет! Сто лет такую ошибку не ловил уже. В последних апдейтах на блок подключения изменений не делал, только мелкие баги, поэтому надежды на обновление никакой. Дай больше описания по твоей инсталляции: 1. какая колонка(и) стоят? 2. Судя по времени, все произошло ночью, так? 3. Используется ли у тебя нода Station из набора? Это такая "слепая", где опции для каждой из колонок можно задавать? 4. Можешь выслать кусок лога, предшествующего ошибке? 12.12.2021, 23:40, Maksim < @. @. > Добрый день, я словил такую-же ошибку и тоже перезагрузку node-red Версия плагина: 0.3.0 Лог: ек 10 05:23:38 wirenboard-ASWHWRGG Node-RED[6412]: 10 Dec 05:23:38 - [red] Uncaught Exception:

дек 10 05:23:38 wirenboard-ASWHWRGG Node-RED[6412]: 10 Dec 05:23:38 - [error] RangeError: Maximum call stack size exceeded

дек 10 05:23:38 wirenboard-ASWHWRGG Node-RED[6412]: at JSON.stringify ()

дек 10 05:23:38 wirenboard-ASWHWRGG Node-RED[6412]: at Timeout.connect [as _onTimeout] (/mnt/data/root/.node-red/node_modules/node-red-contrib-yandex-station-management/nodes/yandex-login.js:212:79)

дек 10 05:23:38 wirenboard-ASWHWRGG Node-RED[6412]: at listOnTimeout (internal/timers.js:556:17)

дек 10 05:23:38 wirenboard-ASWHWRGG Node-RED[6412]: at processTimers (internal/timers.js:497:7) Попробую поставить более новую версию, в надежде, что ошибка исправлена — You are receiving this because you commented. Reply to this email directly, https://github.com/n0name45/node-red-contrib-yandex-station-management/issues/5#issuecomment-991949204 view it on GitHub, or https://github.com/notifications/unsubscribe-auth/AJP5V4PJEU6MBGC7YWNSCNDUQTUDPANCNFSM46KN2TIQ unsubscribe. Triage notifications on the go with GitHub Mobile for https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675 iOS or https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub Android.

MaksimShakavin commented 2 years ago

Стоит яндекс станция макс. Больше колонок нет. node v12.19.0 node-red v2.1.3 Да, произошло ночью. Используется только Yandex OUT, Station нет. В логах до этого ничего интересного. За 5 часов до этого на время отвалился робот-пылесос. За 4 часа до этого был реконект к spruthub mqtt. Судя по другим нодам, у меня похоже на какое-то супер маленькое время иногда отваливается сеть. Может быть в этом проблема. На всякий случай приложил лог за пару дней. nodered3.log

n0name45 commented 2 years ago

В логах без криминала, по крайней мере по моей части. Скажи какая у тебя загрузка процессора на WB? Вариант еще поставить галку дебаг в настройках сервер-ноды. Это там, где токен вводишь. Результат будет более информативен для понимания того, на каком моменте она зациклилась. Пока выглядит так что при обновлении колонка «пропала» как-то не так для ноды и та сошла сума) 13.12.2021, 14:39, Maksim < @. @. > Стоит яндекс станция макс. Больше колонок нет. node v12.19.0 node-red v2.1.3 Да, произошло ночью. Используется только Yandex OUT, Station нет. В логах до этого ничего интересного. За 5 часов до этого на время отвалился робот-пылесос. За 4 часа до этого был реконект к spruthub mqtt. Могу Судя по других нодам, у меня похоже на какое-то супер маленькое время иногда отваливается сеть. Может быть в этом проблема. На всякий случай приложил лог за пару дней. https://github.com/n0name45/node-red-contrib-yandex-station-management/files/7702619/nodered3.log nodered3.log — You are receiving this because you commented. Reply to this email directly, https://github.com/n0name45/node-red-contrib-yandex-station-management/issues/5#issuecomment-992278328 view it on GitHub, or https://github.com/notifications/unsubscribe-auth/AJP5V4PIEMPSPU3K6UB3LBDUQW5MZANCNFSM46KN2TIQ unsubscribe. Triage notifications on the go with GitHub Mobile for https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675 iOS or https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub Android.

MaksimShakavin commented 2 years ago

Добрый день, продолжаю периодически ловить данную ошибку. Только теперь с debug логами: nodered7.log я его немного почистил от каких-то непонятных логов из цифр