Edge-home-orchestration-go: [DataStorage] no puede encontrar el dispositivo en la caché

Creado en 8 jun. 2021  ·  10Comentarios  ·  Fuente: lf-edge/edge-home-orchestration-go

Describe el error
La orquestación de borde no puede encontrar el dispositivo en la caché si la orquestación de borde registra la configuración del dispositivo en edgex por primera vez. Funciona después de reiniciar.

Reproducir

  1. Borrar la base de datos de redis
  2. Ejecute la orquestación perimetral con archivos de configuración de DataStorage
  3. Llame a una API en términos de carga de valor Int

Registro desde la orquestación de borde

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"

Configuración del entorno de prueba (complete la siguiente información):

  • Versión de firmware: Ubuntu 20.04
  • Hardware: x86-64
  • Lanzamiento de Edge Orchestration: Coconut
bug help wanted high priority

Comentario más útil

.buscar palabra {
COLOR DE FONDO: # ffee94
}
PAG {
TAMAÑO DE FUENTE: 10pt; MARGEN INFERIOR: 5px; FUENTE FAMILIAR: Arial, arial; MARGEN SUPERIOR: 5px
}
TD {
TAMAÑO DE FUENTE: 10pt; MARGEN INFERIOR: 5px; FUENTE FAMILIAR: Arial, arial; MARGEN SUPERIOR: 5px
}
LI {
TAMAÑO DE FUENTE: 10pt; MARGEN INFERIOR: 5px; FUENTE FAMILIAR: Arial, arial; MARGEN SUPERIOR: 5px
}
CUERPO {
TAMAÑO DE FUENTE: 10pt; FUENTE-FAMILIA: Arial, arial
}

PAG {
TAMAÑO DE FUENTE: 10pt; MARGEN INFERIOR: 5px; FUENTE FAMILIAR: Arial, arial; MARGEN SUPERIOR: 5px
}


Hola Pedro,

El problema no es del lado de EdgeX. Después de discutir con Cloud Tsai, entendí que se trataba del uso de una dirección IP incorrecta debido a que los datos centrales no podían invocar la devolución de llamada y, por lo tanto, la memoria caché no se actualizaba. Para la máquina local, el problema se resuelve usando la dirección IP de docker0 como la probé.
Pero ahora el problema es el escenario en el que Taewan ha mencionado muy bien que EdgeX se ejecuta de forma independiente en un dispositivo y Edge-Orchestration se ejecuta en otro dispositivo conectado a la red. Por lo tanto, esto debe probarse independientemente del problema de la caché. Estoy tratando de hacer una configuración similar. Aunque probé un escenario similar con la ventana acoplable de ping normal (alpine) y pude configurar la comunicación utilizando una red superpuesta. Ahora necesito probar la orquestación de borde.

Gracias y Saludos
Nitu

