Edge-home-orchestration-go: [DataStorage] не может найти устройство в кеше

Созданный на 8 июн. 2021  ·  10Комментарии  ·  Источник: lf-edge/edge-home-orchestration-go

Опишите ошибку
Edge-orchestration не может найти устройство в кэше, если edge-orchestration регистрирует конфигурацию устройства в edgex впервые. Работает после перезагрузки.

Воспроизводить

  1. Очистить базу данных Redis
  2. Запуск пограничной оркестрации с файлами конфигурации DataStorage
  3. Вызов API с точки зрения загрузки значения Int

Журнал из Edge-Orchestration

level=INFO ts=2021-06-08T11:09:41.747141457Z app=datastorage source=config.go:193 msg="Loaded configuration from ./res/configuration.toml"

level=INFO ts=2021-06-08T11:09:41.748290804Z app=datastorage source=config.go:304 msg="Using local configuration from file (0 envVars overrides applied)"
level=INFO ts=2021-06-08T11:09:41.748336679Z app=datastorage source=httpserver.go:99 msg="Web server starting (127.0.0.1:49986)"
level=INFO ts=2021-06-08T11:09:41.748393149Z app=datastorage source=init.go:144 msg="Check Metadata service's status by ping..."
level=INFO ts=2021-06-08T11:09:41.748528479Z app=datastorage source=init.go:144 msg="Check Data service's status by ping..."
level=INFO ts=2021-06-08T11:09:41.749614627Z app=datastorage source=init.go:68 msg="Service clients initialize successful."
level=INFO ts=2021-06-08T11:09:41.750747311Z app=datastorage source=service.go:207 msg="Addressable datastorage doesn't exist, creating a new one"
level=DEBUG ts=2021-06-08T11:09:41.751916563Z app=datastorage source=service.go:153 msg="Trying to find DeviceService: datastorage"
level=INFO ts=2021-06-08T11:09:41.752643978Z app=datastorage source=service.go:157 msg="DeviceService datastorage doesn't exist, creating a new one"
level=DEBUG ts=2021-06-08T11:09:41.754344754Z app=datastorage source=service.go:169 msg="New DeviceService Id: 6faac9ac-6ec1-41ee-8661-927954bb7ea1"
INFO[2021-06-08T11:09:41Z]storagedriver.go:43 Initialize [storagedriver] Device service intialize started
level=DEBUG ts=2021-06-08T11:09:41.75790956Z app=datastorage source=restrouter.go:119 route=/api/v1/resource/{deviceName}/{resourceName} methods=[POST] msg="Route added"
level=INFO ts=2021-06-08T11:09:41.757963324Z app=datastorage source=storagehandler.go:66 msg="Route /api/v1/resource/{deviceName}/{resourceName} added."
level=INFO ts=2021-06-08T11:09:41.759800964Z app=datastorage source=restrouter.go:75 msg="Registering v2 routes..."
level=DEBUG ts=2021-06-08T11:09:41.76021791Z app=datastorage source=profiles.go:47 msg="created absolute path for loading pre-defined Device Profiles: /edge-orchestration/res"
level=DEBUG ts=2021-06-08T11:09:41.76330122Z app=datastorage source=profiles.go:172 msg="Getting EnableValueDescriptorManagement configuration value from Core Metadata"
level=DEBUG ts=2021-06-08T11:09:41.763993203Z app=datastorage source=devices.go:29 msg="Loading pre-define Devices from configuration"
level=DEBUG ts=2021-06-08T11:09:41.764037017Z app=datastorage source=devices.go:35 msg="Device datastorage doesn't exist, creating a new one"
level=DEBUG ts=2021-06-08T11:09:41.764581907Z app=datastorage source=devices.go:75 msg="Adding Device: {\"origin\":1623150581764,\"description\":\"RESTful Device\",\"name\":\"datastorage\",\"adminState\":\"UNLOCKED\",\"operatingState\":\"ENABLED\",\"protocols\":{\"other\":{}},\"labels\":[\"rest\",\"json\"],\"service\":{\"origin\":1623150581751,\"id\":\"6faac9ac-6ec1-41ee-8661-927954bb7ea1\",\"name\":\"datastorage\",\"operatingState\":\"ENABLED\",\"addressable\":{\"origin\":1623150581749,\"id\":\"7b016ca7-5b53-4aa3-88e5-6f4a0b484271\",\"name\":\"datastorage\",\"protocol\":\"HTTP\",\"method\":\"POST\",\"address\":\"127.0.0.1\",\"port\":49986,\"path\":\"/api/v1/callback\",\"baseURL\":\"http://127.0.0.1:49986\",\"url\":\"http://127.0.0.1:49986/api/v1/callback\"},\"adminState\":\"UNLOCKED\"},\"profile\":{\"description\":\"REST Device\",\"id\":\"3b356db4-fe39-4dc4-bd25-8bebef5e15ce\",\"name\":\"datastorage\",\"manufacturer\":\"Home Edge\",\"model\":\"Home Edge\",\"labels\":[\"rest\",\"json\",\"numeric\",\"float\",\"int\"],\"deviceResources\":[{\"description\":\"json\",\"name\":\"json\",\"properties\":{\"value\":{\"type\":\"String\",\"readWrite\":\"RW\",\"mediaType\":\"application/json\"},\"units\":{\"type\":\"String\",\"readWrite\":\"R\"}}},{\"name\":\"int\",\"properties\":{\"value\":{\"type\":\"Int64\",\"readWrite\":\"RW\",\"mediaType\":\"text/plain\"},\"units\":{\"type\":\"String\",\"readWrite\":\"R\"}}},{\"description\":\"float\",\"name\":\"float\",\"properties\":{\"value\":{\"type\":\"Float64\",\"readWrite\":\"RW\",\"mediaType\":\"text/plain\"},\"units\":{\"type\":\"String\",\"readWrite\":\"R\"}}},{\"description\":\"jpeg\",\"name\":\"jpeg\",\"properties\":{\"value\":{\"type\":\"Binary\",\"readWrite\":\"RW\",\"mediaType\":\"image/jpeg\"},\"units\":{\"type\":\"String\",\"readWrite\":\"R\"}}},{\"description\":\"png\",\"name\":\"png\",\"properties\":{\"value\":{\"type\":\"Binary\",\"readWrite\":\"RW\",\"mediaType\":\"image/png\"},\"units\":{\"type\":\"String\",\"readWrite\":\"R\"}}},{\"description\":\"string\",\"name\":\"string\",\"properties\":{\"value\":{\"type\":\"String\",\"readWrite\":\"RW\",\"mediaType\":\"text/plain\"},\"units\":{\"type\":\"String\",\"readWrite\":\"R\"}}}]}}"
level=INFO ts=2021-06-08T11:09:41.766971106Z app=datastorage source=autodiscovery.go:32 msg="AutoDiscovery stopped: disabled by configuration"
level=INFO ts=2021-06-08T11:09:41.767031297Z app=datastorage source=autodiscovery.go:37 msg="AutoDiscovery stopped: interval error in configuration"
level=INFO ts=2021-06-08T11:09:41.76706353Z app=datastorage source=autodiscovery.go:41 msg="AutoDiscovery stopped: ProtocolDiscovery not implemented"
level=INFO ts=2021-06-08T11:09:41.767094873Z app=datastorage source=message.go:50 msg="Service dependencies resolved..."
level=INFO ts=2021-06-08T11:09:41.767156624Z app=datastorage source=message.go:51 msg="Starting datastorage to be replaced by makefile "
level=INFO ts=2021-06-08T11:09:41.767182718Z app=datastorage source=message.go:58 msg="Service started in: 20.913936ms"


