projects
/
arvados.git
/ blobdiff
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
18794: Restart RailsAPI workers when config file changes.
[arvados.git]
/
sdk
/
python
/
arvados
/
keep.py
diff --git
a/sdk/python/arvados/keep.py
b/sdk/python/arvados/keep.py
index 0018687ff35a585c33ce07378acb7f05e0b98522..7c05cc0a6a2c72ca818686b6eea5c6f0a4874d3d 100644
(file)
--- a/
sdk/python/arvados/keep.py
+++ b/
sdk/python/arvados/keep.py
@@
-376,6
+376,7
@@
class KeepClient(object):
curl.setopt(pycurl.HEADERFUNCTION, self._headerfunction)
if self.insecure:
curl.setopt(pycurl.SSL_VERIFYPEER, 0)
curl.setopt(pycurl.HEADERFUNCTION, self._headerfunction)
if self.insecure:
curl.setopt(pycurl.SSL_VERIFYPEER, 0)
+ curl.setopt(pycurl.SSL_VERIFYHOST, 0)
else:
curl.setopt(pycurl.CAINFO, arvados.util.ca_certs_path())
if method == "HEAD":
else:
curl.setopt(pycurl.CAINFO, arvados.util.ca_certs_path())
if method == "HEAD":
@@
-478,6
+479,7
@@
class KeepClient(object):
curl.setopt(pycurl.HEADERFUNCTION, self._headerfunction)
if self.insecure:
curl.setopt(pycurl.SSL_VERIFYPEER, 0)
curl.setopt(pycurl.HEADERFUNCTION, self._headerfunction)
if self.insecure:
curl.setopt(pycurl.SSL_VERIFYPEER, 0)
+ curl.setopt(pycurl.SSL_VERIFYHOST, 0)
else:
curl.setopt(pycurl.CAINFO, arvados.util.ca_certs_path())
self._setcurltimeouts(curl, timeout)
else:
curl.setopt(pycurl.CAINFO, arvados.util.ca_certs_path())
self._setcurltimeouts(curl, timeout)
@@
-1034,9
+1036,10
@@
class KeepClient(object):
else:
return None
else:
return None
- def get_from_cache(self, loc):
+ def get_from_cache(self, loc
_s
):
"""Fetch a block only if is in the cache, otherwise return None."""
"""Fetch a block only if is in the cache, otherwise return None."""
- slot = self.block_cache.get(loc)
+ locator = KeepLocator(loc_s)
+ slot = self.block_cache.get(locator.md5sum)
if slot is not None and slot.ready.is_set():
return slot.get()
else:
if slot is not None and slot.ready.is_set():
return slot.get()
else:
@@
-1055,7
+1058,7
@@
class KeepClient(object):
def get(self, loc_s, **kwargs):
return self._get_or_head(loc_s, method="GET", **kwargs)
def get(self, loc_s, **kwargs):
return self._get_or_head(loc_s, method="GET", **kwargs)
- def _get_or_head(self, loc_s, method="GET", num_retries=None, request_id=None, headers=None):
+ def _get_or_head(self, loc_s, method="GET", num_retries=None, request_id=None, headers=None
, prefetch=False
):
"""Get data from Keep.
This method fetches one or more blocks of data from Keep. It
"""Get data from Keep.
This method fetches one or more blocks of data from Keep. It
@@
-1094,6
+1097,13
@@
class KeepClient(object):
if method == "GET":
slot, first = self.block_cache.reserve_cache(locator.md5sum)
if not first:
if method == "GET":
slot, first = self.block_cache.reserve_cache(locator.md5sum)
if not first:
+ if prefetch:
+ # this is request for a prefetch, if it is
+ # already in flight, return immediately.
+ # clear 'slot' to prevent finally block from
+ # calling slot.set()
+ slot = None
+ return None
self.hits_counter.add(1)
blob = slot.get()
if blob is None:
self.hits_counter.add(1)
blob = slot.get()
if blob is None:
@@
-1330,6
+1340,3
@@
class KeepClient(object):
return True
if os.path.exists(os.path.join(self.local_store, locator.md5sum)):
return True
return True
if os.path.exists(os.path.join(self.local_store, locator.md5sum)):
return True
-
- def is_cached(self, locator):
- return self.block_cache.reserve_cache(expect_hash)