[PATCH 1 of 2 V2] peer: introduce a limitedarguments attributes

Martin von Zweigbergk martinvonz at google.com
Wed Apr 24 02:45:22 EDT 2019


On Tue, Apr 23, 2019 at 11:35 PM Pierre-Yves David <
pierre-yves.david at ens-lyon.org> wrote:

>
>
> On 4/17/19 8:33 PM, Martin von Zweigbergk wrote:
> >
> >
> > On Wed, Apr 17, 2019 at 10:41 AM Pierre-Yves David
> > <pierre-yves.david at ens-lyon.org <mailto:pierre-yves.david at ens-lyon.org>>
>
> > wrote:
> >
> >
> >
> >     On 4/17/19 7:17 PM, Martin von Zweigbergk wrote:
> >      >
> >      >
> >      > On Wed, Apr 17, 2019 at 10:07 AM Pierre-Yves David
> >      > <pierre-yves.david at ens-lyon.org
> >     <mailto:pierre-yves.david at ens-lyon.org>
> >     <mailto:pierre-yves.david at ens-lyon.org
> >     <mailto:pierre-yves.david at ens-lyon.org>>>
> >      > wrote:
> >      >
> >      >     # HG changeset patch
> >      >     # User Pierre-Yves David <pierre-yves.david at octobus.net
> >     <mailto:pierre-yves.david at octobus.net>
> >      >     <mailto:pierre-yves.david at octobus.net
> >     <mailto:pierre-yves.david at octobus.net>>>
> >      >     # Date 1555516590 -7200
> >      >     #      Wed Apr 17 17:56:30 2019 +0200
> >      >     # Node ID 6882a0101d389e27d697bf2e9717de176f273309
> >      >     # Parent  607a0de9bae31df526da75b68ab2853787d8c31e
> >      >     # EXP-Topic discovery-speedup
> >      >     # Available At https://bitbucket.org/octobus/mercurial-devel/
> >      >     #              hg pull
> >      > https://bitbucket.org/octobus/mercurial-devel/ -r 6882a0101d38
> >      >     peer: introduce a limitedarguments attributes
> >      >
> >      >     When set to True, it signal that the peer cannot receive too
> >     larges
> >      >     arguments
> >      >     and that algorithm must adapt. This should only be True for
> http
> >      >     peer that does
> >      >     not support argument passed as "post".
> >      >
> >      >     This will be useful to unlock better discovery performance in
> >     the next
> >      >     changesets.
> >      >
> >      >     I am using a dedicated argument because this is not really a
> >     usual
> >      >     "capabilities" things. An alternative approach would be to
> adds a
> >      >     "large-arguments" to all peer, but the http peers. That
> >     seemed a bit
> >      >     too hacky
> >      >     to me.
> >      >
> >      >     diff --git a/mercurial/httppeer.py b/mercurial/httppeer.py
> >      >     --- a/mercurial/httppeer.py
> >      >     +++ b/mercurial/httppeer.py
> >      >     @@ -382,6 +382,7 @@ class httppeer(wireprotov1peer.wirepeer)
> >      >               self._path = path
> >      >               self._url = url
> >      >               self._caps = caps
> >      >     +        self.limitedarguments = caps is not None and
> >     'httppostargs'
> >      >     not in caps
> >
> >
> > Should we limit them also if `caps is None`?
> >
> >      >
> >      >
> >      > Is `'httppostargs' not in caps` enough to know that httppostargs
> >     will be
> >      > used for the "heads" request?
> >
> >     the `httppostargs` capabilities is http specific and cannot be used
> >     outside of the httppeer code (for example, ssh server has no argument
> >     side issue but still won't says they are httppostargs capable).
> >
> >     (note: we are talking about the `known` command heres, `heads` takes
> no
> >     arguments)
> >
> >      > As I said in an earlier email, I'm not
> >      > sure it will be respected for GET requests (and "heads" is a GET
> >      > request, right?). Did you check that this will not result in a
> >     GET request?
> >
> >     I am a bit confused about what you mean here. `known` will be
> included
> >     into a batch command (or standalone for quite older server).  that
> >     command will be get of post according to `httppostargs`, won't it?
> >
> >     I don't think I understood what your final question is. Can you try
> >     again?
> >
> >
> > Question 1: Do "heads" and "known" request normally use GET or POST
> > (without this patch, without batching)?
> >
> > I believe the answer is "GET".
>
> I tried to figure out that part, but could not figure it out. If you
> know where to look, I would be happy to get a pointer
>
>
> > Question 2: Do "batch" requests use POST?
> >
> > I believe the answer is "yes".
>
> According to my code reading and test: yes.
>
> > Question 3: Does httppostargs switch GET requests to POST requests?
> >
> > I believe the answer is "no".
>
> I have no idea. If not, we should probably do it.
>
> > Together, that seems to mean that we now rely on the requests getting
> > batched for the httppostargs thing to take effect. Correct? If correct,
> > it seems we should also check if the server supports batching before we
> > decide to remove the limit.
>
> I think so. I am fine with that. sending a follow up
>

Joerg already replied to this thread saying that the answer to question 3
is "yes", so I don't think we need to do anything else.


>
>
> --
> Pierre-Yves David
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.mercurial-scm.org/pipermail/mercurial-devel/attachments/20190423/80291a0e/attachment.html>


More information about the Mercurial-devel mailing list