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):
-- Mailing list: https://launchpad.net/~canonical-ubuntu-qa Post to : canonical-ubuntu-qa@lists.launchpad.net Unsubscribe : https://launchpad.net/~canonical-ubuntu-qa More help : https://help.launchpad.net/ListHelp