Skip to content

v1.5.2: при нажатии Logcat падает websocket (RangeError: Invalid array length), socket.io уходит в 502 #403

@ZoltonDaniil

Description

@ZoltonDaniil

Версия DeviceHub

  • vkcom/devicehub:v1.5.2 (официальный образ, без кастомных патчей)

Схема развертывания

  • Control Plane за nginx (https://...)
  • Воркер подключается с отдельного хоста (Windows + Docker), тоже на официальном v1.5.2
  • Локальные исходники DeviceHub не изменялись

Проблема

При нажатии кнопки Logcat в UI:

  1. websocket-юнит выбрасывает RangeError: Invalid array length
  2. процесс websocket перезапускается
  3. nginx начинает отдавать 502 на /socket.io/
  4. кнопка Logcat в UI остается “включенной”, но логи не приходят

Ожидаемое поведение

  • Logcat запускается и начинает стримить логи
  • websocket остается в рабочем состоянии
  • нет циклических обрывов/reconnect по socket.io

Фактическое поведение

  • websocket падает на logcat.start
  • стрим логов не начинается
  • сокет отваливается, UI застревает в некорректном состоянии

Шаги воспроизведения

  1. Открыть устройство в DeviceHub UI
  2. Нажать запуск Logcat
  3. Проверить логи websocket-контейнера и nginx

Логи websocket (ключевой фрагмент)

... WRN/wire:legacy [] Legacy contstructor lookup for LogcatStartMessage ... /app/node_modules/@protobuf-ts/runtime/build/commonjs/reflection-merge-partial.js:52 output[name].length = fieldValue.length; // resize target array to match source array RangeError: Invalid array length at reflectionMergePartial (.../reflection-merge-partial.js:52:33) at LogcatStartMessage$Type.create (file:///app/.build/lib/wire/wire.js:5561:13) at new constructor (file:///app/.build/lib/wire/index.js:19:41) at Socket.<anonymous> (file:///app/.build/lib/units/websocket/index.js:1100:59)

Логи nginx в этот же момент

... connect() failed (111: Connection refused) while connecting to upstream request: "GET /socket.io/?EIO=4&transport=websocket HTTP/1.1" upstream: "http://<ip-websocket-контейнера>:3000/socket.io/?EIO=4&transport=websocket" ... "GET /socket.io/?EIO=4&transport=websocket HTTP/1.1" 502

Дополнение (возможная причина)

LogcatStartMessage ожидает repeated LogcatFilter filters (массив), но в runtime-пути для logcat.start похоже приходит не-массив в filters, из-за чего protobuf-ts падает при merge repeated-поля.

Просьба подтвердить ожидаемый payload для logcat.start в v1.5.2 и сообщить, известна ли эта регрессия.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions