Closed Bug 1228088 Opened 9 years ago Closed 8 years ago

Upgrade hg.mozilla.org to Mercurial 3.7

Categories

(Developer Services :: Mercurial: hg.mozilla.org, defect)

defect
Not set
normal

Tracking

(Not tracked)

RESOLVED FIXED

People

(Reporter: gps, Assigned: gps)

References

Details

Attachments

(13 files)

58 bytes, text/x-review-board-request
dminor
: review+
Details
58 bytes, text/x-review-board-request
dminor
: review+
Details
58 bytes, text/x-review-board-request
dminor
: review+
Details
58 bytes, text/x-review-board-request
dminor
: review+
Details
58 bytes, text/x-review-board-request
dminor
: review+
Details
58 bytes, text/x-review-board-request
fubar
: review+
Details
58 bytes, text/x-review-board-request
dminor
: review+
Details
58 bytes, text/x-review-board-request
dminor
: review+
Details
58 bytes, text/x-review-board-request
dminor
: review+
Details
58 bytes, text/x-review-board-request
dminor
: review+
Details
58 bytes, text/x-review-board-request
Details
58 bytes, text/x-review-board-request
dminor
: review+
Details
58 bytes, text/x-review-board-request
dminor
: review+
Details
Per our deployment schedule, this should happen around March 1, 2016.

Filing the bug now to track backwards compatibility concerns.

3.7 creates generaldelta repos by default. We likely want to create non-generaldelta repos on the server. Otherwise legacy clients requesting data from generaldelta repos will blow up CPU on the server. I doubt we'll be able to mass convert repos to generaldelta until end of 2016 at the earliest.
We'll want to globally set format.usegeneraldelta=false to prevent new repos from being created with generaldelta. At some point (once most clients are using bundle2), we'll want to consider mass converting repos to generaldelta to get space and CPU savings.
The upgrade is tentatively scheduled for March 7.
Assignee: nobody → gps
Status: NEW → ASSIGNED
Mercurial 3.7 throws a warning when bookmarks.write() is called.
Call bookmarks.recordchange() instead. This API has been around since at
least Mercurial 3.3.

Review commit: https://reviewboard.mozilla.org/r/37297/diff/#index_header
See other reviews: https://reviewboard.mozilla.org/r/37297/
Attachment #8725056 - Flags: review?(dminor)
Mercurial 3.7 prints a warning when bookmarks.write() is called.
Switch to bookmarks.recordchange(), which is the preferred API.

Review commit: https://reviewboard.mozilla.org/r/37299/diff/#index_header
See other reviews: https://reviewboard.mozilla.org/r/37299/
Attachment #8725057 - Flags: review?(dminor)
Let's upgrade the test environment to 3.7 before we switch over the
Ansible infrastructure.

Review commit: https://reviewboard.mozilla.org/r/37301/diff/#index_header
See other reviews: https://reviewboard.mozilla.org/r/37301/
Attachment #8725058 - Flags: review?(dminor)
Mercurial 3.7 creates generaldelta repositories by default. This can be
problematic on hg.mozilla.org.

Mercurial clients that don't support bundle2 require servers serving
generaldelta repositories to re-encode the data to non-generaldelta.
This can require a lot of CPU, especially for large repositories.

Eventually, we'll want to use generaldelta on hg.mozilla.org. However,
until most clients are modern, we risk a CPU explosion when serving
generaldelta repos to legacy clients. To play it safe, we disable
generaldelta on new repositories by default.

Review commit: https://reviewboard.mozilla.org/r/37303/diff/#index_header
See other reviews: https://reviewboard.mozilla.org/r/37303/
Attachment #8725059 - Flags: review?(dminor)
Mercurial 3.7 removed the clone bundles server-side advertisement.
So let's stop testing that it appears.

Review commit: https://reviewboard.mozilla.org/r/37305/diff/#index_header
See other reviews: https://reviewboard.mozilla.org/r/37305/
Attachment #8725060 - Flags: review?(dminor)
TODO use 3.7.2 when it is released.

We mass upgrade the world (except for Autoland) to Mercurial 3.7.

