[Backlogmanager] [FIWARE-JIRA] (HELP-8218) [fiware-stackoverflow] Fiware - Orion Context Broker subscription not sent to STH, " conditions was supposed to be an array"

Fernando Lopez (JIRA) jira-help-desk at jira.fiware.org
Fri Feb 3 08:56:00 CET 2017


     [ https://jira.fiware.org/browse/HELP-8218?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Fernando Lopez reassigned HELP-8218:
------------------------------------

    Assignee: Fermín Galán

> [fiware-stackoverflow] Fiware - Orion Context Broker subscription not sent to STH, "conditions was supposed to be an array"
> -------------------------------------------------------------------------------------------------------------------------------------
>
>                 Key: HELP-8218
>                 URL: https://jira.fiware.org/browse/HELP-8218
>             Project: Help-Desk
>          Issue Type: Monitor
>          Components: FIWARE-TECH-HELP
>            Reporter: Backlog Manager
>            Assignee: Fermín Galán
>              Labels: fiware, fiware-orion, fiware-sth-comet
>
> Created question in FIWARE Q/A platform on 27-01-2017 at 15:01
> {color: red}Please, ANSWER this question AT{color} http://stackoverflow.com/questions/41895831/fiware-orion-context-broker-subscription-not-sent-to-sth-conditions-was-supp
> +Question:+
> Fiware - Orion Context Broker subscription not sent to STH, "conditions was supposed to be an array"
> +Description:+
> When trying to use STH to be able to store and retrieve data sent to OCB, I have a problem making the subscription.
> My problem is that the subscription creation goes well.
> When I create the subscription as following:
> POST /v1/contextSubscriptions HTTP/1.1
> Host: <cb_host>:1026
> Content-Type: application/json
> Fiware-Service: myService
> Fiware-ServicePath: /myServicePath
> Cache-Control: no-cache
> {
>   "entities": [
>     {
>       "type": "cameraSimple",
>       "isPattern": "true",
>       "id": "sensor03"
>     }
>   ],
>   "attributes": [ 
>     "class" 
>     ],
>   "reference": "http://<cb_host>:8666/notify",
>   "duration": "P1M",
>   "notifyConditions": [
>     {
>       "type": "ONCHANGE",
>       "condValues": [
>         "class"
>         ]
>     }
>   ],
>     "throttling": "PT5S"
> }
> I receive following answer:
> {
>   "subscribeResponse": {
>     "subscriptionId": "588b4f38e2066a50fa98df9b",
>     "duration": "P1M",
>     "throttling": "PT5S"
>   }
> }
> but on the Fiware server, i see an error about the conditions in the terminal running the containers, and another one about the attributes:
> orion               | ERROR at 14:06:10  safeMongo.cpp[302]: Runtime Error (field 'conditions' was supposed to be an array but type=4 in BSONObj <{ _id: ObjectId('588b4f96e2066a50fa98df9c'), expiration: 1488116886, reference: "http://<cb_host>:8666/notify", custom: false, throttling: 5, servicePath: "/myServicePath", status: "active", entities: [ { id: "sensor03", isPattern: "true", type: "cameraSimple", isTypePattern: false } ], attrs: [ "class" ], metadata: [], blacklist: false, conditions: [ "class" ], expression: { q: "", mq: "", geometry: "", coords: "", georel: "" }, format: "JSON" }> from caller mongoSubCacheItemInsert:221)
> orion               | ERROR at 13:48:10  safeMongo.cpp[302]: Runtime Error (field 'attrs' was supposed to be an array but type=4 in BSONObj <{ _id: ObjectId('588b4f96e2066a50fa98df9c'), expiration: 1488116886, reference: "http://<cb_host>:8666/notify", custom: false, throttling: 5, servicePath: "/myServicePath", status: "active", entities: [ { id: "sensor03", isPattern: "true", type: "cameraSimple", isTypePattern: false } ], attrs: [ "class" ], metadata: [], blacklist: false, conditions: [ "class" ], expression: { q: "", mq: "", geometry: "", coords: "", georel: "" }, format: "JSON" }> from caller mongoSubCacheItemInsert:215)
> Also, when updating a value on my entity, 
> PUT /v2/entities/sensor03/attrs/class/value HTTP/1.1
> Host: <cb_host>:1026
> Accept: application/json
> Fiware-Service: myService
> Fiware-ServicePath: /myServicePath
> Cache-Control: no-cache
> "monitor"
> I get nothing when querying the STH:
> GET /STH/v1/contextEntities/type/myDevice/id/sensor03/attributes/class?lastN=10 HTTP/1.1
> Host: <cb_host>:8666
> Accept: application/json
> Fiware-Service: myService
> Fiware-ServicePath: /myServicePath
> Cache-Control: no-cache
> returns:
> {
>   "contextResponses": [
>     {
>       "contextElement": {
>         "attributes": [
>           {
>             "name": "class",
>             "values": []
>           }
>         ],
>         "id": "sensor03",
>         "isPattern": false,
>         "type": "myDevice"
>       },
>       "statusCode": {
>         "code": "200",
>         "reasonPhrase": "OK"
>       }
>     }
>   ]
> }
> Note: 
> I use NGSI V1, as I suspect V2 is not yet supported for STH receiving NGSI V2 notifications regarding this issue. 
> Also i didn't find any documentation regarding "Getting historical raw context information" with NGSI V2, e.g on this page
> I use Docker-machine with a single Debian 8 VM running on Fiware-Lab with following images:
> mongodb:
>     image: mongo:2.6
>     hostname: mongodb
>     container_name: mongodb
>     command: --smallfiles
> orion:
>     image: fiware/orion:develop
>     hostname: orion
>     container_name: orion
>     links:
>       - mongodb
>     expose:
>       - "1026"
>     ports:
>       - "1026:1026"
>     command: -dbhost mongodb
> fiware-sth-comet:   
>     image: telefonicaiot/fiware-sth-comet   
>     links:
>       - mongodb   
>     ports:
>       - "8666:8666"   
>     environment:
>       - STH_HOST=0.0.0.0
>       - DB_URI=mongodb:27017
> EDIT 1: After removing the "develop" of Orion Docker image I am now running verison "1.6.0-next" of Orion, and I don't have any more the runtime error. Still, I can't get any historical value of the attributes of the entity. I must be doing some error in the request, but I don't know where.
> Now my docker-compose file looks like this:
> mongo:
>   image: mongo:3.2
>   command: --nojournal
> orion:
>     image: fiware/orion
>     links:
>         - mongo
>     ports:
>         - "1026:1026"
>     command: -dbhost mongo
> fiware-sth-comet:
>   image: telefonicaiot/fiware-sth-comet
>   links:
>     - mongo
>   ports:
>     - "8666:8666"
>   environment:
>     - STH_HOST=0.0.0.0
>     - DB_URI=mongo:27017
> cygnus:
>   image: fiware/cygnus-ngsi
>   links:
>     -mongo
> EDIT 2: Following @GermánTorodelValle advice, I try to simulate a notification to the STH container like the CB would send:
> curl -X POST -H "Accept: application/json" -H "Content-Type: application/json" -H "Fiware-Service: myService" -H "Fiware-ServicePath: /myServicePath" -d '{
> "subscriptionId" : "57a9ce8ae997e37e85a4be39",
> "originator" : "orion.contextBroker.instance",
> "contextResponses" : [
>     {
>         "contextElement" : {
>             "attributes" : [
>                 {
>                     "name" : "class",
>                     "type" : "Text",
>                     "value" : "monitor"
>                 }
>             ],
>             "type" : "cameraSimple",
>             "isPattern" : "false",
>             "id" : "sensor03"
>         },
>         "statusCode" : {
>             "code" : "200",
>             "reasonPhrase" : "OK"
>         }
>     }
> ]
> }' "http://172.17.0.1:8666/notify"
> The log on STH container is as following:
> time=2017-02-02T13:50:36.809Z | lvl=ERROR | corr=39638217-c300-48c0-9122-bff6164d5298 | trans=39638217-c300-48c0-9122-bff6164d5298 | op=OPER_STH_POST | from=n/a | srv=myService | subsrv=/myServicePath | comp=STH | msg=Error when getting the raw data collection for storing:MongoError: db already exists with different case already have: [sth_myservice] trying to create [sth_myService]
> time=2017-02-02T13:50:36.810Z | lvl=WARN | corr=c322ddc8-2140-484b-a123-4e5b9b60742e | trans=c322ddc8-2140-484b-a123-4e5b9b60742e | op=OPER_STH_POST | from=n/a | srv=myService | subsrv=/myServicePath | comp=STH | msg=POST /notify, event={"request":"1486043436805:3577e9b29ee6:1:iym1stlz:10018","timestamp":1486043436810,"tags":["handler","error"],"data":{"msec":3.6443320512771606,"error":"db already exists with different case already have: [sth_myservice] trying to create [sth_myService]","data":{"name":"MongoError","message":"db already exists with different case already have: [sth_myservice] trying to create [sth_myService]","ok":0,"errmsg":"db already exists with different case already have: [sth_myservice] trying to create [sth_myService]","code":13297,"isBoom":true,"isServer":true,"data":null,"output":{"statusCode":500,"payload":{"statusCode":500,"error":"Internal Server Error","message":"An internal server error occurred"},"headers":{}}}},"internal":true}
> time=2017-02-02T13:50:36.812Z | lvl=ERROR | corr=6c864793-c7ef-462a-a43d-75cdae8d20a3 | trans=6c864793-c7ef-462a-a43d-75cdae8d20a3 | op=OPER_STH_POST | from=n/a | srv=myService | subsrv=/myServicePath | comp=STH | msg=POST /notify, event={"request":"1486043436805:3577e9b29ee6:1:iym1stlz:10018","timestamp":1486043436811,"tags":["internal","error"],"data":{"name":"MongoError","message":"db already exists with different case already have: [sth_myservice] trying to create [sth_myService]","ok":0,"errmsg":"db already exists with different case already have: [sth_myservice] trying to create [sth_myService]","code":13297,"isBoom":true,"isServer":true,"data":null,"output":{"statusCode":500,"payload":{"statusCode":500,"error":"Internal Server Error","message":"An internal server error occurred"},"headers":{"content-type":"application/json; charset=utf-8","cache-control":"no-cache","content-length":96}}},"internal":true}
> time=2017-02-02T13:50:38.143Z | lvl=INFO | corr=n/a | trans=n/a | op=OPER_STH_SERVER_LOG | from=n/a | srv=n/a | subsrv=n/a | comp=STH | msg=Everything OK, 0 requests attended in the last 60s interval



--
This message was sent by Atlassian JIRA
(v6.4.1#64016)


More information about the Backlogmanager mailing list

You can get more information about our cookies and privacy policies clicking on the following links: Privacy policy   Cookies policy