--------- Mensaje original ---------
Remitente: Peter Moonki @ . >Fecha: 2021-09-07 07:46 (GMT + 5: 30)Título: Re: [lf-edge / edge-home-orchestration-go] [DataStorage] no puede encontrar el dispositivo en la caché (# 312)Para: * @ . >
CC: Nitu Sajjanlal @ . >, @ . * >

@ nitu-s-gupta ¿Qué piensa de resolver este problema desde HomeEdge en lugar de solicitarlo en EdgeX, ya que me parece que el fundamento de nuestra solicitud entra en conflicto con el dispositivo-sdk-go existente en EdgeX?
—Está recibiendo esto porque fue mencionado. Responda a este correo electrónico directamente, véalo en GitHub o cancele la suscripción. Notificaciones de matrimonio sobre la marcha con GitHub Mobile para iOS o Android.

Todos 10 comentarios

Hola @ t25kim ,

Repliqué el error. Esto sucede cada vez que intentamos agregar un nuevo dispositivo también.

Ejemplo :

  1. Si editamos el nombre del perfil YAML
  2. Edite el nombre del dispositivo en el archivo de configuración

Este dispositivo no sería descubierto hasta que lo construyamos por segunda vez. Intenté esto varias veces y este problema parece ser constante. Estoy comprobando si esto fue un problema con el lanzamiento de Hanoi o si es necesario hacerlo por nuestra parte.

Hola @ t25kim ,

Repliqué el error. Esto sucede cada vez que intentamos agregar un nuevo dispositivo también.

Ejemplo :

  1. Si editamos el nombre del perfil YAML
  2. Edite el nombre del dispositivo en el archivo de configuración

Este dispositivo no sería descubierto hasta que lo construyamos por segunda vez. Intenté esto varias veces y este problema parece ser constante. Estoy comprobando si esto fue un problema con el lanzamiento de Hanoi o si es necesario hacerlo por nuestra parte.

Gracias @ sun-sharma.
Tuve el mismo problema con EdgeX v2.0.0. Pruébelo con el PR # 326.

Este problema es del lado de EdgeX, cuando se inicia el servicio, los dispositivos que ya están presentes en los metadatos se cargan en la caché. Pero los dispositivos que se agregan no se agregan a la caché. Por lo tanto, esto no ocurre después de reiniciar. Lo he intentado con device-rest.go. Observó el mismo comportamiento. Se requieren cambios en el dispositivo-sdk de la fundición edgex. Archivos que verifiqué (/internal/provision/devices.go) del sdk del dispositivo si son edgexfoundry. Esto se llama al inicio del dispositivo.

Este problema es del lado de EdgeX, cuando se inicia el servicio, los dispositivos que ya están presentes en los metadatos se cargan en la caché. Pero los dispositivos que se agregan no se agregan a la caché. Por lo tanto, esto no ocurre después de reiniciar. Lo he intentado con device-rest.go. Observó el mismo comportamiento. Se requieren cambios en el dispositivo-sdk de la fundición edgex. Archivos que verifiqué (/internal/provision/devices.go) del sdk del dispositivo si son edgexfoundry. Esto se llama al inicio del dispositivo.

@ nitu-s-gupta ¿Qué tal acercarte a EdgeX conmigo e intentar resolver este problema? 😄

Este problema es del lado de EdgeX, cuando se inicia el servicio, los dispositivos que ya están presentes en los metadatos se cargan en la caché. Pero los dispositivos que se agregan no se agregan a la caché. Por lo tanto, esto no ocurre después de reiniciar. Lo he intentado con device-rest.go. Observó el mismo comportamiento. Se requieren cambios en el dispositivo-sdk de la fundición edgex. Archivos que verifiqué (/internal/provision/devices.go) del sdk del dispositivo si son edgexfoundry. Esto se llama al inicio del dispositivo.

¡Gracias por tu esfuerzo!
Permítanme explicar con más detalle, edgex-metadata debería enviar una solicitud (la guía es incorrecta) al servicio para actualizar la caché. Sin embargo, edgex-metadata no hace eso.
Cuando llamé a esa API REST para almacenamiento de datos, se actualizó el caché.

datos de metadatos de 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",

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

Registro de orquestación de 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"

Creo que edgex se arreglaría o podemos agregar algún código de solución al almacenamiento de datos.
¿Qué prefieres? (Compartir este problema con edgex es bueno para la colaboración de código abierto

@ t25kim ¿Qué tal plantear un problema en edgex github del dispositivo sdk ?, para que pueda actualizarse. La solución alternativa se puede realizar como llamar a la API. Pero una cosa más que noté es que tenemos devoluciones de llamada en el controlador almacenado, que deben invocarse cuando se agrega el dispositivo. Pero eso tampoco se invoca, ya que el trabajo en torno a los pasos se incluirían allí.

Este problema es del lado de EdgeX, cuando se inicia el servicio, los dispositivos que ya están presentes en los metadatos se cargan en la caché. Pero los dispositivos que se agregan no se agregan a la caché. Por lo tanto, esto no ocurre después de reiniciar. Lo he intentado con device-rest.go. Observó el mismo comportamiento. Se requieren cambios en el dispositivo-sdk de la fundición edgex. Archivos que verifiqué (/internal/provision/devices.go) del sdk del dispositivo si son edgexfoundry. Esto se llama al inicio del dispositivo.

¡Gracias por tu esfuerzo!
Permítanme explicar con más detalle, edgex-metadata debería enviar una solicitud (la guía es incorrecta) al servicio para actualizar la caché. Sin embargo, edgex-metadata no hace eso.
Cuando llamé a esa API REST para almacenamiento de datos, se actualizó el caché.

datos de metadatos de 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",

Solicitud CURL

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

Registro de orquestación de 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"

Creo que edgex se arreglaría o podemos agregar algún código de solución al almacenamiento de datos.
¿Qué prefieres? (Compartir este problema con edgex es bueno para la colaboración de código abierto

@jpwhitemn Hola, encontramos el problema con el almacenamiento de datos que se ha relacionado con EdgeX Foundry. ¿Podría presentarnos a la persona adecuada de la comunidad de EdgeX para discutir y / o resolver este tema? 😄

¿Qué tal plantear un problema en edgex github del dispositivo sdk ?, para que pueda actualizarse. La solución alternativa se puede realizar como llamar a la API. Pero una cosa más que noté es que tenemos devoluciones de llamada en el controlador almacenado, que deben invocarse cuando se agrega el dispositivo. Pero eso tampoco se invoca, ya que el trabajo en torno a los pasos se incluirían allí.

Acepto compartir este problema con edgex. Sin embargo, si el parche no se implementa en edgex antes de la versión d de Home Edge, vamos a arreglarlo en Edge Orchestration.

.buscar palabra {
COLOR DE FONDO: # ffee94
}
PAG {
TAMAÑO DE FUENTE: 10pt; MARGEN INFERIOR: 5px; FUENTE FAMILIAR: Arial, arial; MARGEN SUPERIOR: 5px
}
TD {
TAMAÑO DE FUENTE: 10pt; MARGEN INFERIOR: 5px; FUENTE FAMILIAR: Arial, arial; MARGEN SUPERIOR: 5px
}
LI {
TAMAÑO DE FUENTE: 10pt; MARGEN INFERIOR: 5px; FUENTE FAMILIAR: Arial, arial; MARGEN SUPERIOR: 5px
}
CUERPO {
TAMAÑO DE FUENTE: 10pt; FUENTE-FAMILIA: Arial, arial
}

PAG {
TAMAÑO DE FUENTE: 10pt; MARGEN INFERIOR: 5px; FUENTE FAMILIAR: Arial, arial; MARGEN SUPERIOR: 5px
}


Hola Pedro,

El problema no es del lado de EdgeX. Después de discutir con Cloud Tsai, entendí que se trataba del uso de una dirección IP incorrecta debido a que los datos centrales no podían invocar la devolución de llamada y, por lo tanto, la memoria caché no se actualizaba. Para la máquina local, el problema se resuelve usando la dirección IP de docker0 como la probé.
Pero ahora el problema es el escenario en el que Taewan ha mencionado muy bien que EdgeX se ejecuta de forma independiente en un dispositivo y Edge-Orchestration se ejecuta en otro dispositivo conectado a la red. Por lo tanto, esto debe probarse independientemente del problema de la caché. Estoy tratando de hacer una configuración similar. Aunque probé un escenario similar con la ventana acoplable de ping normal (alpine) y pude configurar la comunicación utilizando una red superpuesta. Ahora necesito probar la orquestación de borde.

Gracias y Saludos
Nitu

--------- Mensaje original ---------
Remitente: Peter Moonki @ . >Fecha: 2021-09-07 07:46 (GMT + 5: 30)Título: Re: [lf-edge / edge-home-orchestration-go] [DataStorage] no puede encontrar el dispositivo en la caché (# 312)Para: * @ . >
CC: Nitu Sajjanlal @ . >, @ . * >

@ nitu-s-gupta ¿Qué piensa de resolver este problema desde HomeEdge en lugar de solicitarlo en EdgeX, ya que me parece que el fundamento de nuestra solicitud entra en conflicto con el dispositivo-sdk-go existente en EdgeX?
—Está recibiendo esto porque fue mencionado. Responda a este correo electrónico directamente, véalo en GitHub o cancele la suscripción. Notificaciones de matrimonio sobre la marcha con GitHub Mobile para iOS o Android.

Gracias por tu amable aclaración, @ nitu-s-gupta 😄

¿Fue útil esta página
0 / 5 - 0 calificaciones