prompt: We are currently solving the following issue within our repository. Here is the issue text:
  --- BEGIN ISSUE ---
  Timeout value too small: when downloading large model files, timeout is reached
  https://github.com/mlflow/mlflow/blob/d40780be361f4bd2741c2e8fcbd428c1d693edcf/mlflow/store/artifact/http_artifact_repo.py#L63
  
  --- END ISSUE ---
  
  Below are some code segments, each from a relevant file. One or more of these files may contain bugs.
  --- BEGIN FILES ---
  Path: `mlflow/store/artifact/http_artifact_repo.py`
  Content:
  ```
  1 import os
  2 import posixpath
  3 
  4 from mlflow.entities import FileInfo
  5 from mlflow.store.artifact.artifact_repo import ArtifactRepository, verify_artifact_path
  6 from mlflow.tracking._tracking_service.utils import _get_default_host_creds
  7 from mlflow.utils.file_utils import relative_path_to_artifact_path
  8 from mlflow.utils.rest_utils import augmented_raise_for_status, http_request
  9 
  10 
  11 class HttpArtifactRepository(ArtifactRepository):
  12     """Stores artifacts in a remote artifact storage using HTTP requests"""
  13 
  14     @property
  15     def _host_creds(self):
  16         return _get_default_host_creds(self.artifact_uri)
  17 
  18     def log_artifact(self, local_file, artifact_path=None):
  19         verify_artifact_path(artifact_path)
  20 
  21         file_name = os.path.basename(local_file)
  22         paths = (artifact_path, file_name) if artifact_path else (file_name,)
  23         endpoint = posixpath.join("/", *paths)
  24         with open(local_file, "rb") as f:
  25             resp = http_request(self._host_creds, endpoint, "PUT", data=f, timeout=600)
  26             augmented_raise_for_status(resp)
  27 
  28     def log_artifacts(self, local_dir, artifact_path=None):
  29         local_dir = os.path.abspath(local_dir)
  30         for root, _, filenames in os.walk(local_dir):
  31             if root == local_dir:
  32                 artifact_dir = artifact_path
  33             else:
  34                 rel_path = os.path.relpath(root, local_dir)
  35                 rel_path = relative_path_to_artifact_path(rel_path)
  36                 artifact_dir = (
  37                     posixpath.join(artifact_path, rel_path) if artifact_path else rel_path
  38                 )
  39             for f in filenames:
  40                 self.log_artifact(os.path.join(root, f), artifact_dir)
  41 
  42     def list_artifacts(self, path=None):
  43         endpoint = "/mlflow-artifacts/artifacts"
  44         url, tail = self.artifact_uri.split(endpoint, maxsplit=1)
  45         root = tail.lstrip("/")
  46         params = {"path": posixpath.join(root, path) if path else root}
  47         host_creds = _get_default_host_creds(url)
  48         resp = http_request(host_creds, endpoint, "GET", params=params, timeout=10)
  49         augmented_raise_for_status(resp)
  50         file_infos = []
  51         for f in resp.json().get("files", []):
  52             file_info = FileInfo(
  53                 posixpath.join(path, f["path"]) if path else f["path"],
  54                 f["is_dir"],
  55                 int(f["file_size"]) if ("file_size" in f) else None,
  56             )
  57             file_infos.append(file_info)
  58 
  59         return sorted(file_infos, key=lambda f: f.path)
  60 
  61     def _download_file(self, remote_file_path, local_path):
  62         endpoint = posixpath.join("/", remote_file_path)
  63         resp = http_request(self._host_creds, endpoint, "GET", stream=True, timeout=10)
  64         augmented_raise_for_status(resp)
  65         with open(local_path, "wb") as f:
  66             chunk_size = 1024 * 1024  # 1 MB
  67             for chunk in resp.iter_content(chunk_size=chunk_size):
  68                 f.write(chunk)
  69 
  70     def delete_artifacts(self, artifact_path=None):
  71         endpoint = posixpath.join("/", artifact_path) if artifact_path else "/"
  72         resp = http_request(self._host_creds, endpoint, "DELETE", stream=True, timeout=10)
  73         augmented_raise_for_status(resp)
  74
  ```
  --- END FILES ---
  
  Please first localize the bug based on the issue statement, and then generate a patch according to the `git diff` format fenced by three backticks.
  
  Here is an example:
  
  ```diff
  diff --git a/examples/server_async.py b/examples/server_async.py
  --- a/examples/server_async.py
  +++ b/examples/server_async.py
  @@ -313,4 +313,4 @@
   
   
   if __name__ == "__main__":
  -    asyncio.run(run_async_server("."), debug=True)
  +    asyncio.run(run_async_server(), debug=True)
  diff --git a/examples/server_sync.py b/examples/server_sync.py
  --- a/examples/server_sync.py
  +++ b/examples/server_sync.py
  @@ -313,5 +313,5 @@
   
   
   if __name__ == "__main__":
  -    server = run_sync_server(".")
  +    server = run_sync_server()
       server.shutdown()
  
  ```
  
