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

Pierre-Yves David pierre-yves.david at ens-lyon.org
Wed Apr 24 02:35:41 EDT 2019



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



-- 
Pierre-Yves David


More information about the Mercurial-devel mailing list