On 07/11/2012 11:32 AM, Seth Vidal wrote:
On Wed, 11 Jul 2012, Mike Bonnet wrote:
> On 07/11/2012 11:10 AM, Seth Vidal wrote:
>> On Wed, 11 Jul 2012, Seth Vidal wrote:
>>
>>> Hi,
>>> If a build job has been sent to a builder and the builder crashes
>>> (let's say the hw dies) - what happens to that job? Does koji send it
>>> to another builder to work on?
>>>
>>
>> I got some answers on irc - but I wanted to expand on this a bit more:
>>
>> I would like to stop having to disable/enable builders in koji manually
>> in order to rebuild/reboot the systems.
>>
>> I'd like the kojihub to check for the last time any builder checked in.
>>
>> If it has not checked in in more than N minutes then it frees any task
>> sent to that builder and doesn't send any new tasks to it until it does
>> check in.
>>
>> Seems like we have all the requisite information to make the hub a bit
>> smarter about the presence or death of a builder. Is there a significant
>> component of this I'm missing?
>
> All task claiming/completing/freeing is handled by the builders
> themselves, the hub is completely passive. So if a builder is not
> checking in, it cannot claim any new tasks.
>
> If a builder dies while running tasks, those tasks will remain claimed
> by that builder until it starts checking in again (at which point, if
> the daemon was restarted, they will be freed). There is no daemon
> that checks for tasks owned by non-responsive builders and frees
> them. That logic could be added to a daemon like kojira.
The use case I have the builder will come back up - later - but it will
probably be a brand new install with an old builder key/cert. So it
won't know about any of the old jobs.
Right, that's essentially the same as restarting a builder. The builder
process doesn't know about any old jobs, so it frees any jobs that are
assigned to it on the hub.
I guess I don't want to have to worry about a builder checking
in.
I'm not sure why you would.
Kojira runs on the kojihub itself?
It can run anywhere. It's the daemon that monitors tags for changes and
triggers repo regens when necessary. It seems like a reasonable place
for this kind of recurring cleanup task. Or just run a cron job.