Skip to content

Commit ad76fa2

Browse files
authored
better remote caching (#18411)
1 parent 3cc0aaf commit ad76fa2

File tree

1 file changed

+17
-3
lines changed

1 file changed

+17
-3
lines changed

conan/internal/rest/remote_manager.py

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -38,11 +38,13 @@ def check_credentials(self, remote, force_auth=False):
3838
def upload_recipe(self, ref, files_to_upload, remote):
3939
assert isinstance(ref, RecipeReference)
4040
assert ref.revision, "upload_recipe requires RREV"
41+
remote.invalidate_cache()
4142
self._call_remote(remote, "upload_recipe", ref, files_to_upload)
4243

4344
def upload_package(self, pref, files_to_upload, remote):
4445
assert pref.ref.revision, "upload_package requires RREV"
4546
assert pref.revision, "upload_package requires PREV"
47+
remote.invalidate_cache()
4648
self._call_remote(remote, "upload_package", pref, files_to_upload)
4749

4850
def get_recipe(self, ref, remote, metadata=None):
@@ -204,12 +206,15 @@ def search_packages(self, remote, ref):
204206
return packages
205207

206208
def remove_recipe(self, ref, remote):
209+
remote.invalidate_cache()
207210
return self._call_remote(remote, "remove_recipe", ref)
208211

209212
def remove_packages(self, prefs, remote):
213+
remote.invalidate_cache()
210214
return self._call_remote(remote, "remove_packages", prefs)
211215

212216
def remove_all_packages(self, ref, remote):
217+
remote.invalidate_cache()
213218
return self._call_remote(remote, "remove_all_packages", ref)
214219

215220
def authenticate(self, remote, name, password):
@@ -243,10 +248,19 @@ def get_latest_package_reference(self, pref, remote, info=None) -> PkgReference:
243248

244249
cached_method = remote._caching.setdefault("get_latest_package_reference", {})
245250
try:
246-
return cached_method[pref]
251+
result = cached_method[pref]
247252
except KeyError:
248-
result = self._call_remote(remote, "get_latest_package_reference", pref, headers=headers)
249-
cached_method[pref] = result
253+
try:
254+
result = self._call_remote(remote, "get_latest_package_reference", pref,
255+
headers=headers)
256+
cached_method[pref] = result
257+
return result
258+
except Exception as e:
259+
cached_method[pref] = e
260+
raise e
261+
else:
262+
if isinstance(result, Exception):
263+
raise result
250264
return result
251265

252266
def get_recipe_revision_reference(self, ref, remote) -> bool:

0 commit comments

Comments
 (0)