On Tue, May 18, 2010 at 5:04 PM, Michael Hanselmann <[email protected]> wrote:
> 2010/5/18 Guido Trotter <[email protected]>:
>> --- a/doc/design-2.2.rst
>> +++ b/doc/design-2.2.rst
>> +Proposed changes
>> +++++++++++++++++
>> +
>> +In order to fix the above issues, for Ganeti 2.2, we propose the
>> +following core changes:
>> +
>> +- The main thread of masterd is moved to asyncore (so it can share the
>> +  mainloop code with all other ganeti daemons) and handles all client
>> +  connections.
>
> Please add more detail as to how this will be done. If I remember correctly:
>
> - Mainloop pushes data to per-connection buffer
> - Once a message is complete, the buffer class pushes the message to
> the request handling workerpool
> - When the reply is ready (almost immediately for queries, much later
> for WaitForJobChange), a method on the message object can be called to
> reply
> - Reply is written to a buffer again and sent out by main thread
>

Will do.

>> +- The REQ_WAIT_FOR_JOB_CHANGE luxi request is changed to be
>> +  subscription-based, so that the executing thread doesn't have to be
>> +  hogged while changes arrive.
>
> Since Python doesn't have proper destructors (which which it would be
> easy), special care needs to be taken to unregister pending waits when
> a connection terminates prematurely.
>

Definitely.

Thanks,

Guido

Reply via email to