Review commit: https://reviewboard.mozilla.org/r/37307/diff/#index_header
See other reviews: https://reviewboard.mozilla.org/r/37307/
Attachment #8725061 - Flags: review?(klibby)
`hg histedit` has become less chatty in modern versions of Mercurial.
This was causing tests to fail due to inconsistent output between
versions.

This commit greps out output that varies between versions so tests pass.

Review commit: https://reviewboard.mozilla.org/r/37309/diff/#index_header
See other reviews: https://reviewboard.mozilla.org/r/37309/
Attachment #8725062 - Flags: review?(dminor)
Mercurial 3.7 is issuing warnings when running tests that the revset
functions in mozext are returning lists instead of revset classes.

mozext was one of the first Mercurial extensions I wrote. It is one of
the oldest and doesn't exactly contain the best patterns or modern API
usage.

This commit brings the revset code into the modern age. Most of the
changes involve calling subset.filter() to lazily evaluate a revset.
Before, we iterated over the subset, which meant that we had to evaluate
every element before returning. This almost certainly made a number of
revset queries slower than they should have been.

Review commit: https://reviewboard.mozilla.org/r/37311/diff/#index_header
See other reviews: https://reviewboard.mozilla.org/r/37311/
Attachment #8725063 - Flags: review?(dminor)
parent changed from a generator to a lambda. A number of other keys were
added. We filter them to keep test output the same. We should consider
displaying them some day...

Review commit: https://reviewboard.mozilla.org/r/37313/diff/#index_header
See other reviews: https://reviewboard.mozilla.org/r/37313/
Attachment #8725064 - Flags: review?(dminor)
The bundleclone extension no longer works in Mercurial 3.7 because
localrepository.clone (the function it overrides to do most of the
special clone work) no longer exists.

The extension no-ops when the server supports clone bundles anyway. So
it was already doing nothing on 3.6 when clone bundles was enabled.

We update the tests to not run on 3.7+. We also add a new test that
verifies 3.7+ continues to work (as a no-op).

Review commit: https://reviewboard.mozilla.org/r/37315/diff/#index_header
See other reviews: https://reviewboard.mozilla.org/r/37315/
Attachment #8725065 - Flags: review?(dminor)
Imported changeset f9f888fb96f4 from the hg-experimental upstream repo.
The test has been modified to be compatible with the new version.

The "testedwith" value in the extension has been updated to reflect
reality (the extension only works with Mercurial 3.7 it appears).

Review commit: https://reviewboard.mozilla.org/r/37317/diff/#index_header
See other reviews: https://reviewboard.mozilla.org/r/37317/
Attachment #8725061 - Flags: review?(klibby) → review+
Comment on attachment 8725061 [details]
MozReview Request: ansible: upgrade to Mercurial 3.7.2 (bug 1228088); r?fubar

https://reviewboard.mozilla.org/r/37307/#review33923

lgtm
Comment on attachment 8725056 [details]
MozReview Request: mozext: use bookmarks.recordchange (bug 1228088); r=dminor

https://reviewboard.mozilla.org/r/37297/#review33927
Attachment #8725056 - Flags: review?(dminor) → review+
Attachment #8725057 - Flags: review?(dminor) → review+
Comment on attachment 8725057 [details]
MozReview Request: mozhg: use bookmarks.recordchange (bug 1228088); r=dminor

https://reviewboard.mozilla.org/r/37299/#review33931
Attachment #8725058 - Flags: review?(dminor) → review+
Comment on attachment 8725058 [details]
MozReview Request: testing: use Mercurial 3.7.2 in test environment (bug 1228088); r=dminor

https://reviewboard.mozilla.org/r/37301/#review33933
Comment on attachment 8725059 [details]
MozReview Request: ansible/hg: disable generaldelta on new repos (bug 1228088); r=dminor

https://reviewboard.mozilla.org/r/37303/#review33935
Attachment #8725059 - Flags: review?(dminor) → review+
Comment on attachment 8725060 [details]
MozReview Request: hgserver: remove test for clone bundles advertisement (bug 1228088); r=dminor

