[ARVADOS] updated: 2.1.0-2486-gd49403ac7
Git user
git at public.arvados.org
Mon May 16 16:27:03 UTC 2022
Summary of changes:
sdk/python/arvados/api.py | 5 +++++
sdk/python/arvados/commands/get.py | 6 +-----
sdk/python/tests/test_arv_get.py | 5 ++++-
3 files changed, 10 insertions(+), 6 deletions(-)
via d49403ac749fffe24ac6357597e6014bb65efa30 (commit)
from 1e7856bffea0d0ecfcf940de90243dea0fbd3c2f (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
commit d49403ac749fffe24ac6357597e6014bb65efa30
Author: Peter Amstutz <peter.amstutz at curii.com>
Date: Mon May 16 12:24:43 2022 -0400
17004: Fix lingering resource error
* Remove legacy global api_client from arv-get
* Monkey patch close_connections() method to close keepalive connections
* Use close_connections to tear down lingering connections from arv get test setup
Arvados-DCO-1.1-Signed-off-by: Peter Amstutz <peter.amstutz at curii.com>
diff --git a/sdk/python/arvados/api.py b/sdk/python/arvados/api.py
index e0d1c50f0..db1d0f4e1 100644
--- a/sdk/python/arvados/api.py
+++ b/sdk/python/arvados/api.py
@@ -133,6 +133,10 @@ def _patch_http_request(http, api_token):
http._request_id = util.new_request_id
return http
+def _close_connections(self):
+ for conn in self._http.connections.values():
+ conn.close()
+
# Monkey patch discovery._cast() so objects and arrays get serialized
# with json.dumps() instead of str().
_cast_orig = apiclient_discovery._cast
@@ -254,6 +258,7 @@ def api(version=None, cache=True, host=None, token=None, insecure=False,
svc.request_id = request_id
svc.config = lambda: util.get_config_once(svc)
svc.vocabulary = lambda: util.get_vocabulary_once(svc)
+ svc.close_connections = types.MethodType(_close_connections, svc)
kwargs['http'].max_request_size = svc._rootDesc.get('maxRequestSize', 0)
kwargs['http'].cache = None
kwargs['http']._request_id = lambda: svc.request_id or util.new_request_id()
diff --git a/sdk/python/arvados/commands/get.py b/sdk/python/arvados/commands/get.py
index c4262c59c..bb421def6 100755
--- a/sdk/python/arvados/commands/get.py
+++ b/sdk/python/arvados/commands/get.py
@@ -17,7 +17,6 @@ import arvados.util as util
from arvados._version import __version__
-api_client = None
logger = logging.getLogger('arvados.arv-get')
parser = argparse.ArgumentParser(
@@ -146,8 +145,6 @@ def parse_arguments(arguments, stdout, stderr):
return args
def main(arguments=None, stdout=sys.stdout, stderr=sys.stderr):
- global api_client
-
if stdout is sys.stdout and hasattr(stdout, 'buffer'):
# in Python 3, write to stdout as binary
stdout = stdout.buffer
@@ -158,8 +155,7 @@ def main(arguments=None, stdout=sys.stdout, stderr=sys.stderr):
request_id = arvados.util.new_request_id()
logger.info('X-Request-Id: '+request_id)
- if api_client is None:
- api_client = arvados.api('v1', request_id=request_id)
+ api_client = arvados.api('v1', request_id=request_id)
r = re.search(r'^(.*?)(/.*)?$', args.locator)
col_loc = r.group(1)
diff --git a/sdk/python/tests/test_arv_get.py b/sdk/python/tests/test_arv_get.py
index 733cd6478..73ef2475b 100644
--- a/sdk/python/tests/test_arv_get.py
+++ b/sdk/python/tests/test_arv_get.py
@@ -49,12 +49,15 @@ class ArvadosGetTestCase(run_test_server.TestCaseWithServers,
'bar.txt' : 'bar',
'subdir/baz.txt' : 'baz',
}):
- c = collection.Collection()
+ api = arvados.api()
+ c = collection.Collection(api_client=api)
for path, data in listitems(contents):
with c.open(path, 'wb') as f:
f.write(data)
c.save_new()
+ api.close_connections()
+
return (c.manifest_locator(),
c.portable_data_hash(),
c.manifest_text(strip=strip_manifest))
-----------------------------------------------------------------------
hooks/post-receive
--
More information about the arvados-commits
mailing list