From d4ef420e78ca503b07064de1536391e8e4dfed7d Mon Sep 17 00:00:00 2001 From: Tom Clegg Date: Tue, 19 Nov 2013 01:04:58 -0800 Subject: [PATCH] Add threading locks in Keep client --- sdk/python/arvados.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/sdk/python/arvados.py b/sdk/python/arvados.py index 4d7f2d845c..ebe6bf3121 100644 --- a/sdk/python/arvados.py +++ b/sdk/python/arvados.py @@ -16,6 +16,7 @@ import bz2 import zlib import fcntl import time +import threading from apiclient import errors from apiclient.discovery import build @@ -789,10 +790,12 @@ class Keep: class KeepClient: def __init__(self): + self.lock = threading.Lock() self.service_roots = None def shuffled_service_roots(self, hash): if self.service_roots == None: + self.lock.acquire() keep_disks = api().keep_disks().list().execute()['items'] roots = (("http%s://%s:%d/" % ('s' if f['service_ssl_flag'] else '', @@ -801,6 +804,7 @@ class KeepClient: for f in keep_disks) self.service_roots = sorted(set(roots)) logging.debug(str(self.service_roots)) + self.lock.release() seed = hash pool = self.service_roots[:] pseq = [] -- 2.30.2