https://reviewboard.mozilla.org/r/37305/#review33937
Attachment #8725060 - Flags: review?(dminor) → review+
Attachment #8725062 - Flags: review?(dminor) → review+
Comment on attachment 8725062 [details]
MozReview Request: reviewboard: prune output not relevant to test; r=dminor

https://reviewboard.mozilla.org/r/37309/#review33939
Comment on attachment 8725063 [details]
MozReview Request: mozext: use modern revset APIs (bug 1228088); r=dminor

https://reviewboard.mozilla.org/r/37311/#review33947

::: hgext/mozext/__init__.py:882
(Diff revision 1)
> +    def filter(x):

There's a builtin function called filter(), please use a different name.
Attachment #8725063 - Flags: review?(dminor)
Comment on attachment 8725064 [details]
MozReview Request: hgmo: make automationrelevance API compatible with Mercurial 3.7 (bug 1228088); r=dminor

https://reviewboard.mozilla.org/r/37313/#review33951

::: hgext/hgmo/__init__.py:391
(Diff revision 1)
> -            elif k in ('bookmarks', 'branches', 'changelogtag', 'child', 'inbranch', 'tags'):
> +            elif k in ('bookmarks', 'branch', 'branches', 'changelogtag', 'child', 'inbranch', 'phase', 'tags'):

Please move the deletes to the top of the control structure, I think it will improve readability as you have to add more special cases.
Attachment #8725064 - Flags: review?(dminor)
Comment on attachment 8725065 [details]
MozReview Request: bundleclone: make testing compatible with Mercurial 3.7 (bug 1228088); r=dminor

https://reviewboard.mozilla.org/r/37315/#review33953
Attachment #8725065 - Flags: review?(dminor) → review+
Comment on attachment 8725056 [details]
MozReview Request: mozext: use bookmarks.recordchange (bug 1228088); r=dminor

Review request updated; see interdiff: https://reviewboard.mozilla.org/r/37297/diff/1-2/
Attachment #8725056 - Attachment description: MozReview Request: mozext: use bookmarks.recordchange (bug 1228088); r?dminor → MozReview Request: mozext: use bookmarks.recordchange (bug 1228088); r=dminor
Comment on attachment 8725057 [details]
MozReview Request: mozhg: use bookmarks.recordchange (bug 1228088); r=dminor

Review request updated; see interdiff: https://reviewboard.mozilla.org/r/37299/diff/1-2/
Attachment #8725057 - Attachment description: MozReview Request: mozhg: use bookmarks.recordchange (bug 1228088); r?dminor → MozReview Request: mozhg: use bookmarks.recordchange (bug 1228088); r=dminor
Comment on attachment 8725058 [details]
MozReview Request: testing: use Mercurial 3.7.2 in test environment (bug 1228088); r=dminor

Review request updated; see interdiff: https://reviewboard.mozilla.org/r/37301/diff/1-2/
Attachment #8725058 - Attachment description: MozReview Request: testing: use Mercurial 3.7.1 in test environment (bug 1228088); r?dminor → MozReview Request: testing: use Mercurial 3.7.1 in test environment (bug 1228088); r=dminor
Comment on attachment 8725059 [details]
MozReview Request: ansible/hg: disable generaldelta on new repos (bug 1228088); r=dminor

Review request updated; see interdiff: https://reviewboard.mozilla.org/r/37303/diff/1-2/
Attachment #8725059 - Attachment description: MozReview Request: ansible/hg: disable generaldelta on new repos (bug 1228088); r?dminor → MozReview Request: ansible/hg: disable generaldelta on new repos (bug 1228088); r=dminor
Comment on attachment 8725060 [details]
MozReview Request: hgserver: remove test for clone bundles advertisement (bug 1228088); r=dminor

Review request updated; see interdiff: https://reviewboard.mozilla.org/r/37305/diff/1-2/
Attachment #8725060 - Attachment description: MozReview Request: hgserver: remove test for clone bundles advertisement (bug 1228088); r?dminor → MozReview Request: hgserver: remove test for clone bundles advertisement (bug 1228088); r=dminor
Comment on attachment 8725061 [details]
MozReview Request: ansible: upgrade to Mercurial 3.7.2 (bug 1228088); r?fubar

