<html>
<head>
<meta content="text/html; charset=utf-8" http-equiv="Content-Type">
</head>
<body bgcolor="#FFFFFF" text="#000000">
Hi Pierre,<br>
<br>
As always, thanks for steering me in the right direction.<br>
<br>
First off before we get to the interesting stuff, a couple nits in
the documentation...<br>
<br>
Here
(<a class="moz-txt-link-freetext" href="http://docs.buildbot.net/latest/manual/cfg-global.html#mq-specification">http://docs.buildbot.net/latest/manual/cfg-global.html#mq-specification</a>)
I see:<br>
<pre><span class="n">c</span><span class="p">[</span><span class="s1">'mq'</span><span class="p">]</span> <span class="o">=</span> <span class="p">{</span>
<span class="s1">'type'</span> <span class="p">:</span> <span class="s1">'wamp'</span><span class="p">,</span>
<span class="s1">'router_url'</span><span class="p">:</span> <span class="s1">'<a class="moz-txt-link-freetext" href="ws://url/to/crossbar">ws://url/to/crossbar</a>'</span>
<span class="s1">'realm'</span><span class="p">:</span> <span class="s1">'buildbot'</span>
<span class="s1">'debug'</span> <span class="p">:</span> <span class="bp">False</span><span class="p">,</span>
<span class="s1">'debug_websockets'</span> <span class="p">:</span> <span class="bp">False</span><span class="p">,</span>
<span class="s1">'debug_lowlevel'</span> <span class="p">:</span> <span class="bp">False</span><span class="p">,</span>
<span class="p">}
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.
</span></pre>
Now on to the good stuff.<br>
<br>
<div class="moz-cite-prefix">On 9/6/2016 9:18 AM, Pierre Tardy
wrote:<br>
</div>
<blockquote
cite="mid:CAJ+soVc9t09hDOxt_JcXrNS3yiHSunxNpRULwUf2g+t7Hfnhdw@mail.gmail.com"
type="cite">
<div dir="ltr">
<div class="gmail_quote">You need to configure all the
force-schedulers on your UI masters.
<div>forceschedulers defined in the non-UI masters will not be
used, as they have to be in the UI.</div>
<div>This is tracked onĀ <a moz-do-not-send="true"
href="http://trac.buildbot.net/ticket/2673">http://trac.buildbot.net/ticket/2673</a></div>
</div>
</div>
</blockquote>
<br>
This is good to know, and not hard to do. Most of my users want to
be able to force builds.<br>
<br>
<blockquote
cite="mid:CAJ+soVc9t09hDOxt_JcXrNS3yiHSunxNpRULwUf2g+t7Hfnhdw@mail.gmail.com"
type="cite">
<div dir="ltr">
<div class="gmail_quote">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.</div>
</div>
</blockquote>
<br>
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.<br>
<br>
<blockquote
cite="mid:CAJ+soVc9t09hDOxt_JcXrNS3yiHSunxNpRULwUf2g+t7Hfnhdw@mail.gmail.com"
type="cite">
<div dir="ltr">
<div class="gmail_quote">
<div>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.</div>
<div>You might also have a look at tcpdump on the crossbar
port to see the activity to crossbar.</div>
</div>
</div>
</blockquote>
<br>
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.<br>
<br>
<blockquote
cite="mid:CAJ+soVc9t09hDOxt_JcXrNS3yiHSunxNpRULwUf2g+t7Hfnhdw@mail.gmail.com"
type="cite">
<div dir="ltr">
<div class="gmail_quote">I would recommend to first start with
symetric configuration where all the masters have UI, and all
masters have all builders/schedulers<br>
</div>
</div>
</blockquote>
<br>
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.<br>
<br>
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.<br>
<br>
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).<br>
<br>
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.<br>
<br>
Neil Gilmore<br>
grammatech.com<br>
</body>
</html>