golden_diff: diff --git a/mlflow/store/artifact/http_artifact_repo.py b/mlflow/store/artifact/http_artifact_repo.py
  --- a/mlflow/store/artifact/http_artifact_repo.py
  +++ b/mlflow/store/artifact/http_artifact_repo.py
  @@ -22,7 +22,7 @@
           paths = (artifact_path, file_name) if artifact_path else (file_name,)
           endpoint = posixpath.join("/", *paths)
           with open(local_file, "rb") as f:
  -            resp = http_request(self._host_creds, endpoint, "PUT", data=f, timeout=600)
  +            resp = http_request(self._host_creds, endpoint, "PUT", data=f)
               augmented_raise_for_status(resp)
   
       def log_artifacts(self, local_dir, artifact_path=None):
  @@ -45,7 +45,7 @@
           root = tail.lstrip("/")
           params = {"path": posixpath.join(root, path) if path else root}
           host_creds = _get_default_host_creds(url)
  -        resp = http_request(host_creds, endpoint, "GET", params=params, timeout=10)
  +        resp = http_request(host_creds, endpoint, "GET", params=params)
           augmented_raise_for_status(resp)
           file_infos = []
           for f in resp.json().get("files", []):
  @@ -60,7 +60,7 @@
   
       def _download_file(self, remote_file_path, local_path):
           endpoint = posixpath.join("/", remote_file_path)
  -        resp = http_request(self._host_creds, endpoint, "GET", stream=True, timeout=10)
  +        resp = http_request(self._host_creds, endpoint, "GET", stream=True)
           augmented_raise_for_status(resp)
           with open(local_path, "wb") as f:
               chunk_size = 1024 * 1024  # 1 MB
  @@ -69,5 +69,5 @@
   
       def delete_artifacts(self, artifact_path=None):
           endpoint = posixpath.join("/", artifact_path) if artifact_path else "/"
  -        resp = http_request(self._host_creds, endpoint, "DELETE", stream=True, timeout=10)
  +        resp = http_request(self._host_creds, endpoint, "DELETE", stream=True)
           augmented_raise_for_status(resp)
  
