# HG changeset patch # User Mads Kiilerich # Date 1415189132 -3600 # Node ID 73cfaa34865061744250a63ed01e970ad7a4bf3d # Parent 86c35b7ae300358c2a6fb18580970ae55f075ed7 discovery: indices between sample and yesno must match (issue4438) 3ef893520a85 changed 'sample' from a list to a set. The iteration order is thus undefined and the yesno indices are not stable. To solve this, repeat the listification and comment from elsewhere in the code. Note: the randomness in the discovery protocol can make this problem hard to reproduce. diff -r 86c35b7ae300 -r 73cfaa348650 mercurial/setdiscovery.py --- a/mercurial/setdiscovery.py Wed Nov 05 13:05:29 2014 +0100 +++ b/mercurial/setdiscovery.py Wed Nov 05 13:05:32 2014 +0100 @@ -134,6 +134,8 @@ roundtrips += 1 ownheads = dag.heads() sample = _limitsample(ownheads, initialsamplesize) + # indices between sample and externalized version must match + sample = list(sample) if remote.local(): # stopgap until we have a proper localpeer that supports batch() srvheadhashes = remote.heads()