[Buildbot-devel] buildbot doesn't fully reconfigure on SIGHUP?

William Deegan bill at baddogconsulting.com
Fri Oct 5 21:46:11 UTC 2012

On Oct 4, 2012, at 11:25 PM, Jared Grubb <jared.grubb at gmail.com> wrote:

> On 3 Oct 2012, at 14:38, Dan Kegel <dank at kegel.com> wrote:
>> On Wed, Oct 3, 2012 at 2:21 PM, Tom Prince <tom.prince at ualberta.net> wrote:
>>>> The manual claims buildbot reloads config files when you send it a SIGHUP,
>>>> but I'm not seeing that here.  I mean, sure, it says it's doing it, but
>>>> if the config file adds a new buildslave, that won't show up until
>>>> you actually stop the buildbot and start it again.
>>>> Has anyone else seen that?  I don't see an exact match in the bug tracker.
>>> My guess is that you import some file that defines the buildslaves.
>>> buildbot's reconfig is implemented by rerunning the code in the
>>> master.cfg file. The nature of python is such that an import only
>>> loads the indicated file the first time it is run (so if you change the
>>> file, python won't see it). This can be somewhat worked around by
>>> calling reload, although the behavior of that can be tricky.
>> Correct in one!
>> Following your hint, I see that
>> http://stackoverflow.com/questions/684171/how-to-re-import-an-updated-package-while-in-python-interpreter
>> lists some of the issues with reload.
>> I will chalk this up as another reason to rewrite our buildbot config.
> I personally use exec_file instead of import in my master.cfg .. not ideal, but works ok for this purpose.

I use a stanza like this:

import myBBConfig.module

And then either:

Or refer to each method by full name

This seems to work very reliably (for well over a year of reconfigs)

The trick is to remember that
from abc import xyz
Won't get reloaded, but is the equivalent of:
import abc
xyz = abc.xyz

if you add:
reload(abc) before xyz=abc.xyz, then that does that trick.


More information about the devel mailing list