Edge-home-orchestration-go: [DataStorage] ne peut pas trouver le périphérique dans le cache

Créé le 8 juin 2021  ·  10Commentaires  ·  Source: lf-edge/edge-home-orchestration-go

Décrivez le bogue
L'orchestration de bord ne peut pas trouver le périphérique dans le cache si l'orchestration de bord enregistre la configuration du périphérique sur edgex pour la première fois. Cela fonctionne après le redémarrage.

Reproduire

  1. Effacer la base de données Redis
  2. Exécutez l'orchestration périphérique avec les fichiers de configuration DataStorage
  3. Appeler une API en termes de téléchargement de la valeur Int

Journal de bord-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"

Configuration de l'environnement de test (veuillez compléter les informations suivantes) :

  • Version du micrologiciel : Ubuntu 20.04
  • Matériel : x86-64
  • Version Edge Orchestration : Noix de coco
bug help wanted high priority

Commentaire le plus utile

.mot-recherche {
COULEUR DE FOND : #ffee94
}
P {
TAILLE DE LA POLICE : 10 pt ; MARGE-BAS : 5px ; FONT-FAMILLE : Arial, arial ; MARGE-TOP : 5px
}
TD {
TAILLE DE LA POLICE : 10 pt ; MARGE-BAS : 5px ; FONT-FAMILLE : Arial, arial ; MARGE-TOP : 5px
}
LI {
TAILLE DE LA POLICE : 10 pt ; MARGE-BAS : 5px ; FONT-FAMILLE : Arial, arial ; MARGE-TOP : 5px
}
CORPS {
TAILLE DE LA POLICE : 10 pt ; FONT-FAMILLE : Arial, arial
}

P {
TAILLE DE LA POLICE : 10 pt ; MARGE-BAS : 5px ; FONT-FAMILLE : Arial, arial ; MARGE-HAUT : 5px
}


Bonjour Peter,

Le problème ne vient pas du côté EdgeX. Après avoir discuté avec Cloud Tsai, j'ai compris que c'était l'utilisation d'une mauvaise adresse IP à cause de laquelle les coredata n'étaient pas en mesure d'appeler le rappel et donc le cache ne se met pas à jour. Pour la machine locale, le problème est résolu en utilisant l'adresse IP docker0 comme je l'ai testé.
Mais maintenant, le problème est le scénario que Taewan a très bien mentionné EdgeX s'exécutant indépendamment sur un appareil et Edge-Orchestration s'exécutant sur un autre appareil connecté en réseau. Cela doit donc être testé quel que soit le problème de cache. J'essaie de faire cette configuration similaire. Bien que j'ai testé le scénario similaire avec un docker de ping normal (alpin) et que j'ai pu configurer la communication à l'aide d'un réseau superposé. Maintenant, je dois essayer l'orchestration de bord.

Merci & Cordialement
Nitu

