Неожиданный случай замены Твин - PullRequest
0 голосов
/ 15 января 2020

У нас есть приложение Azure IoT, в котором как конечные устройства, так и сервер записывают данные в двойники устройств для обмена информацией. Сервер подписывается на события смены близнецов на концентраторе и получает в основном либо:

  • События устройства (в этом случае двойник содержит что-то вроде:
{"version":9,"properties":{"reported":{ ... }}}

сервер реагирует на них, проверяя, установлены ли указанные свойства.

  • События сервера (в данном случае двойник содержит что-то вроде):
{"version":10,"properties":{"desired":{ ... }}}

Эти изменения были в основном написано тем же сервером и обычно игнорируется в обработчике.

Теперь неожиданно я получил что-то, что описывается здесь и здесь как "событие двойной замены", которое получилось так:

{"deviceId":"636839","etag":"AAAAAAAAAAY=","version":8,"properties":{"desired":{ ... }, "reported": { ... } }}.

Это произошло после быстрой записи в близнеца с обеих сторон и окончательного вызова registryManager.RemoveDeviceAsync(serial). Это событие в основном сбило с толку сервер, так как оно содержало данные о двойнике, который только что был незарегистрированный. Сервер попытался отреагировать на сообщенную часть и записать нужные свойства, но потерпел неудачу, поскольку близнеца больше не было.

Такого никогда не было. случалось раньше (приложение работает уже полгода), и я не вижу подобных событий в журналах после того, как это произошло.

Возможно, кто-то может помочь мне понять, когда инициируются такие "события замены" ? Я в основном понимаю, кто они, но могут ли они быть отправлены центром как реакция на ... что-то? Никто не менял метки, никто не пытался заменить весь близнец. Так почему это могло произойти? Есть намеки?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...