From 6f639ea8892b2d51abc7676f3bbb04152d2a5349 Mon Sep 17 00:00:00 2001 From: Sinisa Veseli <sveseli@aps.anl.gov> Date: Tue, 14 Apr 2015 15:18:56 +0000 Subject: [PATCH] convert storage manager to use threading utility synchronization --- .../service/impl/storageManager.py | 52 ++++++++----------- 1 file changed, 21 insertions(+), 31 deletions(-) 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 da5003ea..36d71812 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 -- GitLab