fix(iot): /ready отражает факт подписки MQTT (находка #3)
Было: main выставлял ready.SetBridge(true) ПЕРЕД bridge.Run, поэтому «соединён, но подписка не прошла» давал /ready=200 и молча терял телеметрию до реконнекта. Теперь bridge сам управляет флагом (колбэк onSubscribed): true только после успешного SUBSCRIBE, false при потере соединения/сбое подписки.
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user