4
votes

I'm working with version 0.25.0 of Orion Context Broker.

If I load the context broker only with context entities and I search for entities into a specific area, everything seems to work fine:

(curl localhost:1026/v1/queryContext?limit=100 -s -S --header 'Content-Type: application/json' --header 'Accept: application/json' -d  @- | python -mjson.tool) <<EOF
{
    "entities":[
        {
            "type":"Dispositivo_tmp",
            "isPattern":"true",
            "id":".*"
        }
    ],
    "restriction": {
        "scopes": [
            {
                "type": "FIWARE::Location",
                "value": {
                    "circle": {
                        "centerLatitude": "43.322361",
                        "centerLongitude": "-1.983222",
                        "radius": "1500"
                    }
                }
            }
        ]
    }
}
EOF

I get a response with the context entities located into that area:

...
{
            "contextElement": {
                "attributes": [
                    {
                        "metadatas": [
                            {
                                "name": "location",
                                "type": "string",
                                "value": "WGS84"
                            }
                        ],
                        "name": "position",
                        "type": "coords",
                        "value": "43.3221, -1.9831"
                    },
                    {
                        "name": "pressure",
                        "type": "integer",
                        "value": "1"
                    },
                    {
                        "name": "temperature",
                        "type": "float",
                        "value": "25"
                    }
                ],
                "id": "CE_5.1",
                "isPattern": "false",
                "type": "Dispositivo_tmp"
            },
            "statusCode": {
                "code": "200",
                "reasonPhrase": "OK"
            }
        }
    ]
}

And if there are no elements into the defined area, I get the expected response:

{
    "errorCode": {
        "code": "404",
        "reasonPhrase": "No context element found"
    }
}

The problem arises if I load the context broker with context registrations too. If I have both context entities and context registrations on the context broker and I check for context entities into an area I know is empty, I won't get any response or I will get this one:

{
    "errorCode": {
        "code": "200",
        "reasonPhrase": "OK"
    }
}

And seems that the larger is the amount of context registrations loaded in the context broker, more time takes to get a (negative) response from the system.

On the same scenario, there is no problem if I look for context entities into an area with elements. In this case I will get the correct response.

Is there any sense on all that?

Thanks

1
I understand that the part under "EDIT" is the actual answer to the question. Thus, I'd suggest to cut-and-paste it to a proper answer below (StackOverflow allows self-answered questions). Thanks!fgalan
Also, for clarity, include an example of a wrong URL and and correct one. That would be great!LeandroGuillen

1 Answers

1
votes

I have seen that this behaviour is due to the URL that I have defined when creating the Context Registrations.

The URL wasn't correct. Therefore, when the context broker attemps to contact with the device using the provided URL, it starts waiting for an answer that won't arrive.

I have modified the URL and have used the 'accumulate-server.py' dummy testing server instead:

http://localhost:1028/accumulate

Using it, the context broker gets an inmediate response and continues with the execution.