[users at bb.net] Anecdote about attempting to make scheduelrs reconfigurable.

Neil Gilmore ngilmore at grammatech.com
Thu Dec 22 20:20:21 UTC 2016

Hi Pierre,

Thanks for the reply.

I'll have a look at the worker to see what it's doing, then see what I 
can do in my code. Mostly, I just needed a direction to go, and there 
were several available.

I think I asked about PR before, as I'm not familiar with the acronym, 
but I don't recall getting an answer. Any pointer would be helpful.

I did get the OK from on high to share the code back. I wouldn't say 
it's finished by any means, but all the bones are there. I'm not going 
to be around much until after New Year's, though.

Neil Gilmore

On 12/22/2016 2:11 PM, Pierre Tardy wrote:
> I think indeed, this is such a case were you would need to actually 
> store some part of the config in the object inside checkConfig.
> Like you already pointed out there are already some of the objects (if 
> I recall correctly the worker are doing that) that are doing that for 
> the same reason.
> Looks like you are at the point were you could start sharing the code. 
> I think it would be easier to discuss this in a PR even if this is not 
> fully finished.
> Pierre
> Le jeu. 22 déc. 2016 à 17:08, Neil Gilmore <ngilmore at grammatech.com 
> <mailto:ngilmore at grammatech.com>> a écrit :
>     Good morning everyone,
>     As you remember, we're having a lot of trouble related to
>     schedulers in
>     0.9.X not being reconfigurable in any meaningful sense of the word. I
>     got the go-ahead to try to make a patch for this. Unfortunately, I've
>     run into a fairly serious problem.
>     The advice I was given was (in a nutshell) to take the code in the
>     various schedulers' __init__ functions, and spread it into 2
>     functions.
>     checkConfig() would check its arguments for validity, and
>     reconfigService() would put them into the instance. Sure, there were
>     some various snags at first. Partly, I'm not used to Python's
>     argument-passing model. Partly, figuring out which arguments needed to
>     get passed where. Partly, figuring out that name should only exist in
>     the __init__'s, not the checkConfig's, etc.
>     What happens when we create a scheduler is this:
>     The scheduler's __init__ function is called. This calls it's base
>     class's __init__, and so on, up to BuildbotService.__init__. Note that
>     all arguments must be preserved during these calls. You'll see why.
>     BuildbotService.__init__ calls checkConfig. Now, this call goes to the
>     scheduler's checkConfig, which checks its own specific arguments, then
>     passes everything else up to it's base class's checkConfig, and so on.
>     Everything,s great, right? Wrong...
>     At this point, we have validated everything. But only the name is
>     in the
>     instance. Because everything else is supposed to get assigned in
>     reconfigService.
>     But in between __init__ and reconfigService, other things happen. Such
>     as check_single_master() (at least for single master systems). That
>     attempts to check the builder names in the schedulers vs. the
>     builders'
>     names in the config. Naturally, this fails because the builder names
>     haven't been put into the schedulers yet. And it would go on to check
>     other things that probably fail, too.
>     I'm not sure how to resolve this. The hacktastic way would be to just
>     figure out what might ever get checked and put that back into
>     __init__.
>     But that's not very clean. The proper way would be to figure out
>     how to
>     make a scheduler reconcile it's own builderNames, et al. with the
>     builders in the config. But I'd need to be able to get the config
>     being
>     checked, and I haven't figured out how to do that. There's other
>     checks
>     that go between items like this that I'd need to do, too.
>     Really, I'm just uncomfortable having this task spread out into other
>     areas of buildbot.
>     Or I just go back to our 80% solution and hack checkConfig...
>     Neil Gilmore
>     grammatech.com <http://grammatech.com>
>     _______________________________________________
>     users mailing list
>     users at buildbot.net <mailto:users at buildbot.net>
>     https://lists.buildbot.net/mailman/listinfo/users

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.buildbot.net/pipermail/users/attachments/20161222/6dd7ac95/attachment.html>

More information about the users mailing list