level=DEBUG ts=2021-06-08T11:09:51.973581107Z app=datastorage source=storagehandler.go:84 msg="Received POST for Device=datastorage Resource=int"
level=INFO ts=2021-06-08T11:09:51.973670443Z app=datastorage source=manageddevices.go:71 msg="Device datastorage cannot be found in cache"
level=ERROR ts=2021-06-08T11:09:51.973714012Z app=datastorage source=storagehandler.go:88 msg="Incoming reading ignored. Device 'datastorage' not found"

Конфигурация тестовой среды (заполните следующую информацию):

  • Версия прошивки: Ubuntu 20.04
  • Аппаратное обеспечение: x86-64
  • Релиз Edge Orchestration: Coconut
bug help wanted high priority

Самый полезный комментарий

.search-word {
ЦВЕТ ФОНА: # ffee94
}
П {
РАЗМЕР ШРИФТА: 10pt; ПОЛЯ-НИЖНИЙ: 5 пикселей; FONT-FAMILY: Arial, Arial; ВЕРХНЯЯ ПОЛЯ: 5 пикселей
}
TD {
РАЗМЕР ШРИФТА: 10pt; ПОЛЯ-НИЖНИЙ: 5 пикселей; FONT-FAMILY: Arial, Arial; ВЕРХНЯЯ ПОЛЯ: 5 пикселей
}
LI {
РАЗМЕР ШРИФТА: 10pt; ПОЛЯ-НИЖНИЙ: 5 пикселей; FONT-FAMILY: Arial, Arial; ВЕРХНЯЯ ПОЛЯ: 5 пикселей
}
ТЕЛО {
РАЗМЕР ШРИФТА: 10pt; FONT-FAMILY: Arial, Arial
}

