Revision 9113300d

b/daemons/ganeti-masterd
84 84
  cleanup at shutdown.
85 85

  
86 86
  """
87
  def __init__(self, address, rqhandler, context):
87
  def __init__(self, address, rqhandler):
88 88
    """IOServer constructor
89 89

  
90 90
    Args:
91 91
      address: the address to bind this IOServer to
92 92
      rqhandler: RequestHandler type object
93
      context: Context Object common to all worker threads
94 93

  
95 94
    """
96 95
    SocketServer.UnixStreamServer.__init__(self, address, rqhandler)
97
    self.context = context
98 96

  
99 97
    # We'll only start threads once we've forked.
100
    self.jobqueue = None
98
    self.context = None
101 99
    self.request_workers = None
102 100

  
103 101
  def setup_queue(self):
104
    self.jobqueue = jqueue.JobQueue(self.context)
102
    self.context = GanetiContext()
105 103
    self.request_workers = workerpool.WorkerPool(CLIENT_REQUEST_WORKERS,
106 104
                                                 ClientRequestWorker)
107 105

  
......
133 131
    finally:
134 132
      if self.request_workers:
135 133
        self.request_workers.TerminateWorkers()
136
      if self.jobqueue:
137
        self.jobqueue.Shutdown()
134
      if self.context:
135
        self.context.jobqueue.Shutdown()
138 136

  
139 137

  
140 138
class ClientRqHandler(SocketServer.BaseRequestHandler):
......
203 201
    self.server = server
204 202

  
205 203
  def handle_request(self, method, args):
206
    queue = self.server.jobqueue
204
    queue = self.server.context.jobqueue
207 205

  
208 206
    # TODO: Parameter validation
209 207

  
......
269 267
    """
270 268
    assert self.__class__._instance is None, "double GanetiContext instance"
271 269

  
272
    # Create a ConfigWriter...
270
    # Create global configuration object
273 271
    self.cfg = config.ConfigWriter()
274
    # And a GanetiLockingManager...
272

  
273
    # Locking manager
275 274
    self.glm = locking.GanetiLockManager(
276 275
                self.cfg.GetNodeList(),
277 276
                self.cfg.GetInstanceList())
278 277

  
278
    # Job queue
279
    self.jobqueue = jqueue.JobQueue(self)
280

  
279 281
    # setting this also locks the class against attribute modifications
280 282
    self.__class__._instance = self
281 283

  
......
318 320

  
319 321
  ssconf.CheckMaster(options.debug)
320 322

  
321
  master = IOServer(constants.MASTER_SOCKET, ClientRqHandler, GanetiContext())
323
  master = IOServer(constants.MASTER_SOCKET, ClientRqHandler)
322 324

  
323 325
  # become a daemon
324 326
  if options.fork:

Also available in: Unified diff