--------- Message d'origine ---------
Expéditeur : Peter Moonki @ . >Date : 2021-09-07 07:46 (GMT+5:30)Titre : Re : [lf-edge/edge-home-orchestration-go] [DataStorage] ne peut pas trouver le périphérique dans le cache (#312)À : * @ . >
CC : Nitu Sajjanlal @ . >, @ .* >

@nitu-s-gupta Que pensez-vous de résoudre ce problème à partir de HomeEdge au lieu de le demander à EdgeX, car il me semble que la justification de notre demande est en conflit avec le périphérique-sdk-go existant chez EdgeX ?
—Vous recevez ceci parce que vous avez été mentionné.Répondez directement à cet e-mail, affichez-le sur GitHub ou désabonnez-vous.Trier les notifications en déplacement avec GitHub Mobile pour iOS ou Android.

Tous les 10 commentaires

Salut @t25kim ,

J'ai reproduit le bug. Cela se produit également chaque fois que nous essayons d'ajouter un nouvel appareil.

Exemple :

  1. Si nous modifions le nom du profil YAML
  2. Modifiez le nom de l'appareil dans le fichier de configuration

Cet appareil ne serait pas découvert avant la deuxième construction. J'ai essayé plusieurs fois et ce problème semble être cohérent. Je vérifie s'il s'agit d'un problème avec la sortie de Hanoi ou si cela doit être fait de notre côté.

Salut @t25kim ,

J'ai reproduit le bug. Cela se produit également chaque fois que nous essayons d'ajouter un nouvel appareil.

Exemple :

  1. Si nous modifions le nom du profil YAML
  2. Modifiez le nom de l'appareil dans le fichier de configuration

Cet appareil ne serait pas découvert avant la deuxième construction. J'ai essayé plusieurs fois et ce problème semble être cohérent. Je vérifie s'il s'agit d'un problème avec la sortie de Hanoi ou si cela doit être fait de notre côté.

Merci @sun-sharma.
J'ai eu le même problème avec EdgeX v2.0.0. Veuillez le tester avec le PR #326.

Ce problème vient du côté EdgeX, au démarrage du service, les appareils déjà présents dans les métadonnées sont chargés dans le cache. Mais les périphériques qui sont ajoutés ne sont pas ajoutés au cache. Par conséquent, cela ne se produit pas après le redémarrage. J'ai essayé avec device-rest.go. Observé le même comportement. Des modifications sont nécessaires dans le périphérique-sdk de la fonderie edgex. Les fichiers que j'ai vérifiés (/internal/provision/devices.go) du périphérique sdk si edgexfoundry. Ceci est appelé au démarrage de l'appareil.

Ce problème vient du côté EdgeX, au démarrage du service, les appareils déjà présents dans les métadonnées sont chargés dans le cache. Mais les périphériques qui sont ajoutés ne sont pas ajoutés au cache. Par conséquent, cela ne se produit pas après le redémarrage. J'ai essayé avec device-rest.go. Observé le même comportement. Des modifications sont nécessaires dans le périphérique-sdk de la fonderie edgex. Les fichiers que j'ai vérifiés (/internal/provision/devices.go) du périphérique sdk si edgexfoundry. Ceci est appelé au démarrage de l'appareil.

@nitu-s-gupta Que diriez-vous d'approcher EdgeX avec moi et d'essayer de résoudre ce problème ? ??

Ce problème vient du côté EdgeX, au démarrage du service, les appareils déjà présents dans les métadonnées sont chargés dans le cache. Mais les périphériques qui sont ajoutés ne sont pas ajoutés au cache. Par conséquent, cela ne se produit pas après le redémarrage. J'ai essayé avec device-rest.go. Observé le même comportement. Des modifications sont nécessaires dans le périphérique-sdk de la fonderie edgex. Les fichiers que j'ai vérifiés (/internal/provision/devices.go) du périphérique sdk si edgexfoundry. Ceci est appelé au démarrage de l'appareil.

Merci pour votre effort!
Laissez-moi vous expliquer plus en détail, edgex-metadata devrait envoyer une demande (le guide est incorrect) au service de mise à jour du cache. Cependant, edgex-metadata ne le fait pas.
Lorsque j'ai appelé cette API REST pour le stockage de données, le cache a été mis à jour.

données de métadonnées 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",

Demande 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"}'

Journal d'orchestration Edge

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"

Je pense qu'edgex serait corrigé ou que nous pourrions ajouter un code de contournement au stockage de données.
Que préfères-tu? (Partager ce problème avec edgex est bon pour la collaboration open source

@ t25kim Que diriez-vous de soulever un problème dans edgex github du périphérique sdk ?, afin qu'il puisse être mis à jour. La solution de contournement peut être effectuée comme appeler l'API. Mais une autre chose que j'ai remarquée est storagedriver, nous avons des rappels, ceux-ci doivent être invoqués lorsque le périphérique est ajouté. Mais cela non plus n'est pas invoqué, car les étapes de travail autour y seraient incluses

Ce problème vient du côté EdgeX, au démarrage du service, les appareils déjà présents dans les métadonnées sont chargés dans le cache. Mais les périphériques qui sont ajoutés ne sont pas ajoutés au cache. Par conséquent, cela ne se produit pas après le redémarrage. J'ai essayé avec device-rest.go. Observé le même comportement. Des modifications sont nécessaires dans le périphérique-sdk de la fonderie edgex. Les fichiers que j'ai vérifiés (/internal/provision/devices.go) du périphérique sdk si edgexfoundry. Ceci est appelé au démarrage de l'appareil.

Merci pour votre effort!
Laissez-moi vous expliquer plus en détail, edgex-metadata devrait envoyer une demande (le guide est incorrect) au service de mise à jour du cache. Cependant, edgex-metadata ne le fait pas.
Lorsque j'ai appelé cette API REST pour le stockage de données, le cache a été mis à jour.

données de métadonnées 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",

Demande 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"}'

Journal d'orchestration Edge

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"

Je pense qu'edgex serait corrigé ou que nous pourrions ajouter un code de contournement au stockage de données.
Que préfères-tu? (Partager ce problème avec edgex est bon pour la collaboration open source

@jpwhitemn Bonjour, nous avons rencontré le problème concernant le stockage de données lié à EdgeX Foundry. Pourriez-vous nous présenter la bonne personne de la communauté EdgeX pour discuter et/ou résoudre ce sujet ? ??

Que diriez-vous de soulever un problème dans edgex github du périphérique sdk?, afin qu'il puisse être mis à jour. La solution de contournement peut être effectuée comme appeler l'API. Mais une autre chose que j'ai remarquée est storagedriver, nous avons des rappels, ceux-ci doivent être invoqués lorsque le périphérique est ajouté. Mais cela non plus n'est pas invoqué, car les étapes de travail autour y seraient incluses

J'accepte de partager ce problème avec edgex. Cependant, si le correctif n'est pas implémenté sur edgex avant la version d de Home Edge, corrigeons-le sur Edge Orchestration.

.mot-recherche {
COULEUR DE FOND : #ffee94
}
P {
TAILLE DE LA POLICE : 10 pt ; MARGE-BAS : 5px ; FONT-FAMILLE : Arial, arial ; MARGE-TOP : 5px
}
TD {
TAILLE DE LA POLICE : 10 pt ; MARGE-BAS : 5px ; FONT-FAMILLE : Arial, arial ; MARGE-TOP : 5px
}
LI {
TAILLE DE LA POLICE : 10 pt ; MARGE-BAS : 5px ; FONT-FAMILLE : Arial, arial ; MARGE-TOP : 5px
}
CORPS {
TAILLE DE LA POLICE : 10 pt ; FONT-FAMILLE : Arial, arial
}

P {
TAILLE DE LA POLICE : 10 pt ; MARGE-BAS : 5px ; FONT-FAMILLE : Arial, arial ; MARGE-HAUT : 5px
}


Bonjour Peter,

Le problème ne vient pas du côté EdgeX. Après avoir discuté avec Cloud Tsai, j'ai compris que c'était l'utilisation d'une mauvaise adresse IP à cause de laquelle les coredata n'étaient pas en mesure d'appeler le rappel et donc le cache ne se met pas à jour. Pour la machine locale, le problème est résolu en utilisant l'adresse IP docker0 comme je l'ai testé.
Mais maintenant, le problème est le scénario que Taewan a très bien mentionné EdgeX s'exécutant indépendamment sur un appareil et Edge-Orchestration s'exécutant sur un autre appareil connecté en réseau. Cela doit donc être testé quel que soit le problème de cache. J'essaie de faire cette configuration similaire. Bien que j'ai testé le scénario similaire avec un docker de ping normal (alpin) et que j'ai pu configurer la communication à l'aide d'un réseau superposé. Maintenant, je dois essayer l'orchestration de bord.

Merci & Cordialement
Nitu

--------- Message d'origine ---------
Expéditeur : Peter Moonki @ . >Date : 2021-09-07 07:46 (GMT+5:30)Titre : Re : [lf-edge/edge-home-orchestration-go] [DataStorage] ne peut pas trouver le périphérique dans le cache (#312)À : * @ . >
CC : Nitu Sajjanlal @ . >, @ .* >

@nitu-s-gupta Que pensez-vous de résoudre ce problème à partir de HomeEdge au lieu de le demander à EdgeX, car il me semble que la justification de notre demande est en conflit avec le périphérique-sdk-go existant chez EdgeX ?
—Vous recevez ceci parce que vous avez été mentionné.Répondez directement à cet e-mail, affichez-le sur GitHub ou désabonnez-vous.Trier les notifications en déplacement avec GitHub Mobile pour iOS ou Android.

Merci pour vos gentilles précisions, @nitu-s-gupta 😄

Cette page vous a été utile?
0 / 5 - 0 notes