canonical-ubuntu-qa team mailing list archive
-
canonical-ubuntu-qa team
-
Mailing list archive
-
Message #03584
[Merge] ~hyask/autopkgtest-cloud:skia/fix_broken_cache_amqp into autopkgtest-cloud:master
Skia has proposed merging ~hyask/autopkgtest-cloud:skia/fix_broken_cache_amqp into autopkgtest-cloud:master.
Requested reviews:
Canonical's Ubuntu QA (canonical-ubuntu-qa)
For more details, see:
https://code.launchpad.net/~hyask/autopkgtest-cloud/+git/autopkgtest-cloud/+merge/463281
Those changes are the proper fix for the current cowboys fixing the package results pages.
--
Your team Canonical's Ubuntu QA is requested to review the proposed merge of ~hyask/autopkgtest-cloud:skia/fix_broken_cache_amqp into autopkgtest-cloud:master.
diff --git a/charms/focal/autopkgtest-web/webcontrol/browse.cgi b/charms/focal/autopkgtest-web/webcontrol/browse.cgi
index 5e5217b..739abe8 100755
--- a/charms/focal/autopkgtest-web/webcontrol/browse.cgi
+++ b/charms/focal/autopkgtest-web/webcontrol/browse.cgi
@@ -284,19 +284,34 @@ def package_overview(package, _=None):
(k, v) for (k, v) in get_running_jobs().items() if k == package
)
- (_, _, queues_info) = get_queues_info()
- for queue_name, queue in queues_info.items():
- for release in queue:
- for arch in queue[release]:
- filtered_requests = [
- r
- for r in queue[release][arch][1]
- if r.startswith(package + "\n")
- ]
- queues_info[queue_name][release][arch] = (
- len(filtered_requests), # update the size too
- filtered_requests,
- )
+ try:
+ (_, _, queues_info) = get_queues_info()
+ for queue_name, queue in queues_info.items():
+ for release in queue:
+ for arch in queue[release]:
+ filtered_requests = [
+ r
+ for r in queue[release][arch][1]
+ if r.startswith(package + "\n")
+ ]
+ queues_info[queue_name][release][arch] = (
+ len(filtered_requests), # update the size too
+ filtered_requests,
+ )
+ except Exception:
+ # We never want to fail in that block, even is there are issues with cache-amqp
+ queues_info = {
+ "error": {
+ "no-release": {
+ "no-arch": [
+ 1,
+ [
+ "There are errors in cache-amqp, please contact QA team"
+ ],
+ ]
+ }
+ }
+ }
return render(
"browse-package.html",
@@ -376,49 +391,89 @@ def package_release_arch(package, release, arch, _=None):
)
# Add running jobs if any
- for _, running_jobs in get_running_jobs().get(package, {}).items():
- job = running_jobs.get(release, {}).get(arch, {})
- if job:
- results.insert(
- 0,
- (
- "N/A",
- job[0].get("triggers"),
- "N/A",
- human_date(job[0].get("submit-time")),
- human_sec(int(job[1])),
- job[0].get("requester", "-"),
- "running",
- "",
- False,
- "",
- job[0].get("uuid", "-"),
- ),
- )
-
- # Add queued jobs if any
- (_, _, queues_info) = get_queues_info()
- for _, queue in queues_info.items():
- queue_items = queue.get(release, {}).get(arch, [0, []])[1]
- for item in queue_items:
- if item.startswith(package + "\n"):
- item_info = json.loads(item.split("\n")[1])
+ try:
+ for _, running_jobs in get_running_jobs().get(package, {}).items():
+ job = running_jobs.get(release, {}).get(arch, {})
+ if job:
results.insert(
0,
(
"N/A",
- item_info.get("triggers"),
- "N/A",
- human_date(item_info.get("submit-time")),
+ job[0].get("triggers"),
"N/A",
- "-",
- "queued",
+ human_date(job[0].get("submit-time")),
+ human_sec(int(job[1])),
+ job[0].get("requester", "-"),
+ "running",
"",
False,
"",
- item_info.get("uuid", ""),
+ job[0].get("uuid", "-"),
),
)
+ except Exception:
+ # We never want to fail in that block, even is there are issues with cache-amqp
+ # Let's signal the error in the page, but still display other results
+ results.insert(
+ 0,
+ (
+ "Unknown running list",
+ "There are errors in running.json",
+ "Please contact QA team",
+ "",
+ "",
+ "",
+ "",
+ "",
+ False,
+ "",
+ "",
+ ),
+ )
+
+ # Add queued jobs if any
+ try:
+ (_, _, queues_info) = get_queues_info()
+ for _, queue in queues_info.items():
+ queue_items = queue.get(release, {}).get(arch, [0, []])[1]
+ for item in queue_items:
+ if item.startswith(package + "\n"):
+ item_info = json.loads(item.split("\n")[1])
+ results.insert(
+ 0,
+ (
+ "N/A",
+ item_info.get("triggers"),
+ "N/A",
+ human_date(item_info.get("submit-time")),
+ "N/A",
+ "-",
+ "queued",
+ "",
+ False,
+ "",
+ item_info.get("uuid", ""),
+ ),
+ )
+ except Exception:
+ # We never want to fail in that block, even is there are issues with cache-amqp
+ # Let's signal the error in the page, but still display other results
+ results.insert(
+ 0,
+ (
+ "Unknown queued list",
+ "There are errors in cache-amqp",
+ "Please contact QA team",
+ "",
+ "",
+ "",
+ "",
+ "",
+ False,
+ "",
+ "",
+ ),
+ )
return render(
"browse-results.html",
diff --git a/charms/focal/autopkgtest-web/webcontrol/cache-amqp b/charms/focal/autopkgtest-web/webcontrol/cache-amqp
index 6e87b8b..8ef3b5b 100755
--- a/charms/focal/autopkgtest-web/webcontrol/cache-amqp
+++ b/charms/focal/autopkgtest-web/webcontrol/cache-amqp
@@ -133,9 +133,10 @@ class AutopkgtestQueueContents:
):
r = "private job"
res.append(r)
- except (ValueError, IndexError):
- logging.error('Received invalid request format "%s"', r)
- return
+ except (ValueError, IndexError) as e:
+ logging.warning(
+ 'Received invalid request format "%s" (%s)', r, repr(e)
+ )
return res
def get_queue_contents(self):