[Buildbot-devel] Changing the master config dynamically

Pierre Tardy tardyp at gmail.com
Thu Oct 9 21:44:27 UTC 2014


con: terrible hack. No offence, but seriously, don't do that, you are
killing kitten :)


Pierre

On Thu, Oct 9, 2014 at 3:26 PM, Bernhard Urban <lewurm at gmail.com> wrote:

>
> On Thu, Oct 9, 2014 at 2:33 PM, Pierre Tardy <tardyp at gmail.com> wrote:
>
>> In this case, if you reload step1 before common, then step1 will be
>> reloaded with previous version of common.py's BaseStep. Obviously, you will
>> very quickly encounter lots of issues, and reloading everything is a tree
>> ordering problem combined quite slow python reflexivity mechanisms. Short
>> story: avoid it!
>
>
>
> we are using a different approach and rename loaded modules. at the top of
> our master.cfg we have:
>
> # this will reload all python files in the 'scan' directories relative to
> master (do not use . or ..)
> scan = ["", "step", "builders", os.path.join("step", "bench")]
>
> master = os.path.abspath(os.path.dirname(__file__))
> files = filter(lambda f : f.endswith(".py") and not '__init__' in f,
> itertools.chain(*map(lambda s : map(lambda f : os.path.join(s,f),
> os.listdir(os.path.join(master, s))), scan)))
> for f in files:
>     modname = f[:-3].replace(os.sep, '.')
>     if sys.modules.has_key(modname):
>         oldModule = sys.modules.pop(modname)
>         oldId = 1
>         oldKey = None
>         while True:
>             oldKey = modname + "-" + str(oldId)
>             if sys.modules.has_key(oldKey):
>                 oldId += 1
>             else:
>                 break
>         sys.modules[oldKey] = oldModule
>         log.msg("Reloading " + modname + ", old module renamed as " +
> oldKey)
>
>
> pro: no explicit reload required after imports.  dependencies shouldn't be
> a problem too, since it's only a rename in the dict, but the reference
> stays the same.
> con: a reconfig leaks a bit of memory, so every now and then you should
> restart the buildbot master (although I don't know if reload() is any
> better in that regard).
>
>
> -Bernhard
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://buildbot.net/pipermail/devel/attachments/20141009/3f979cbd/attachment.html>


More information about the devel mailing list