[ARVADOS] created: 2.1.0-194-g3083521d8

Git user git at public.arvados.org
Tue Dec 8 15:57:34 UTC 2020


        at  3083521d8b6c83b0d80e4f63c56ee434ad8fa697 (commit)


commit 3083521d8b6c83b0d80e4f63c56ee434ad8fa697
Author: Tom Clegg <tom at tomclegg.ca>
Date:   Mon Dec 7 13:43:23 2020 -0500

    17199: Avoid returning same port twice from find_available_port().
    
    Arvados-DCO-1.1-Signed-off-by: Tom Clegg <tom at tomclegg.ca>

diff --git a/sdk/python/tests/run_test_server.py b/sdk/python/tests/run_test_server.py
index 0cb4151ac..c79aa4e94 100644
--- a/sdk/python/tests/run_test_server.py
+++ b/sdk/python/tests/run_test_server.py
@@ -73,6 +73,7 @@ if not os.path.exists(TEST_TMPDIR):
 my_api_host = None
 _cached_config = {}
 _cached_db_config = {}
+_already_used_port = {}
 
 def find_server_pid(PID_PATH, wait=10):
     now = time.time()
@@ -181,11 +182,15 @@ def find_available_port():
     would take care of the races, and this wouldn't be needed at all.
     """
 
-    sock = socket.socket()
-    sock.bind(('0.0.0.0', 0))
-    port = sock.getsockname()[1]
-    sock.close()
-    return port
+    global _already_used_port
+    while True:
+        sock = socket.socket()
+        sock.bind(('0.0.0.0', 0))
+        port = sock.getsockname()[1]
+        sock.close()
+        if port not in _already_used_port:
+            _already_used_port[port] = True
+            return port
 
 def _wait_until_port_listens(port, timeout=10, warn=True):
     """Wait for a process to start listening on the given port.

-----------------------------------------------------------------------


hooks/post-receive
-- 




More information about the arvados-commits mailing list