Obsmarkers discovery: consider using the current experiment
Pierre-Yves David
pierre-yves.david at ens-lyon.org
Fri Jun 2 15:13:02 UTC 2017
Obsolescence Markers Discovery Experiment
=========================================
We are experimenting with a new protocol to discover common markers
between local and remote repositories. This experiment is still at an
early stage but is already raising better results than the previous
version when usable. So we recommend using it when possible.
Why a new obsmarkers discovery experiment?
==========================================
The current protocol is too fragile (new markers on old changesets means
many common markers won't be detected) and lack proper detection of
subsets (one cannot know if local have more of less markers than the
remote).
The new protocol detect common markers at a finer level and will be able
to properly detect common subsets (in the future).
(Once we'll be happy with the state of a protocol it will be implemented
in core)
Should I use it?
================
Yes, you should use it as long as your repository has less than 100 000
revisions. The current experiment perform better and has some cache
implemented.
On larger repository, the current experiment is not in a usable state
yet. To support them, we need to rewrites some naive implementation of a
key part of the algorithm that currently trigger a topological sorting
for the ancestors of each merges. This leads to N²-ish timing. This will
eventually get fixed. I'll send another email when this happens.
Will it eat my data?
====================
No, this has been running on production set for multiple weeks and
nothing bad has been reported. In addition, obsmarker discovery is just
about finding common markers to avoid sending too many over the wire. No
data can be eaten.
How do I turn it on?
====================
The current experiment is controled by a couple of config options.
Different value are commended for client and server.
Client config:
[experimental]
# enable new discovery protocol
# (needed on both client and server)
obshashrange = yes
# avoid cache warming after transaction
# (recommended 'off' for developer repositories)
obshashrange.warm-cache = no
Server config:
[experimental]
# enable new discovery protocol
# (needed on both client and server)
obshashrange = yes
# warm the caches after each transaction
# (recommended 'yes' for server (default))
obshashrange.warm-cache = yes
In all cases, it is recommended to enable the blackbox extension to
gather useful data about the experiment. It is shipped with Mercurial so
no extra installs are needed.
[extensions]
blackbox =
(more details available in "hg help -e evolve")
When will this new protocol be used by default ?
=================================================
There are multiple large tasks to be done here. Improving the
algorithms, better cache mechanism and format, support for subset
detection, etc⦠This will continue to move forward in the coming months
depending of the available manpower and funding.
--
Pierre-Yves David
More information about the Evolve-testers
mailing list