Skip to content

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

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
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions