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

> +- 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.

Michael

Reply via email to