fix(iot): /ready отражает факт подписки MQTT (находка #3)

Было: main выставлял ready.SetBridge(true) ПЕРЕД bridge.Run, поэтому «соединён,
но подписка не прошла» давал /ready=200 и молча терял телеметрию до реконнекта.
Теперь bridge сам управляет флагом (колбэк onSubscribed): true только после
успешного SUBSCRIBE, false при потере соединения/сбое подписки.
This commit is contained in:
Repinoid
2026-10-10 19:10:44 +03:00
parent d7701f2845
commit 6ff5576e7d
2 changed files with 23 additions and 6 deletions
+4 -2
View File
@@ -118,9 +118,11 @@ func run() int {
go func() {
defer wg.Done()
ready.SetBridge(true)
// ready.SetBridge управляется самим bridge: true только после успешной
// подписки (находка #3). Иначе «соединён, но не подписан» давал /ready=200
// и молча терял телеметрию.
defer ready.SetBridge(false)
if err := bridge.Run(ctx, cfg, sqsClient, log); err != nil && !errors.Is(err, context.Canceled) {
if err := bridge.Run(ctx, cfg, sqsClient, log, ready.SetBridge); err != nil && !errors.Is(err, context.Canceled) {
log.Error("bridge stopped", "err", err)
fatal.Store(true)
cancel() // штатный shutdown, затем выход ≠ 0