diff --git a/swh/web/common/origin_save.py b/swh/web/common/origin_save.py --- a/swh/web/common/origin_save.py +++ b/swh/web/common/origin_save.py @@ -148,19 +148,25 @@ def _get_visit_info_for_save_request(save_request): visit_date = None visit_status = None - try: - origin = {"url": save_request.origin_url} - origin_info = service.lookup_origin(origin) - origin_visits = get_origin_visits(origin_info) - visit_dates = [parse_timestamp(v["date"]) for v in origin_visits] - i = bisect_right(visit_dates, save_request.request_date) - if i != len(visit_dates): - visit_date = visit_dates[i] - visit_status = origin_visits[i]["status"] - if origin_visits[i]["status"] == "ongoing": - visit_date = None - except Exception as exc: - sentry_sdk.capture_exception(exc) + time_now = datetime.now(tz=timezone.utc) + time_delta = time_now - save_request.request_date + # stop trying to find a visit date one month after save request submission + # as those requests to storage are expensive and associated loading task + # surely ended up with errors + if time_delta.days <= 30: + try: + origin = {"url": save_request.origin_url} + origin_info = service.lookup_origin(origin) + origin_visits = get_origin_visits(origin_info) + visit_dates = [parse_timestamp(v["date"]) for v in origin_visits] + i = bisect_right(visit_dates, save_request.request_date) + if i != len(visit_dates): + visit_date = visit_dates[i] + visit_status = origin_visits[i]["status"] + if origin_visits[i]["status"] == "ongoing": + visit_date = None + except Exception as exc: + sentry_sdk.capture_exception(exc) return visit_date, visit_status