diff --git a/dev/deploy-to-container/settings_local.py b/dev/deploy-to-container/settings_local.py index b7c7212cf46..aaee07f0eab 100644 --- a/dev/deploy-to-container/settings_local.py +++ b/dev/deploy-to-container/settings_local.py @@ -90,7 +90,12 @@ access_key="minio_root", secret_key="minio_pass", security_token=None, - client_config=botocore.config.Config(signature_version="s3v4"), + client_config=botocore.config.Config( + signature_version="s3v4", + connect_timeout=BLOBSTORAGE_CONNECT_TIMEOUT, + read_timeout=BLOBSTORAGE_READ_TIMEOUT, + retries={"total_max_attempts": BLOBSTORAGE_MAX_ATTEMPTS}, + ), verify=False, bucket_name=f"test-{storagename}", ), diff --git a/dev/diff/settings_local.py b/dev/diff/settings_local.py index 8940d0b87f6..c52ee6d8abb 100644 --- a/dev/diff/settings_local.py +++ b/dev/diff/settings_local.py @@ -77,7 +77,12 @@ access_key="minio_root", secret_key="minio_pass", security_token=None, - client_config=botocore.config.Config(signature_version="s3v4"), + client_config=botocore.config.Config( + signature_version="s3v4", + connect_timeout=BLOBSTORAGE_CONNECT_TIMEOUT, + read_timeout=BLOBSTORAGE_READ_TIMEOUT, + retries={"total_max_attempts": BLOBSTORAGE_MAX_ATTEMPTS}, + ), verify=False, bucket_name=f"test-{storagename}", ), diff --git a/dev/tests/settings_local.py b/dev/tests/settings_local.py index aa4fb6550ac..db1676d4847 100644 --- a/dev/tests/settings_local.py +++ b/dev/tests/settings_local.py @@ -76,7 +76,12 @@ access_key="minio_root", secret_key="minio_pass", security_token=None, - client_config=botocore.config.Config(signature_version="s3v4"), + client_config=botocore.config.Config( + signature_version="s3v4", + connect_timeout=BLOBSTORAGE_CONNECT_TIMEOUT, + read_timeout=BLOBSTORAGE_READ_TIMEOUT, + retries={"total_max_attempts": BLOBSTORAGE_MAX_ATTEMPTS}, + ), verify=False, bucket_name=f"test-{storagename}", ), diff --git a/docker/configs/settings_local.py b/docker/configs/settings_local.py index 7f3d180737f..73a625ea3c4 100644 --- a/docker/configs/settings_local.py +++ b/docker/configs/settings_local.py @@ -47,7 +47,12 @@ access_key="minio_root", secret_key="minio_pass", security_token=None, - client_config=botocore.config.Config(signature_version="s3v4"), + client_config=botocore.confg.Config( + signature_version="s3v4", + connect_timeout=BLOBSTORAGE_CONNECT_TIMEOUT, + read_timeout=BLOBSTORAGE_READ_TIMEOUT, + retries={"total_max_attempts": BLOBSTORAGE_MAX_ATTEMPTS}, + ), verify=False, bucket_name=storagename, ), diff --git a/ietf/settings.py b/ietf/settings.py index 9d0ab263867..faee42237c5 100644 --- a/ietf/settings.py +++ b/ietf/settings.py @@ -185,6 +185,10 @@ ENABLE_BLOBSTORAGE = True +BLOBSTORAGE_MAX_ATTEMPTS = 1 +BLOBSTORAGE_CONNECT_TIMEOUT = 2 +BLOBSTORAGE_READ_TIMEOUT = 2 + WSGI_APPLICATION = "ietf.wsgi.application" AUTHENTICATION_BACKENDS = ( 'ietf.ietfauth.backends.CaseInsensitiveModelBackend', ) diff --git a/ietf/settings_test.py b/ietf/settings_test.py index 9240f72ccca..9cdb4350971 100755 --- a/ietf/settings_test.py +++ b/ietf/settings_test.py @@ -123,7 +123,12 @@ def tempdir_with_cleanup(**kwargs): access_key=_blob_store_access_key, secret_key=_blob_store_secret_key, security_token=None, - client_config=botocore.config.Config(signature_version="s3v4"), + client_config=botocore.config.Config( + signature_version="s3v4", + connect_timeout=BLOBSTORAGE_CONNECT_TIMEOUT, + read_timeout=BLOBSTORAGE_READ_TIMEOUT, + retries={"total_max_attempts": BLOBSTORAGE_MAX_ATTEMPTS}, + ), bucket_name=f"{_blob_store_bucket_prefix}{storagename}", ietf_log_blob_timing=_blob_store_enable_profiling, ), diff --git a/k8s/settings_local.py b/k8s/settings_local.py index 7728459aa59..8f89894d1c9 100644 --- a/k8s/settings_local.py +++ b/k8s/settings_local.py @@ -315,6 +315,15 @@ def _multiline_to_list(s): _blob_store_enable_profiling = ( os.environ.get("DATATRACKER_BLOB_STORE_ENABLE_PROFILING", "false").lower() == "true" ) +_blob_store_max_attempts = ( + os.environ.get("DATATRACKER_BLOB_STORE_MAX_ATTEMPTS", BLOBSTORAGE_MAX_ATTEMPTS) +) +_blob_store_connect_timeout = ( + os.environ.get("DATATRACKER_BLOB_STORE_CONNECT_TIMEOUT", BLOBSTORAGE_CONNECT_TIMEOUT) +) +_blob_store_read_timeout = ( + os.environ.get("DATATRACKER_BLOB_STORE_READ_TIMEOUT", BLOBSTORAGE_READ_TIMEOUT) +) try: from ietf.settings import MORE_STORAGE_NAMES except ImportError: @@ -331,7 +340,12 @@ def _multiline_to_list(s): access_key=_blob_store_access_key, secret_key=_blob_store_secret_key, security_token=None, - client_config=botocore.config.Config(signature_version="s3v4"), + client_config=botocore.config.Config( + signature_version="s3v4", + connect_timeout=_blob_store_connect_timeout, + read_timeout=_blob_store_read_timeout, + retries={"total_max_attempts": _blob_store_max_attempts}, + ), bucket_name=f"{_blob_store_bucket_prefix}{storage_name}".strip(), ietf_log_blob_timing=_blob_store_enable_profiling, ),