summaryrefslogtreecommitdiffstats
path: root/bin/stack
diff options
context:
space:
mode:
authorEwan Mellor <ewan.mellor@citrix.com>2010-08-24 00:18:22 +0000
committerTarmac <>2010-08-24 00:18:22 +0000
commitb2e3c6bce6f1de3630886534c764817a7060905b (patch)
tree9f1b2d80157fc4816395f2626d00bd64d6ec99f8 /bin/stack
parentcfe3b2a6dd73e56652f99a573c1bb0abe5a648d4 (diff)
parent4a23d5d9091823e9b4dc364383a14b566af80cd6 (diff)
Rework virt.xenapi's concurrency model. There were many places where we were
inadvertently blocking the reactor thread. The reworking puts all calls to XenAPI on background threads, so that they won't block the reactor thread. Long-lived operations (VM start, reboot, etc) are invoked asynchronously at the XenAPI level (Async.VM.start, etc). These return a XenAPI task. We relinquish the background thread at this point, so as not to hold threads in the pool for too long, and use reactor.callLater to poll the task. This combination of techniques means that we don't block the reactor thread at all, and at the same time we don't hold lots of threads waiting for long-running operations. There is a FIXME in here: get_info does not conform to these new rules. Changes are required in compute.service before we can make get_info non-blocking.
Diffstat (limited to 'bin/stack')
0 files changed, 0 insertions, 0 deletions