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):