Closed
Bug 1464077
Opened 7 years ago
Closed 7 years ago
Teach vcsreplicator about phase data exchange over bundle2
Categories
(Developer Services :: Mercurial: hg.mozilla.org, enhancement)
Developer Services
Mercurial: hg.mozilla.org
Tracking
(Not tracked)
RESOLVED
FIXED
People
(Reporter: sheehan, Assigned: gps)
References
Details
Attachments
(1 file)
From D1376:
> Mercurial 4.4 supports exchanging phases data via bundle2. Before
> 4.4, clients would send phases data via a "pushkey" wire protocol
> command.
>
> As part of upgrading the SSH server to 4.4, phases exchange behavior
> will change and this will throw off vcsreplicator.
>
> In order to smooth the transition to Mercurial 4.4, this change
> disables the new 4.4 server behavior of allowing phases to be
> exchanged via bundle2. In other words, it makes a 4.4+ server
> behave like a 4.3 server.
>
> My intent is for this hack to be temporary. Once vcsreplicator is
> taught about the new bundle2 capabilities, we should be able
> to remove this hack."
>
Filing this bug to track that work.
Assignee | ||
Comment 1•7 years ago
|
||
I have a patch in progress.
Assignee: nobody → gps
Status: NEW → ASSIGNED
Comment 2•7 years ago
|
||
Mercurial 4.4 supports sending phases via bundle2. When we deployed
4.4 on hgssh, we disabled this feature because it confused the
replication system.
Specifically, when phases are updated via bundle2, Mercurial
doesn't fire a pushkey hook indicating phases were updated. The
replication mechanism wouldn't see any activity and wouldn't emit
any messages to trigger replication. In other words, it looked like
a no-op push.
This commit teaches the replication system about phases pushed via
bundle2.
We monkeypatch the bundle2 part handler for phases data. When we
process a phases part for a bundle2 that doesn't have a corresponding
changegroup part, we record the phases changes and convert them to
pushkey events. These get turned into pushkey messages, which result
in the replication system running `hg debugpushkey` to apply them.
The Ansible config disabling phases exchange has been removed, allowing
new clients to opt in to the new mechanism.
A test case where bundle2 phases exchange is disabled has been added.
Test output doesn't change. This is good, as it means that the
replication system preserves the current behavior. There were test
output changes in test-push-basic.t, which resulted from clients
pushing phases via bundle2 and the server not firing the pushkey hook.
Since the vcsreplicator extensions should now be fully compatible with
Mercurial 4.5, their version compatibility has been updated
accordingly.
Comment 3•7 years ago
|
||
Comment on attachment 8982041 [details]
vcsreplicator: handle phases exchange via bundle2 (bug 1464077); r?sheehan
Connor Sheehan [:sheehan] has approved the revision.
https://phabricator.services.mozilla.com/D1471
Attachment #8982041 -
Flags: review+
Pushed by cosheehan@mozilla.com:
https://hg.mozilla.org/hgcustom/version-control-tools/rev/7d11a3d11ba5
vcsreplicator: handle phases exchange via bundle2 ; r=sheehan
Status: ASSIGNED → RESOLVED
Closed: 7 years ago
Resolution: --- → FIXED
Assignee | ||
Comment 5•7 years ago
|
||
This was backed out in https://hg.mozilla.org/hgcustom/version-control-tools/rev/c768bd76da27 for causing bug 1467025.
Status: RESOLVED → REOPENED
Resolution: FIXED → ---
Pushed by gszorc@mozilla.com:
https://hg.mozilla.org/hgcustom/version-control-tools/rev/07a2dcbf8db4
vcsreplicator: handle phases exchange via bundle2 ; r=sheehan
Status: REOPENED → RESOLVED
Closed: 7 years ago → 7 years ago
Resolution: --- → FIXED
You need to log in
before you can comment on or make changes to this bug.
Description
•