Версия DeviceHub
vkcom/devicehub:v1.5.2 (официальный образ, без кастомных патчей)
Схема развертывания
- Control Plane за nginx (
https://...)
- Воркер подключается с отдельного хоста (Windows + Docker), тоже на официальном
v1.5.2
- Локальные исходники DeviceHub не изменялись
Проблема
При нажатии кнопки Logcat в UI:
- websocket-юнит выбрасывает
RangeError: Invalid array length
- процесс websocket перезапускается
- nginx начинает отдавать
502 на /socket.io/
- кнопка Logcat в UI остается “включенной”, но логи не приходят
Ожидаемое поведение
- Logcat запускается и начинает стримить логи
- websocket остается в рабочем состоянии
- нет циклических обрывов/reconnect по socket.io
Фактическое поведение
- websocket падает на
logcat.start
- стрим логов не начинается
- сокет отваливается, UI застревает в некорректном состоянии
Шаги воспроизведения
- Открыть устройство в DeviceHub UI
- Нажать запуск Logcat
- Проверить логи 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 и сообщить, известна ли эта регрессия.