П {
РАЗМЕР ШРИФТА: 10pt; ПОЛЯ-НИЖНИЙ: 5 пикселей; FONT-FAMILY: Arial, Arial; ВЕРХНЯЯ ПОЛЯ: 5 пикселей
}


Привет Питер,

Проблема не со стороны EdgeX. После обсуждения с Cloud Tsai я понял, что это использование неправильного IP-адреса, из-за которого coredata не может вызвать обратный вызов и, следовательно, кеш не обновляется. Для локального компьютера проблема решается с помощью IP-адреса docker0, который я тестировал.
Но теперь проблема заключается в том, что Taewan очень хорошо упомянул, что EdgeX работает независимо на одном устройстве, а Edge-Orchestration работает на другом устройстве, подключенном к сети. Так что это должно быть проверено независимо от проблемы с кешем. Я пытаюсь сделать то же самое. Хотя я тестировал аналогичный сценарий с обычным докером pinging (alpine) и смог настроить связь с использованием оверлейной сети. Теперь мне нужно попробовать граничную оркестровку.

С уважением
Ниту

--------- Исходное сообщение ---------
Отправитель: Питер Мунки @ . >Дата: 07.09.2021, 07:46 (GMT + 5: 30)Заголовок: Re: [lf-edge / edge-home-orchestration-go] [DataStorage] не может найти устройство в кеше (# 312)Кому: * @ . >
CC: Nitu Sajjanlal @ . >, @ . * >

@ nitu-s-gupta Что вы думаете о решении этой проблемы в HomeEdge вместо того, чтобы запрашивать ее в EdgeX, поскольку мне кажется, что обоснование нашего запроса конфликтует с существующим device-sdk-go в EdgeX?
- Вы получили это, потому что были упомянуты. Ответьте на это письмо напрямую, просмотрите его на GitHub или откажитесь от подписки. Отслеживайте уведомления на ходу с помощью GitHub Mobile для iOS или Android.

Все 10 Комментарий

Привет @ t25kim ,

Я воспроизвел ошибку. Это происходит всякий раз, когда мы пытаемся добавить новое устройство.

Пример :

  1. Если мы редактируем имя профиля YAML
  2. Отредактируйте имя устройства в файле конфигурации

Это устройство не будет обнаружено, пока мы не построим его во второй раз. Я пробовал это несколько раз, и эта проблема кажется постоянной. Я проверяю, была ли это проблема с выпуском в Ханое или это нужно сделать с нашей стороны.

Привет @ t25kim ,

Я воспроизвел ошибку. Это происходит всякий раз, когда мы пытаемся добавить новое устройство.

Пример :

  1. Если мы редактируем имя профиля YAML
  2. Отредактируйте имя устройства в файле конфигурации

Это устройство не будет обнаружено, пока мы не построим его во второй раз. Я пробовал это несколько раз, и эта проблема кажется постоянной. Я проверяю, была ли это проблема с выпуском в Ханое или это нужно сделать с нашей стороны.

Спасибо @ sun-sharma.
У меня была такая же проблема с EdgeX v2.0.0. Пожалуйста, проверьте это с PR # 326.

Эта проблема возникает на стороне EdgeX. Когда служба запускается, устройства, уже присутствующие в метаданных, загружаются в кеш. Но добавленные устройства не добавляются в кеш. Следовательно, этого не происходит после перезагрузки. Я пробовал с device-rest.go. Наблюдал такое же поведение. Требуются изменения в device-sdk литейного завода edgex. Файлы, которые я проверил (/internal/provision/devices.go) устройства sdk, если edgexfoundry. Это вызывается при запуске устройства.

Эта проблема возникает на стороне EdgeX. Когда служба запускается, устройства, уже присутствующие в метаданных, загружаются в кеш. Но добавленные устройства не добавляются в кеш. Следовательно, этого не происходит после перезагрузки. Я пробовал с device-rest.go. Наблюдал такое же поведение. Требуются изменения в device-sdk литейного завода edgex. Файлы, которые я проверил (/internal/provision/devices.go) устройства sdk, если edgexfoundry. Это вызывается при запуске устройства.

@ nitu-s-gupta Как насчет того, чтобы подойти со мной к EdgeX и попытаться решить эту проблему? 😄

Эта проблема возникает на стороне EdgeX. Когда служба запускается, устройства, уже присутствующие в метаданных, загружаются в кеш. Но добавленные устройства не добавляются в кеш. Следовательно, этого не происходит после перезагрузки. Я пробовал с device-rest.go. Наблюдал такое же поведение. Требуются изменения в device-sdk литейного завода edgex. Файлы, которые я проверил (/internal/provision/devices.go) устройства sdk, если edgexfoundry. Это вызывается при запуске устройства.

Спасибо за ваши усилия!
Поясню более подробно, edgex-metadata должен отправлять запрос (руководство неверно) в сервис для обновления кеша. Однако edgex-metadata этого не делает.
Когда я вызвал этот REST API в хранилище данных, кеш был обновлен.

данные метаданных edgex

curl http://localhost:48081/api/v1/device
[{"created":1629351516733,"modified":1629351516733,"origin":1629351516731,"description":"RESTful Device","id":"774deba4-5469-4c38-8c2a-93a0f3c08252","name":"edge-orchestration-c1b23cc6-0767-400a-9cf0-36e1b3902da2",

CURL Запрос

$ curl -X 'POST' ' http: // localhost : 49986 / api / v1 / callback' -H 'accept: / ' -H 'Content-Type: application / json' -d '{"type": "DEVICE "," id ":" 774deba4-5469-4c38-8c2a-93a0f3c08252 "} '

Журнал Edge Orchestration

INFO[2021-08-19T06:01:36Z]discovery.go:577 func1
level=INFO ts=2021-08-19T06:02:25.506828567Z app=datastorage source=device.go:72 msg="Added device: edge-orchestration-c1b23cc6-0767-400a-9cf0-36e1b3902da2"
INFO[2021-08-19T06:02:25Z]storagedriver.go:73 AddDevice [storagedriver] Device has been successfully added!!!!!! edge-orchestration-c1b23cc6-0767-400a-9cf0-36e1b3902da2
level=DEBUG ts=2021-08-19T06:02:25.50692288Z app=datastorage source=device.go:82 msg="Invoked driver.AddDevice callback for edge-orchestration-c1b23cc6-0767-400a-9cf0-36e1b3902da2"
level=DEBUG ts=2021-08-19T06:02:25.50693632Z app=datastorage source=device.go:89 msg="Handler - starting AutoEvents for device edge-orchestration-c1b23cc6-0767-400a-9cf0-36e1b3902da2"

Я думаю, что edgex будет исправлен, или мы можем добавить некоторый обходной код в хранилище данных.
Что ты предпочитаешь? (Совместное использование этой проблемы в edgex полезно для совместной работы с открытым исходным кодом.

@ t25kim Как насчет того, чтобы поднять проблему в edgex github устройства sdk ?, чтобы его можно было обновить. Временное решение может быть выполнено, например, при вызове API. Но я заметил еще одну вещь: у нас есть обратные вызовы storagedriver, которые должны вызываться при добавлении устройства. Но это тоже не вызывается, так как туда будут включены этапы работы.

Эта проблема возникает на стороне EdgeX. Когда служба запускается, устройства, уже присутствующие в метаданных, загружаются в кеш. Но добавленные устройства не добавляются в кеш. Следовательно, этого не происходит после перезагрузки. Я пробовал с device-rest.go. Наблюдал такое же поведение. Требуются изменения в device-sdk литейного завода edgex. Файлы, которые я проверил (/internal/provision/devices.go) устройства sdk, если edgexfoundry. Это вызывается при запуске устройства.

Спасибо за ваши усилия!
Поясню более подробно, edgex-metadata должен отправлять запрос (руководство неверно) в сервис для обновления кеша. Однако edgex-metadata этого не делает.
Когда я вызвал этот REST API в хранилище данных, кеш был обновлен.

данные метаданных edgex

curl http://localhost:48081/api/v1/device
[{"created":1629351516733,"modified":1629351516733,"origin":1629351516731,"description":"RESTful Device","id":"774deba4-5469-4c38-8c2a-93a0f3c08252","name":"edge-orchestration-c1b23cc6-0767-400a-9cf0-36e1b3902da2",

CURL Запрос

$ curl -X 'POST' http: // localhost : 49986 / api / v1 / callback '-H' accept: _ / _ '-H' Content-Type: application / json '-d' {"type": "УСТРОЙСТВО", "идентификатор": "774deba4-5469-4c38-8c2a-93a0f3c08252"} '

Журнал Edge Orchestration

INFO[2021-08-19T06:01:36Z]discovery.go:577 func1
level=INFO ts=2021-08-19T06:02:25.506828567Z app=datastorage source=device.go:72 msg="Added device: edge-orchestration-c1b23cc6-0767-400a-9cf0-36e1b3902da2"
INFO[2021-08-19T06:02:25Z]storagedriver.go:73 AddDevice [storagedriver] Device has been successfully added!!!!!! edge-orchestration-c1b23cc6-0767-400a-9cf0-36e1b3902da2
level=DEBUG ts=2021-08-19T06:02:25.50692288Z app=datastorage source=device.go:82 msg="Invoked driver.AddDevice callback for edge-orchestration-c1b23cc6-0767-400a-9cf0-36e1b3902da2"
level=DEBUG ts=2021-08-19T06:02:25.50693632Z app=datastorage source=device.go:89 msg="Handler - starting AutoEvents for device edge-orchestration-c1b23cc6-0767-400a-9cf0-36e1b3902da2"

Я думаю, что edgex будет исправлен, или мы можем добавить некоторый обходной код в хранилище данных.
Что ты предпочитаешь? (Совместное использование этой проблемы в edgex полезно для совместной работы с открытым исходным кодом.

@jpwhitemn Привет, мы столкнулись с проблемой хранилища данных, связанной с EdgeX Foundry. Не могли бы вы представить нам подходящего человека из сообщества EdgeX для обсуждения и / или решения этой темы? 😄

Как насчет того, чтобы поднять проблему в edgex github устройства sdk ?, чтобы его можно было обновить. Временное решение может быть выполнено, например, при вызове API. Но я заметил еще одну вещь: у нас есть обратные вызовы storagedriver, которые должны вызываться при добавлении устройства. Но это тоже не вызывается, так как туда будут включены этапы работы.

Я согласен поделиться этой проблемой с edgex. Однако, если патч не реализован на edgex до выхода home edge d-release, давайте исправим его на Edge Orchestration.

.search-word {
ЦВЕТ ФОНА: # ffee94
}
П {
РАЗМЕР ШРИФТА: 10pt; ПОЛЯ-НИЖНИЙ: 5 пикселей; FONT-FAMILY: Arial, Arial; ВЕРХНЯЯ ПОЛЯ: 5 пикселей
}
TD {
РАЗМЕР ШРИФТА: 10pt; ПОЛЯ-НИЖНИЙ: 5 пикселей; FONT-FAMILY: Arial, Arial; ВЕРХНЯЯ ПОЛЯ: 5 пикселей
}
LI {
РАЗМЕР ШРИФТА: 10pt; ПОЛЯ-НИЖНИЙ: 5 пикселей; FONT-FAMILY: Arial, Arial; ВЕРХНЯЯ ПОЛЯ: 5 пикселей
}
ТЕЛО {
РАЗМЕР ШРИФТА: 10pt; FONT-FAMILY: Arial, Arial
}

П {
РАЗМЕР ШРИФТА: 10pt; ПОЛЯ-НИЖНИЙ: 5 пикселей; FONT-FAMILY: Arial, Arial; ВЕРХНЯЯ ПОЛЯ: 5 пикселей
}


Привет Питер,

Проблема не со стороны EdgeX. После обсуждения с Cloud Tsai я понял, что это использование неправильного IP-адреса, из-за которого coredata не может вызвать обратный вызов и, следовательно, кеш не обновляется. Для локального компьютера проблема решается с помощью IP-адреса docker0, который я тестировал.
Но теперь проблема заключается в том, что Taewan очень хорошо упомянул, что EdgeX работает независимо на одном устройстве, а Edge-Orchestration работает на другом устройстве, подключенном к сети. Так что это должно быть проверено независимо от проблемы с кешем. Я пытаюсь сделать то же самое. Хотя я тестировал аналогичный сценарий с обычным докером pinging (alpine) и смог настроить связь с использованием оверлейной сети. Теперь мне нужно попробовать граничную оркестровку.

С уважением
Ниту

--------- Исходное сообщение ---------
Отправитель: Питер Мунки @ . >Дата: 07.09.2021, 07:46 (GMT + 5: 30)Заголовок: Re: [lf-edge / edge-home-orchestration-go] [DataStorage] не может найти устройство в кеше (# 312)Кому: * @ . >
CC: Nitu Sajjanlal @ . >, @ . * >

@ nitu-s-gupta Что вы думаете о решении этой проблемы в HomeEdge вместо того, чтобы запрашивать ее в EdgeX, поскольку мне кажется, что обоснование нашего запроса конфликтует с существующим device-sdk-go в EdgeX?
- Вы получили это, потому что были упомянуты. Ответьте на это письмо напрямую, просмотрите его на GitHub или откажитесь от подписки. Отслеживайте уведомления на ходу с помощью GitHub Mobile для iOS или Android.

Спасибо за ваше любезное разъяснение, @ nitu-s-gupta 😄

Была ли эта страница полезной?
0 / 5 - 0 рейтинги