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
