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

Neil Gilmore ngilmore at grammatech.com
Wed Sep 7 20:25:53 UTC 2016


Hi Pierre,

As always, thanks for steering me in the right direction.

First off before we get to the interesting stuff, a couple nits in the 
documentation...

Here 
(http://docs.buildbot.net/latest/manual/cfg-global.html#mq-specification) 
I see:

c['mq']  =  {
     'type'  :  'wamp',
     'router_url':  'ws://url/to/crossbar'
     'realm':  'buildbot'
     'debug'  :  False,
     'debug_websockets'  :  False,
     'debug_lowlevel'  :  False,
} It would be very, very helpful to those doing a copy/paste on that to 
include commas after the crossbar URL and the realm. It would also be 
useful to include that unicode indicator before 'buildbot'. It might 
also be helpful to add host:port to the url, just so the user doesn't 
forget to put it in there.

Now on to the good stuff.

On 9/6/2016 9:18 AM, Pierre Tardy wrote:
> You need to configure all the force-schedulers on your UI masters.
> forceschedulers defined in the non-UI masters will not be used, as 
> they have to be in the UI.
> This is tracked on http://trac.buildbot.net/ticket/2673

This is good to know, and not hard to do. Most of my users want to be 
able to force builds.

> the masters are talking to each other via crossbar. an easy way to 
> make sure this work is to start a build on a non-ui master, and see it 
> auto-update in the ui-master.

While I was not using symmetric masters, I'm certain I got this working, 
even though I was doing the force in the UI master.

> If you get autoupdate then the mq is correctly working. If you have to 
> reload the UI (F5) to see build progress, then it means the ui master 
> can only get updated data via DB, and not via message queue.
> You might also have a look at tcpdump on the crossbar port to see the 
> activity to crossbar.

I think it's sufficient to run crossbar in the foreground using a 
loglevel of debug. Since each master has a different signature, you can 
see them talk. Probably a bit easier (at least for experimentation) than 
using tcpdump.

> I would recommend to first start with symetric configuration where all 
> the masters have UI, and all masters have all builders/schedulers

I can see where it might be easier to test things this way, but the 
whole point for us to use multi-master is to NOT have all 
builders/schedulers active on the same masters. For our purposes, it'll 
be bad enough that the database and crossbar are single points of failure.

I still see what I interpret as 'lost deferred' problems often, and I 
think we're leery of not being able tor recover from them easily in a 
way that doesn't inconvenience people by having to take down a master 
controlling a build that they're waiting for. Every time a deferred is 
lost and the master effectively stops talking to the worker, it's 
unpleasant. And it happens pretty often for us.

Anyway, I have asymmetric multi-master working in a small test setup 
just using mostly the defaults and a postgres database (as I'm not 
familiar with MySQL). I may even be able to create that tutorial you'd 
like (but no promises).

Now I just have to get it working with our master.cfg. I think the plan 
is to use the same master.cfg for every master, but have it process 
differently for each master. Part of the idea I have is that if someone 
needed to, they could run their own master fairly easily, tied in to the 
overall system. We definitely plan to have the UI as separate as 
possible, as well as a couple other things that people tend to complain 
about when they aren't running.

Neil Gilmore
grammatech.com
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.buildbot.net/pipermail/users/attachments/20160907/1eb53e32/attachment.html>


More information about the users mailing list