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

Pierre Tardy tardyp at gmail.com
Thu Dec 22 20:27:22 UTC 2016


PR means pull request

This is the basic howto for our contribution.
http://trac.buildbot.net/wiki/SubmittingPatches

Have great holidays!
Pierre

Le jeu. 22 déc. 2016 à 21:20, Neil Gilmore <ngilmore at grammatech.com> a
écrit :

> 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
> grammatech.com
>
>
> 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> 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
> _______________________________________________
> users mailing list
> users at buildbot.net
> https://lists.buildbot.net/mailman/listinfo/users
>
>
> _______________________________________________
> users mailing list
> 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/a8ac1b2c/attachment.html>


More information about the users mailing list