From 96a5f3128b772aaeedb480e6ea784992a0be3f31 Mon Sep 17 00:00:00 2001 From: "David E. Eisenstat" Date: Sat, 3 Feb 2007 21:56:53 +0000 Subject: [PATCH] Added a semaphore to keep multiple init_disk_info()s from knocking over the machine. --- sliver_vs.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/sliver_vs.py b/sliver_vs.py index 8963c15..5dacf8b 100644 --- a/sliver_vs.py +++ b/sliver_vs.py @@ -18,6 +18,7 @@ don't have to guess if there is a running process or not. import errno import os +import threading import time import vserver @@ -31,6 +32,7 @@ class Sliver_VS(accounts.Account, vserver.VServer): SHELL = '/bin/vsh' TYPE = 'sliver.VServer' + _init_disk_info_sem = threading.Semaphore(1) def __init__(self, rec): try: @@ -98,8 +100,11 @@ class Sliver_VS(accounts.Account, vserver.VServer): try: # if the sliver is over quota, .set_disk_limit will throw an exception if not self.disk_usage_initialized: self.vm_running = False - logger.log('%s: computing disk usage' % self.name) - self.init_disk_info() + logger.log('%s: computing disk usage: beginning' % self.name) + Sliver_VS._init_disk_info_sem.acquire() + try: self.init_disk_info() + finally: Sliver_VS._init_disk_info_sem.release() + logger.log('%s: computing disk usage: ended' % self.name) self.disk_usage_initialized = True vserver.VServer.set_disklimit(self, disk_max) except OSError: -- 2.47.0