diff --git a/src/python/dm/ds_web_service/service/impl/storageManager.py b/src/python/dm/ds_web_service/service/impl/storageManager.py index da5003ea22156d68250b82037f0575c89e0fb8a4..36d7181212bd8eec8488924dface83052215e233 100755 --- a/src/python/dm/ds_web_service/service/impl/storageManager.py +++ b/src/python/dm/ds_web_service/service/impl/storageManager.py @@ -8,6 +8,7 @@ from dm.common.utility.loggingManager import LoggingManager from dm.common.utility.configurationManager import ConfigurationManager from dm.common.utility.singleton import Singleton from dm.common.utility.osUtility import OsUtility +from dm.common.utility.threadingUtility import ThreadingUtility class StorageManager(Singleton): @@ -47,44 +48,33 @@ class StorageManager(Singleton): storageDirectory = os.path.normpath(storageDirectory) return storageDirectory + @ThreadingUtility.synchronize def updateExperimentWithStorageDataDirectory(self, experiment): - self.lock.acquire() - try: - storageDirectory = self.__getExperimentStorageDataDirectory(experiment) - if os.path.exists(storageDirectory): - experiment['storageDirectory'] = storageDirectory - experiment['storageHost'] = ConfigurationManager.getInstance().getHost() - return storageDirectory - finally: - self.lock.release() + storageDirectory = self.__getExperimentStorageDataDirectory(experiment) + if os.path.exists(storageDirectory): + experiment['storageDirectory'] = storageDirectory + experiment['storageHost'] = ConfigurationManager.getInstance().getHost() + return storageDirectory + @ThreadingUtility.synchronize def createExperimentDataDirectory(self, experiment): - self.lock.acquire() - try: - experimentName = experiment.get('name') - storageDirectory = self.__getExperimentStorageDataDirectory(experiment) - if os.path.exists(storageDirectory): - self.logger.debug('Data directory %s for experiment %s already exists' % (storageDirectory, experimentName)) - else: - self.logger.debug('Creating data directory for experiment %s: %s' % (experimentName, storageDirectory)) - OsUtility.createDir(storageDirectory) - experiment['storageDirectory'] = storageDirectory - finally: - self.lock.release() + experimentName = experiment.get('name') + storageDirectory = self.__getExperimentStorageDataDirectory(experiment) + if os.path.exists(storageDirectory): + self.logger.debug('Data directory %s for experiment %s already exists' % (storageDirectory, experimentName)) + else: + self.logger.debug('Creating data directory for experiment %s: %s' % (experimentName, storageDirectory)) + OsUtility.createDir(storageDirectory) + experiment['storageDirectory'] = storageDirectory + experiment['storageHost'] = ConfigurationManager.getInstance().getHost() + @ThreadingUtility.synchronize def start(self): - self.lock.acquire() - try: - self.logger.debug('Started storage manager') - finally: - self.lock.release() + self.logger.debug('Started storage manager') + @ThreadingUtility.synchronize def stop(self): - self.lock.acquire() - try: - self.logger.debug('Stopped storage manager') - finally: - self.lock.release() + self.logger.debug('Stopped storage manager') #################################################################### # Testing