changeset 23084:3ef893520a85 stable

setdiscovery: limit the size of the initial sample (issue4411) The set discovery start by sending a "known" command with all local heads. When the number of local heads is massive (eg: using hidden changesets) such request becomes too large. This lead to 414 error over http, aborting the whole process. We limit the size of the sample used by the first query to fix this. The test are impacted because they do test massive number of heads. But they do not test it over real world http setup.
author Pierre-Yves David <pierre-yves.david@fb.com>
date Mon, 27 Oct 2014 17:52:33 +0100
parents ee45f5c2ffcc
children e9165c18f8df
files mercurial/setdiscovery.py tests/test-setdiscovery.t
diffstat 2 files changed, 5 insertions(+), 5 deletions(-) [+]
line wrap: on
line diff
--- a/mercurial/setdiscovery.py	Mon Oct 27 17:40:32 2014 +0100
+++ b/mercurial/setdiscovery.py	Mon Oct 27 17:52:33 2014 +0100
@@ -133,7 +133,7 @@
     ui.debug("query 1; heads\n")
     roundtrips += 1
     ownheads = dag.heads()
-    sample = ownheads
+    sample = _limitsample(ownheads, initialsamplesize)
     if remote.local():
         # stopgap until we have a proper localpeer that supports batch()
         srvheadhashes = remote.heads()
--- a/tests/test-setdiscovery.t	Mon Oct 27 17:40:32 2014 +0100
+++ b/tests/test-setdiscovery.t	Mon Oct 27 17:52:33 2014 +0100
@@ -311,16 +311,16 @@
   searching for changes
   taking quick initial sample
   searching: 2 queries
-  query 2; still undecided: 1080, sample size is: 260
+  query 2; still undecided: 1240, sample size is: 260
   sampling from both directions
   searching: 3 queries
-  query 3; still undecided: 820, sample size is: 260
+  query 3; still undecided: 980, sample size is: 260
   sampling from both directions
   searching: 4 queries
-  query 4; still undecided: 560, sample size is: 260
+  query 4; still undecided: 720, sample size is: 260
   sampling from both directions
   searching: 5 queries
-  query 5; still undecided: 300, sample size is: 200
+  query 5; still undecided: 460, sample size is: 200
   5 total queries
   common heads: 3ee37d65064a