Review request updated; see interdiff: https://reviewboard.mozilla.org/r/37307/diff/1-2/
Attachment #8725061 - Attachment description: MozReview Request: ansible: upgrade to Mercurial 3.7 (bug 1228088); r?fubar → MozReview Request: ansible: upgrade to Mercurial 3.7 (bug 1228088)
Comment on attachment 8725062 [details]
MozReview Request: reviewboard: prune output not relevant to test; r=dminor

Review request updated; see interdiff: https://reviewboard.mozilla.org/r/37309/diff/1-2/
Attachment #8725062 - Attachment description: MozReview Request: reviewboard: prune output not relevant to test; r?dminor → MozReview Request: reviewboard: prune output not relevant to test; r=dminor
Comment on attachment 8725063 [details]
MozReview Request: mozext: use modern revset APIs (bug 1228088); r=dminor

Review request updated; see interdiff: https://reviewboard.mozilla.org/r/37311/diff/1-2/
Attachment #8725063 - Flags: review?(dminor)
Attachment #8725064 - Flags: review?(dminor)
Comment on attachment 8725064 [details]
MozReview Request: hgmo: make automationrelevance API compatible with Mercurial 3.7 (bug 1228088); r=dminor

Review request updated; see interdiff: https://reviewboard.mozilla.org/r/37313/diff/1-2/
Comment on attachment 8725065 [details]
MozReview Request: bundleclone: make testing compatible with Mercurial 3.7 (bug 1228088); r=dminor

Review request updated; see interdiff: https://reviewboard.mozilla.org/r/37315/diff/1-2/
Attachment #8725065 - Attachment description: MozReview Request: bundleclone: make testing compatible with Mercurial 3.7 (bug 1228088); r?dminor → MozReview Request: bundleclone: make testing compatible with Mercurial 3.7 (bug 1228088); r=dminor
Comment on attachment 8725066 [details]
MozReview Request: pushrebase: upgrade extension

Review request updated; see interdiff: https://reviewboard.mozilla.org/r/37317/diff/1-2/
Comment on attachment 8725056 [details]
MozReview Request: mozext: use bookmarks.recordchange (bug 1228088); r=dminor

Review request updated; see interdiff: https://reviewboard.mozilla.org/r/37297/diff/2-3/
Comment on attachment 8725057 [details]
MozReview Request: mozhg: use bookmarks.recordchange (bug 1228088); r=dminor

Review request updated; see interdiff: https://reviewboard.mozilla.org/r/37299/diff/2-3/
Comment on attachment 8725058 [details]
MozReview Request: testing: use Mercurial 3.7.2 in test environment (bug 1228088); r=dminor

Review request updated; see interdiff: https://reviewboard.mozilla.org/r/37301/diff/2-3/
Attachment #8725058 - Attachment description: MozReview Request: testing: use Mercurial 3.7.1 in test environment (bug 1228088); r=dminor → MozReview Request: testing: use Mercurial 3.7.2 in test environment (bug 1228088); r=dminor
Comment on attachment 8725059 [details]
MozReview Request: ansible/hg: disable generaldelta on new repos (bug 1228088); r=dminor

Review request updated; see interdiff: https://reviewboard.mozilla.org/r/37303/diff/2-3/
Comment on attachment 8725060 [details]
MozReview Request: hgserver: remove test for clone bundles advertisement (bug 1228088); r=dminor

Review request updated; see interdiff: https://reviewboard.mozilla.org/r/37305/diff/2-3/
Comment on attachment 8725061 [details]
MozReview Request: ansible: upgrade to Mercurial 3.7.2 (bug 1228088); r?fubar

Review request updated; see interdiff: https://reviewboard.mozilla.org/r/37307/diff/2-3/
Attachment #8725061 - Attachment description: MozReview Request: ansible: upgrade to Mercurial 3.7 (bug 1228088) → MozReview Request: ansible: upgrade to Mercurial 3.7.2 (bug 1228088); r?fubar
Comment on attachment 8725062 [details]
MozReview Request: reviewboard: prune output not relevant to test; r=dminor