verification_info: {"golden_diff": "diff --git a/mlflow/store/artifact/http_artifact_repo.py b/mlflow/store/artifact/http_artifact_repo.py\n--- a/mlflow/store/artifact/http_artifact_repo.py\n+++ b/mlflow/store/artifact/http_artifact_repo.py\n@@ -22,7 +22,7 @@\n         paths = (artifact_path, file_name) if artifact_path else (file_name,)\n         endpoint = posixpath.join(\"/\", *paths)\n         with open(local_file, \"rb\") as f:\n-            resp = http_request(self._host_creds, endpoint, \"PUT\", data=f, timeout=600)\n+            resp = http_request(self._host_creds, endpoint, \"PUT\", data=f)\n             augmented_raise_for_status(resp)\n \n     def log_artifacts(self, local_dir, artifact_path=None):\n@@ -45,7 +45,7 @@\n         root = tail.lstrip(\"/\")\n         params = {\"path\": posixpath.join(root, path) if path else root}\n         host_creds = _get_default_host_creds(url)\n-        resp = http_request(host_creds, endpoint, \"GET\", params=params, timeout=10)\n+        resp = http_request(host_creds, endpoint, \"GET\", params=params)\n         augmented_raise_for_status(resp)\n         file_infos = []\n         for f in resp.json().get(\"files\", []):\n@@ -60,7 +60,7 @@\n \n     def _download_file(self, remote_file_path, local_path):\n         endpoint = posixpath.join(\"/\", remote_file_path)\n-        resp = http_request(self._host_creds, endpoint, \"GET\", stream=True, timeout=10)\n+        resp = http_request(self._host_creds, endpoint, \"GET\", stream=True)\n         augmented_raise_for_status(resp)\n         with open(local_path, \"wb\") as f:\n             chunk_size = 1024 * 1024  # 1 MB\n@@ -69,5 +69,5 @@\n \n     def delete_artifacts(self, artifact_path=None):\n         endpoint = posixpath.join(\"/\", artifact_path) if artifact_path else \"/\"\n-        resp = http_request(self._host_creds, endpoint, \"DELETE\", stream=True, timeout=10)\n+        resp = http_request(self._host_creds, endpoint, \"DELETE\", stream=True)\n         augmented_raise_for_status(resp)\n", "issue": "Timeout value too small: when downloading large model files, timeout is reached\nhttps://github.com/mlflow/mlflow/blob/d40780be361f4bd2741c2e8fcbd428c1d693edcf/mlflow/store/artifact/http_artifact_repo.py#L63\n", "before_files": [{"content": "import os\nimport posixpath\n\nfrom mlflow.entities import FileInfo\nfrom mlflow.store.artifact.artifact_repo import ArtifactRepository, verify_artifact_path\nfrom mlflow.tracking._tracking_service.utils import _get_default_host_creds\nfrom mlflow.utils.file_utils import relative_path_to_artifact_path\nfrom mlflow.utils.rest_utils import augmented_raise_for_status, http_request\n\n\nclass HttpArtifactRepository(ArtifactRepository):\n    \"\"\"Stores artifacts in a remote artifact storage using HTTP requests\"\"\"\n\n    @property\n    def _host_creds(self):\n        return _get_default_host_creds(self.artifact_uri)\n\n    def log_artifact(self, local_file, artifact_path=None):\n        verify_artifact_path(artifact_path)\n\n        file_name = os.path.basename(local_file)\n        paths = (artifact_path, file_name) if artifact_path else (file_name,)\n        endpoint = posixpath.join(\"/\", *paths)\n        with open(local_file, \"rb\") as f:\n            resp = http_request(self._host_creds, endpoint, \"PUT\", data=f, timeout=600)\n            augmented_raise_for_status(resp)\n\n    def log_artifacts(self, local_dir, artifact_path=None):\n        local_dir = os.path.abspath(local_dir)\n        for root, _, filenames in os.walk(local_dir):\n            if root == local_dir:\n                artifact_dir = artifact_path\n            else:\n                rel_path = os.path.relpath(root, local_dir)\n                rel_path = relative_path_to_artifact_path(rel_path)\n                artifact_dir = (\n                    posixpath.join(artifact_path, rel_path) if artifact_path else rel_path\n                )\n            for f in filenames:\n                self.log_artifact(os.path.join(root, f), artifact_dir)\n\n    def list_artifacts(self, path=None):\n        endpoint = \"/mlflow-artifacts/artifacts\"\n        url, tail = self.artifact_uri.split(endpoint, maxsplit=1)\n        root = tail.lstrip(\"/\")\n        params = {\"path\": posixpath.join(root, path) if path else root}\n        host_creds = _get_default_host_creds(url)\n        resp = http_request(host_creds, endpoint, \"GET\", params=params, timeout=10)\n        augmented_raise_for_status(resp)\n        file_infos = []\n        for f in resp.json().get(\"files\", []):\n            file_info = FileInfo(\n                posixpath.join(path, f[\"path\"]) if path else f[\"path\"],\n                f[\"is_dir\"],\n                int(f[\"file_size\"]) if (\"file_size\" in f) else None,\n            )\n            file_infos.append(file_info)\n\n        return sorted(file_infos, key=lambda f: f.path)\n\n    def _download_file(self, remote_file_path, local_path):\n        endpoint = posixpath.join(\"/\", remote_file_path)\n        resp = http_request(self._host_creds, endpoint, \"GET\", stream=True, timeout=10)\n        augmented_raise_for_status(resp)\n        with open(local_path, \"wb\") as f:\n            chunk_size = 1024 * 1024  # 1 MB\n            for chunk in resp.iter_content(chunk_size=chunk_size):\n                f.write(chunk)\n\n    def delete_artifacts(self, artifact_path=None):\n        endpoint = posixpath.join(\"/\", artifact_path) if artifact_path else \"/\"\n        resp = http_request(self._host_creds, endpoint, \"DELETE\", stream=True, timeout=10)\n        augmented_raise_for_status(resp)\n", "path": "mlflow/store/artifact/http_artifact_repo.py"}], "after_files": [{"content": "import os\nimport posixpath\n\nfrom mlflow.entities import FileInfo\nfrom mlflow.store.artifact.artifact_repo import ArtifactRepository, verify_artifact_path\nfrom mlflow.tracking._tracking_service.utils import _get_default_host_creds\nfrom mlflow.utils.file_utils import relative_path_to_artifact_path\nfrom mlflow.utils.rest_utils import augmented_raise_for_status, http_request\n\n\nclass HttpArtifactRepository(ArtifactRepository):\n    \"\"\"Stores artifacts in a remote artifact storage using HTTP requests\"\"\"\n\n    @property\n    def _host_creds(self):\n        return _get_default_host_creds(self.artifact_uri)\n\n    def log_artifact(self, local_file, artifact_path=None):\n        verify_artifact_path(artifact_path)\n\n        file_name = os.path.basename(local_file)\n        paths = (artifact_path, file_name) if artifact_path else (file_name,)\n        endpoint = posixpath.join(\"/\", *paths)\n        with open(local_file, \"rb\") as f:\n            resp = http_request(self._host_creds, endpoint, \"PUT\", data=f)\n            augmented_raise_for_status(resp)\n\n    def log_artifacts(self, local_dir, artifact_path=None):\n        local_dir = os.path.abspath(local_dir)\n        for root, _, filenames in os.walk(local_dir):\n            if root == local_dir:\n                artifact_dir = artifact_path\n            else:\n                rel_path = os.path.relpath(root, local_dir)\n                rel_path = relative_path_to_artifact_path(rel_path)\n                artifact_dir = (\n                    posixpath.join(artifact_path, rel_path) if artifact_path else rel_path\n                )\n            for f in filenames:\n                self.log_artifact(os.path.join(root, f), artifact_dir)\n\n    def list_artifacts(self, path=None):\n        endpoint = \"/mlflow-artifacts/artifacts\"\n        url, tail = self.artifact_uri.split(endpoint, maxsplit=1)\n        root = tail.lstrip(\"/\")\n        params = {\"path\": posixpath.join(root, path) if path else root}\n        host_creds = _get_default_host_creds(url)\n        resp = http_request(host_creds, endpoint, \"GET\", params=params)\n        augmented_raise_for_status(resp)\n        file_infos = []\n        for f in resp.json().get(\"files\", []):\n            file_info = FileInfo(\n                posixpath.join(path, f[\"path\"]) if path else f[\"path\"],\n                f[\"is_dir\"],\n                int(f[\"file_size\"]) if (\"file_size\" in f) else None,\n            )\n            file_infos.append(file_info)\n\n        return sorted(file_infos, key=lambda f: f.path)\n\n    def _download_file(self, remote_file_path, local_path):\n        endpoint = posixpath.join(\"/\", remote_file_path)\n        resp = http_request(self._host_creds, endpoint, \"GET\", stream=True)\n        augmented_raise_for_status(resp)\n        with open(local_path, \"wb\") as f:\n            chunk_size = 1024 * 1024  # 1 MB\n            for chunk in resp.iter_content(chunk_size=chunk_size):\n                f.write(chunk)\n\n    def delete_artifacts(self, artifact_path=None):\n        endpoint = posixpath.join(\"/\", artifact_path) if artifact_path else \"/\"\n        resp = http_request(self._host_creds, endpoint, \"DELETE\", stream=True)\n        augmented_raise_for_status(resp)\n", "path": "mlflow/store/artifact/http_artifact_repo.py"}]}