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
