Pushlogs from hg.mozilla.org are empty

RESOLVED FIXED

Status

task
RESOLVED FIXED
5 years ago
5 years ago

People

(Reporter: epinal99-bugzilla2, Assigned: bkero)

Tracking

(Blocks 1 bug, {regression})

Details

Reporter

Description

5 years ago
Open http://hg.mozilla.org/mozilla-central/pushloghtml?fromchange=8648aa476eef&tochange=9688476c1544

Result: blank page.

Expected: I should see the list of bugfixes.
Blocks: 1053705

Updated

5 years ago
Keywords: regression
OS: Windows 7 → All
Hardware: x86_64 → All
Severity: normal → critical
With no params the page at least returns the template,  but still no changesets:
https://hg.mozilla.org/integration/mozilla-inbound/pushloghtml

Though interestingly (and fortunate, since TBPL uses it) the json version of this works:
http://hg.mozilla.org/mozilla-central/json-pushes?full=1
(In reply to Ed Morley [:edmorley] from comment #1)
> With no params the page at least returns the template,  but still no
> changesets:
> https://hg.mozilla.org/integration/mozilla-inbound/pushloghtml

Actually, that's not due to the params, mozilla-inbound returns an empty template, mozilla-central a blank page:
http://hg.mozilla.org/mozilla-central/pushloghtml
Assignee: nobody → server-ops-devservices
Component: Mercurial Pushlog → Server Operations: Developer Services
Product: Webtools → mozilla.org
QA Contact: nmaul
Version: Trunk → other
Blocks: 1068520
Severity: critical → major
Lowering so Onduty doesn't get paged.
Severity: major → normal
Assignee

Comment 4

5 years ago
I've managed to patch this in a patch to pushlog-feed.py. This can be seen in the latest revision in http://hg.mozilla.org/hgcustom/pushlog/

diff -r 0ffe19e2e343 -r ac1d016df8fb pushlog-feed.py
--- a/pushlog-feed.py   Wed Sep 11 14:02:52 2013 -0400
+++ b/pushlog-feed.py   Mon Sep 22 00:03:26 2014 -0700
@@ -345,8 +345,9 @@
     def nodeinbranch(repo, ctx):
         branches = []
         branch = ctx.branch()
-        if branch != 'default' and repo.branchtags().get(branch) != ctx.node():
-            branches.append({"name": branch})
+        if hasattr(repo, 'branchtags'):
+            if branch != 'default' and repo.branchtags().get(branch) != ctx.node():
+                branches.append({"name": branch})
         return branches
      def changenav():

The branchtags() method was removed in the changeset listed here: http://hg.intevation.org/mercurial/crew/rev/4274eda143cb
Assignee: server-ops-devservices → bkero
Status: NEW → RESOLVED
Closed: 5 years ago
Resolution: --- → FIXED
Duplicate of this bug: 1070848
Should this be fixed already on hg.m.o? Or does this take a while to reach live servers?
Fixed in 86e6470a7c55 (branchtags shows up in two places) and apache gracefully restarted. Checked each web head and they're all showing data. Shout if you see anything else amiss.

diff -r ac1d016df8fb pushlog-feed.py
--- a/pushlog-feed.py	Mon Sep 22 00:03:26 2014 -0700
+++ b/pushlog-feed.py	Mon Sep 22 08:39:22 2014 -0400
@@ -338,8 +338,9 @@
         # If this is an empty repo, ctx.node() == nullid,
         # ctx.branch() == 'default', but branchtags() is
         # an empty dict. Using dict.get avoids a traceback.
-        if repo.branchtags().get(branch) == ctx.node():
-            branches.append({"name": branch})
+        if hasattr(repo, 'branchtags'):
+            if repo.branchtags().get(branch) == ctx.node():
+                branches.append({"name": branch})
         return branches
 
     def nodeinbranch(repo, ctx):
Thank you - looks good now :-)
:fubar

While this certainly did fix it for the reported issue, there is a followup to do which regressed with this update:

https://hg.mozilla.org/releases/mozilla-beta/pushloghtml?changeset=d179d51ba70c

Note for example, that the specified cset landed on a branch (easy to verify by clicking down to hg's main view), however pushloghtml doesn't actually show that its a branch, while it used to.

Your change basically makes the "old mercurial used repo.branchtags() -- while in new thats invalid" not raise a real exception that breaks things.

n-i to you and gps to figure out the best path forward here.
Flags: needinfo?(klibby)
Flags: needinfo?(gps)
I know sod all about python, nevermind the hg internals; I just carried on what ben started. Alternatively, patches accepted.
Flags: needinfo?(klibby)
Assignee

Comment 11

5 years ago
If I can read this:

        # If this is an empty repo, ctx.node() == nullid,
        # ctx.branch() == 'default', but branchtags() is
        # an empty dict. Using dict.get avoids a traceback.
        if repo.branchtags().get(branch) == ctx.node():
            branches.append({"name": branch})

correctly, the code block was designed to avoid a traceback, not to throw one in the event of an empty repository.

This bug belongs to me and gps is out until next week. If you're familiar with the code and the change in Mercurial 2.9, could you offer an alternate fix for the problem?

Additionally, I don't see the problem in the example you provided. Could you provide some additional information to help me understand the issue?
Let's keep this bug for the "outage" (fixed), and track the other needs in a new bug. I've opened bug 1071296 for that, and transferred the ni there
Flags: needinfo?(gps)
Component: Server Operations: Developer Services → General
Product: mozilla.org → Developer Services
You need to log in before you can comment on or make changes to this bug.