Review request updated; see interdiff: https://reviewboard.mozilla.org/r/37309/diff/2-3/
Comment on attachment 8725063 [details]
MozReview Request: mozext: use modern revset APIs (bug 1228088); r=dminor

Review request updated; see interdiff: https://reviewboard.mozilla.org/r/37311/diff/2-3/
Comment on attachment 8725064 [details]
MozReview Request: hgmo: make automationrelevance API compatible with Mercurial 3.7 (bug 1228088); r=dminor

Review request updated; see interdiff: https://reviewboard.mozilla.org/r/37313/diff/2-3/
Comment on attachment 8725065 [details]
MozReview Request: bundleclone: make testing compatible with Mercurial 3.7 (bug 1228088); r=dminor

Review request updated; see interdiff: https://reviewboard.mozilla.org/r/37315/diff/2-3/
Comment on attachment 8725066 [details]
MozReview Request: pushrebase: upgrade extension

Review request updated; see interdiff: https://reviewboard.mozilla.org/r/37317/diff/2-3/
Comment on attachment 8725063 [details]
MozReview Request: mozext: use modern revset APIs (bug 1228088); r=dminor

https://reviewboard.mozilla.org/r/37311/#review34111
Attachment #8725063 - Flags: review?(dminor) → review+
Comment on attachment 8725064 [details]
MozReview Request: hgmo: make automationrelevance API compatible with Mercurial 3.7 (bug 1228088); r=dminor

https://reviewboard.mozilla.org/r/37313/#review34113
Attachment #8725064 - Flags: review?(dminor) → review+
Comment on attachment 8725056 [details]
MozReview Request: mozext: use bookmarks.recordchange (bug 1228088); r=dminor

Review request updated; see interdiff: https://reviewboard.mozilla.org/r/37297/diff/3-4/
Comment on attachment 8725057 [details]
MozReview Request: mozhg: use bookmarks.recordchange (bug 1228088); r=dminor

Review request updated; see interdiff: https://reviewboard.mozilla.org/r/37299/diff/3-4/
Comment on attachment 8725058 [details]
MozReview Request: testing: use Mercurial 3.7.2 in test environment (bug 1228088); r=dminor

Review request updated; see interdiff: https://reviewboard.mozilla.org/r/37301/diff/3-4/
Comment on attachment 8725059 [details]
MozReview Request: ansible/hg: disable generaldelta on new repos (bug 1228088); r=dminor

Review request updated; see interdiff: https://reviewboard.mozilla.org/r/37303/diff/3-4/
Comment on attachment 8725060 [details]
MozReview Request: hgserver: remove test for clone bundles advertisement (bug 1228088); r=dminor

Review request updated; see interdiff: https://reviewboard.mozilla.org/r/37305/diff/3-4/
Comment on attachment 8725061 [details]
MozReview Request: ansible: upgrade to Mercurial 3.7.2 (bug 1228088); r?fubar

Review request updated; see interdiff: https://reviewboard.mozilla.org/r/37307/diff/3-4/
Comment on attachment 8725062 [details]
MozReview Request: reviewboard: prune output not relevant to test; r=dminor

Review request updated; see interdiff: https://reviewboard.mozilla.org/r/37309/diff/3-4/
Comment on attachment 8725063 [details]
MozReview Request: mozext: use modern revset APIs (bug 1228088); r=dminor

Review request updated; see interdiff: https://reviewboard.mozilla.org/r/37311/diff/3-4/
Attachment #8725063 - Attachment description: MozReview Request: mozext: use modern revset APIs (bug 1228088); r?dminor → MozReview Request: mozext: use modern revset APIs (bug 1228088); r=dminor
Comment on attachment 8725064 [details]
MozReview Request: hgmo: make automationrelevance API compatible with Mercurial 3.7 (bug 1228088); r=dminor

Review request updated; see interdiff: https://reviewboard.mozilla.org/r/37313/diff/3-4/
Attachment #8725064 - Attachment description: MozReview Request: hgmo: make automationrelevance API compatible with Mercurial 3.7 (bug 1228088); r?dminor → MozReview Request: hgmo: make automationrelevance API compatible with Mercurial 3.7 (bug 1228088); r=dminor
Comment on attachment 8725065 [details]
MozReview Request: bundleclone: make testing compatible with Mercurial 3.7 (bug 1228088); r=dminor

