summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorJohn W. Parent <45471568+johnwparent@users.noreply.github.com>2024-05-15 15:41:51 -0400
committerGitHub <noreply@github.com>2024-05-15 15:41:51 -0400
commit43291aa723f48a326c6d613c5f481a48ef4198e9 (patch)
tree992238aae32a7f2896815baabaab0bfbc74c2886 /lib
parentd0589285f72bc6ec9b5f804612448954dcdf819c (diff)
downloadspack-43291aa723f48a326c6d613c5f481a48ef4198e9.tar.gz
spack-43291aa723f48a326c6d613c5f481a48ef4198e9.tar.bz2
spack-43291aa723f48a326c6d613c5f481a48ef4198e9.tar.xz
spack-43291aa723f48a326c6d613c5f481a48ef4198e9.zip
Cdash reporting timeout (#44213)
* Add timeout to cdash reporter PUT request Add cdash timeout everywhere Correct mock responder api * Style * brief doc
Diffstat (limited to 'lib')
-rw-r--r--lib/spack/spack/ci.py7
-rw-r--r--lib/spack/spack/reporters/cdash.py5
-rw-r--r--lib/spack/spack/test/ci.py2
3 files changed, 8 insertions, 6 deletions
diff --git a/lib/spack/spack/ci.py b/lib/spack/spack/ci.py
index f0b9d8defe..c08d2e00a1 100644
--- a/lib/spack/spack/ci.py
+++ b/lib/spack/spack/ci.py
@@ -44,6 +44,7 @@ import spack.util.web as web_util
from spack import traverse
from spack.error import SpackError
from spack.reporters import CDash, CDashConfiguration
+from spack.reporters.cdash import SPACK_CDASH_TIMEOUT
from spack.reporters.cdash import build_stamp as cdash_build_stamp
# See https://docs.gitlab.com/ee/ci/yaml/#retry for descriptions of conditions
@@ -1506,7 +1507,7 @@ def download_and_extract_artifacts(url, work_dir):
request = Request(url, headers=headers)
request.get_method = lambda: "GET"
- response = opener.open(request)
+ response = opener.open(request, timeout=SPACK_CDASH_TIMEOUT)
response_code = response.getcode()
if response_code != 200:
@@ -2254,7 +2255,7 @@ hash={spec.dag_hash()} arch={spec.architecture} ({self.build_group})"
request = Request(url, data=enc_data, headers=headers)
- response = opener.open(request)
+ response = opener.open(request, timeout=SPACK_CDASH_TIMEOUT)
response_code = response.getcode()
if response_code not in [200, 201]:
@@ -2300,7 +2301,7 @@ hash={spec.dag_hash()} arch={spec.architecture} ({self.build_group})"
request = Request(url, data=enc_data, headers=headers)
request.get_method = lambda: "PUT"
- response = opener.open(request)
+ response = opener.open(request, timeout=SPACK_CDASH_TIMEOUT)
response_code = response.getcode()
if response_code != 200:
diff --git a/lib/spack/spack/reporters/cdash.py b/lib/spack/spack/reporters/cdash.py
index 502f89d764..0c140a488d 100644
--- a/lib/spack/spack/reporters/cdash.py
+++ b/lib/spack/spack/reporters/cdash.py
@@ -58,7 +58,8 @@ MAP_PHASES_TO_CDASH = {
# Initialize data structures common to each phase's report.
CDASH_PHASES = set(MAP_PHASES_TO_CDASH.values())
CDASH_PHASES.add("update")
-
+# CDash request timeout in seconds
+SPACK_CDASH_TIMEOUT = 45
CDashConfiguration = collections.namedtuple(
"CDashConfiguration", ["upload_url", "packages", "build", "site", "buildstamp", "track"]
@@ -447,7 +448,7 @@ class CDash(Reporter):
# By default, urllib2 only support GET and POST.
# CDash expects this file to be uploaded via PUT.
request.get_method = lambda: "PUT"
- response = opener.open(request)
+ response = opener.open(request, timeout=SPACK_CDASH_TIMEOUT)
if self.current_package_name not in self.buildIds:
resp_value = response.read()
if isinstance(resp_value, bytes):
diff --git a/lib/spack/spack/test/ci.py b/lib/spack/spack/test/ci.py
index 4eef036ddb..f3d47c45e9 100644
--- a/lib/spack/spack/test/ci.py
+++ b/lib/spack/spack/test/ci.py
@@ -51,7 +51,7 @@ class FakeWebResponder:
self._content = content_to_read
self._read = [False for c in content_to_read]
- def open(self, request):
+ def open(self, request, data=None, timeout=object()):
return self
def getcode(self):