mirror of
https://github.com/apache/cloudstack.git
synced 2025-10-26 08:42:29 +01:00
kvm: fix qemu hook race condition (#3405)
This fixes the qemu hooks `mkdir` race condition which can happen when too many VMs may launch on a KVM host executing the hooks script that tries to `mkdir` for the custom directory. On exception (multiple scripts trying to mkdir), the VM stops. The custom directory need not be created if it does not exist, instead the custom hooks should only execute when there is a custom directory. Feature documentation: http://docs.cloudstack.apache.org/en/4.11.2.0/adminguide/hosts.html#kvm-libvirt-hook-script-include Signed-off-by: Rohit Yadav <rohit.yadav@shapeblue.com>
This commit is contained in:
parent
a3e5664b53
commit
425ad495b1
@ -78,7 +78,9 @@ def handleMigrateBegin():
|
||||
|
||||
|
||||
def executeCustomScripts(sysArgs):
|
||||
createDirectoryIfNotExists(customDir, customDirPermissions)
|
||||
if not os.path.exists(customDir) or not os.path.isdir(customDir):
|
||||
return
|
||||
|
||||
scripts = getCustomScriptsFromDirectory()
|
||||
|
||||
for scriptName in scripts:
|
||||
@ -127,12 +129,6 @@ def getCustomScriptsFromDirectory():
|
||||
os.listdir(customDir)), key=lambda fileName: substringAfter(fileName, '_'))
|
||||
|
||||
|
||||
def createDirectoryIfNotExists(dir, permissions):
|
||||
if not os.path.exists(dir):
|
||||
logger.info('Directory %s does not exist; creating it.' % dir)
|
||||
os.makedirs(dir, permissions)
|
||||
|
||||
|
||||
def substringAfter(s, delimiter):
|
||||
return s.partition(delimiter)[2]
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user