Review request updated; see interdiff: https://reviewboard.mozilla.org/r/37315/diff/3-4/
Comment on attachment 8725066 [details]
MozReview Request: pushrebase: upgrade extension

Review request updated; see interdiff: https://reviewboard.mozilla.org/r/37317/diff/3-4/
Templates from the Mercurial 3.7.2 release have been applied.

This should be a rubber stamp review, since we don't modify any of these
files.

Review commit: https://reviewboard.mozilla.org/r/37681/diff/#index_header
See other reviews: https://reviewboard.mozilla.org/r/37681/
Attachment #8725890 - Flags: review?(dminor)
Attachment #8725890 - Flags: review?(dminor) → review+
Comment on attachment 8725890 [details]
MozReview Request: hgtemplates: synchronize templates from Mercurial 3.7.2 (bug 1228088); r?dminor

https://reviewboard.mozilla.org/r/37681/#review34387
Comment on attachment 8725891 [details]
MozReview Request: hgtemplates: incorporate gitweb theme changes into gitweb_mozilla (bug 1228088); r?dminor

https://reviewboard.mozilla.org/r/37683/#review34389
Attachment #8725891 - Flags: review?(dminor) → review+
https://hg.mozilla.org/hgcustom/version-control-tools/rev/426d0e678374586ae615c6fafcf96706b5c1e3a1
mozext: use bookmarks.recordchange (bug 1228088); r=dminor

https://hg.mozilla.org/hgcustom/version-control-tools/rev/a091ebaf6accb3601b3856da4ccf3bdd80b5eedc
mozhg: use bookmarks.recordchange (bug 1228088); r=dminor

https://hg.mozilla.org/hgcustom/version-control-tools/rev/80570c2b3a9dae0a9b5c84dfb42ed024bd461deb
testing: use Mercurial 3.7.2 in test environment (bug 1228088); r=dminor

https://hg.mozilla.org/hgcustom/version-control-tools/rev/edc7cb44cd7c724bfc4810a9c52fd406c0e6ee3c
ansible/hg: disable generaldelta on new repos (bug 1228088); r=dminor

https://hg.mozilla.org/hgcustom/version-control-tools/rev/be2895740fbdf17f18244da05efd8e1e18f8973a
hgserver: remove test for clone bundles advertisement (bug 1228088); r=dminor

https://hg.mozilla.org/hgcustom/version-control-tools/rev/559836f39d9a8c74aed702d7aa2c13775558d5b2
ansible: upgrade to Mercurial 3.7.2 (bug 1228088); r=fubar

https://hg.mozilla.org/hgcustom/version-control-tools/rev/1d0b011a119f3c57fb7192f33300b0be5473d346
mozext: use modern revset APIs (bug 1228088); r=dminor

https://hg.mozilla.org/hgcustom/version-control-tools/rev/3f78fde149c210a797d2541fc9b5f2768009b6a3
hgmo: make automationrelevance API compatible with Mercurial 3.7 (bug 1228088); r=dminor

https://hg.mozilla.org/hgcustom/version-control-tools/rev/aac2644370fde517e857eaa79cd2f4e10932a59c
bundleclone: make testing compatible with Mercurial 3.7 (bug 1228088); r=dminor

https://hg.mozilla.org/hgcustom/version-control-tools/rev/24a1062cc93832448cc7d39623d394d5e532f796
hgtemplates: synchronize templates from Mercurial 3.7.2 (bug 1228088); r=dminor

https://hg.mozilla.org/hgcustom/version-control-tools/rev/6d36f5109c50a3920a3656c25709f85ef081fade
hgtemplates: incorporate gitweb theme changes into gitweb_mozilla (bug 1228088); r=dminor
hg.mozilla.org is now running Mercurial 3.7.2. Upgrade appeared to go off without any major hitches.
Status: ASSIGNED → RESOLVED
Closed: 8 years ago
Resolution: --- → FIXED
Blocks: 1254670
Blocks: 1351848
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: