diff --git a/castor/scheduler/diskmanager/runningtransfersset.py b/castor/scheduler/diskmanager/runningtransfersset.py index ed12436acb8c5d0d9bca18d3672bdd2ed20c3083..7f9aecbe6cab995468576dd61611a73a8a629cd8 100644 --- a/castor/scheduler/diskmanager/runningtransfersset.py +++ b/castor/scheduler/diskmanager/runningtransfersset.py @@ -152,13 +152,21 @@ class RunningTransfersSet(object): def get(self, transferid): '''get a transfer by transferid. Raise KeyError if not found''' - for t in self.transfers: - if t.transfer.transferId == transferid: - return t + self.lock.acquire() + try: + for t in self.transfers: + if t.transfer.transferId == transferid: + return t + finally: + self.lock.release() # try a tape transfer - for t in self.tapeTransfers: - if t.transferId == transferid: - return t + self.tapelock.acquire() + try: + for t in self.tapeTransfers: + if t.transferId == transferid: + return t + finally: + self.tapelock.acquire() raise KeyError def setProcess(self, transferid, process):