-->

Orion Context Broker works half of the times

2019-03-01 06:45发布

问题:

I've installed Orion Context Broker 0.23.0 and it behaves rare: it only works half of the times. For instance, when trying to retrieve the version I get this error message:

$ curl "http://localhost:1026/version"
curl: (52) Empty reply from server
$ curl "http://localhost:1026/version"
<orion>
  <version>0.23.0</version>
  <uptime>15 d, 22 h, 13 m, 18 s</uptime>
  <git_hash>f5d76a6f11736d52402e63a4aa0ba990bff7f5eb</git_hash>
  <compile_time>Fri Jul 10 13:21:42 CEST 2015</compile_time>
  <compiled_by>fermin</compiled_by>
  <compiled_in>centollo</compiled_in>
</orion>
$ curl "http://localhost:1026/version"
curl: (52) Empty reply from server
$ curl "http://localhost:1026/version"
<orion>
  <version>0.23.0</version>
  <uptime>15 d, 22 h, 13 m, 53 s</uptime>
  <git_hash>f5d76a6f11736d52402e63a4aa0ba990bff7f5eb</git_hash>
  <compile_time>Fri Jul 10 13:21:42 CEST 2015</compile_time>
  <compiled_by>fermin</compiled_by>
  <compiled_in>centollo</compiled_in>
</orion>

This behaviour is deterministic, I mean, after failing it always works, and after working it always fails. This occurs with all the operations within the REST API.

I've checked the listening ports and the process running them matches the Orion's one:

$ sudo netstat -ntlp | grep 1026
tcp        0      0 0.0.0.0:1026                0.0.0.0:*                   LISTEN      9944/contextBroker  
tcp        0      0 :::1026                     :::*                        LISTEN      9944/contextBroker

$ ps ax | grep contextBroker | grep -v grep
 9944 ?        Ssl    0:13 /usr/bin/contextBroker -port 1026 -logDir /var/log/contextBroker -pidpath /var/run/contextBroker/contextBroker.pid -dbhost localhost -db orion -multiservice

Any hints? Thanks!

回答1:

Orion runs by default listening to IPv4 and IPv6. We have found that in cases similar to the ones you described disabling IPv6 solves the problem (we don't know yet the exact cause, maybe is related with the operating system or it is involved is some way...).

Tu run Orion in only-IPv4 mode you have to use the -ipv4 option either in the contextBroker command line or (if you are running Orion as a service) editing the /etc/sysconfig/contextBroker file to add -ipv4 to the BROKER_EXTRA_OPS variable (have a look to the documentation for more information about configuring Orion as a service). After modifying /etc/sysconfig/contextBroker you have to restart Orion using:

sudo /etc/init.d/contextBroker restart