[users at bb.net] 0.9.0rc2 and multi-master

Neil Gilmore ngilmore at grammatech.com
Fri Sep 2 16:58:41 UTC 2016


Hi everyone,

Getting multi-master to work has only gone so far.

I can set up a database and have masters talk to it just fine. And the 
masters can mostly function correctly. I'm using mostly 
master.cfg.sample instead of our own because I want something smaller. I 
have 2 masters that are mostly the same except for various names, and 
only 1 is running a UI.

I don't seem to be able to have them talk to crossbar. And there's not 
many log messages giving me a clue as to what's going on. I suspect my 
crossbar configuration. But the default configuration with a changed 
realm and port doesn't seem to work, either.

My first attempt had this:
c['mq'] = {
     'type' : 'wamp',
     'router_url': 'ws://ws/buildbot',
     'realm': 'buildbot',
     'debug' : True,
     'debug_websockets' : True,
     'debug_lowlevel' : True,
}

Obviously incorrect, as there's no host:port in there. Using my 
handwritten config.json on the crossbar side, here's what happens. 
Crossbar starts, and since I'm not putting the log in a file, I can see 
it on my terminal, and it looks fine enough. Then I start buildbot, and 
the only entries I see that might be relevant are:
2016-09-02 12:34:50-0400 [-] Starting wamp with config: %r {'realm': 
'buildbot', 'debug_lowlevel': True, 'router_url': 'ws://ws/buildbot', 
'debug': True, 'debug_websockets': True, 'type': 'wamp'}
2016-09-02 12:34:50-0400 [-] Starting factory 
<autobahn.twisted.websocket.WampWebSocketClientFactory object at 
0x7fb21ffd3ed0>
2016-09-02 12:35:20-0400 [-] Stopping factory 
<autobahn.twisted.websocket.WampWebSocketClientFactory object at 
0x7fb21ffd3ed0>

and that's it. OK, so I put in the host:port into master.cfg:
c['mq'] = {
     'type' : 'wamp',
     'router_url': 'ws://127.0.0.1:8020/ws/buildbot',
     'realm': 'buildbot',
     'debug' : True,
     'debug_websockets' : True,
     'debug_lowlevel' : True,
}

and my config.json looks like the one in the crossbar defaults, except 
for the transport, which looks like this:
             "transports": [
                 {
                     "type": "websocket",
                     "endpoint": {
                         "type": "tcp",
                         "port": 8020
                     },
                     "url": "ws://ws/buildbot",
                     "auth": {
                         "anonymous": {
                             "type": "static",
                             "role": "public"
                         }
                     }
                 }
             ]

and try again. This time, I get a crossbar log entry:
2016-09-02T12:38:48-0400 [Router      31742] failing WebSocket opening 
handshake ('port 8020 in HTTP Host header '127.0.0.1:8020' does not 
match server listening port 80')
and on buildbot:
2016-09-02 12:38:48-0400 [-] Starting wamp with config: %r {'realm': 
'buildbot' , 'debug_lowlevel': True, 'router_url': 
'ws://127.0.0.1:8020/ws/buildbot', 'deb ug': True, 'debug_websockets': 
True, 'type': 'wamp'}
2016-09-02 12:38:48-0400 [-] Starting factory 
<autobahn.twisted.websocket.WampWebSocketClientFactory object at 
0x7f89de379950>
2016-09-02 12:38:48-0400 [-] failing WebSocket opening handshake 
('WebSocket connection upgrade failed (400 - 
port8020inHTTPHostheader'127.0.0.1:8020'doesnotmatchserverlisteningport80)')
2016-09-02 12:38:48-0400 [-] Stopping factory 
<autobahn.twisted.websocket.WampWebSocketClientFactory object at 
0x7f89de379950>

Betterm I think. At least I get an error, and both sides agree. But why 
is my crossbar listening on 80 when I told it 8020? OK, we'll try port 
80 then...

(same mq, just change the port)

No messages from crossbar. From buildbot:
2016-09-02 12:42:07-0400 [-] Starting wamp with config: %r {'realm': 
'buildbot', 'debug_lowlevel': True, 'router_url': 
'ws://127.0.0.1:80/ws/buildbot', 'debug': True, 'debug_websockets': 
True, 'type': 'wamp'}
2016-09-02 12:42:07-0400 [-] Starting factory 
<autobahn.twisted.websocket.WampWebSocketClientFactory object at 
0x7f33e87d7650>
2016-09-02 12:42:07-0400 [-] failing WebSocket opening handshake 
('WebSocket connection upgrade failed (404 - NotFound)')
2016-09-02 12:42:07-0400 [-] Stopping factory 
<autobahn.twisted.websocket.WampWebSocketClientFactory object at 
0x7f33e87d7650>

So no connection there, either.

OK, we'll try the default config.json, and only change the port. It's 
transports look like this:
             "transports": [
                 {
                     "type": "universal",
                     "endpoint": {
                         "type": "tcp",
                         "port": 8020
                     },
                     "websocket": {
                         "ws": {
                             "type": "websocket"
                         }
                     }
                 }
             ]

We'll also have to change master.cfg to match urls:
c['mq'] = {
     'type' : 'wamp',
     'router_url': 'ws://127.0.0.1:8020/ws',
     'realm': 'buildbot',
     'debug' : True,
     'debug_websockets' : True,
     'debug_lowlevel' : True,
}

Crossbar starts fine. Buildbot excepts:
2016-09-02 12:52:46-0400 [-] Starting wamp with config: %r {'realm': 
'buildbot', 'debug_lowlevel': True, 'router_url': 
'ws://127.0.0.1:8020/ws', 'debug': True, 'debug_websockets': True, 
'type': 'wamp'}
2016-09-02 12:52:46-0400 [-] Starting factory 
<autobahn.twisted.websocket.WampWebSocketClientFactory object at 
0x7fdd9d381890>
2016-09-02 12:52:46-0400 [-] Traceback (most recent call last):
           File 
"/leg0/ngilmore/abyss/lib/python2.7/site-packages/autobahn-0.16.0-py2.7.egg/autobahn/wamp/websocket.py", 
line 60, in onOpen
             self._session = self.factory._factory()
           File 
"/leg0/ngilmore/abyss/lib/python2.7/site-packages/autobahn-0.16.0-py2.7.egg/autobahn/twisted/wamp.py", 
line 639, in create
             cfg = ComponentConfig(self.realm, self.extra)
           File 
"/leg0/ngilmore/abyss/lib/python2.7/site-packages/autobahn-0.16.0-py2.7.egg/autobahn/wamp/types.py", 
line 84, in __init__
             assert(realm is None or type(realm) == six.text_type)
         AssertionError

2016-09-02 12:52:46-0400 [-] Stopping factory 
<autobahn.twisted.websocket.WampWebSocketClientFactory object at 
0x7fdd9d381890>

Any idea where I'm going wrong?

Neil Gilmore
grammatech.com


More information about the users mailing list