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