diff --git a/mercurial/setdiscovery.py b/mercurial/setdiscovery.py
index 86c35b7ae300358c2a6fb18580970ae55f075ed7_bWVyY3VyaWFsL3NldGRpc2NvdmVyeS5weQ==..73cfaa34865061744250a63ed01e970ad7a4bf3d_bWVyY3VyaWFsL3NldGRpc2NvdmVyeS5weQ== 100644
--- a/mercurial/setdiscovery.py
+++ b/mercurial/setdiscovery.py
@@ -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()