[PATCH 1 of 3] lfs: default to not using workers for upload/download

Matt Harbison mharbison72 at gmail.com
Thu Jan 18 23:51:41 UTC 2018


# HG changeset patch
# User Matt Harbison <matt_harbison at yahoo.com>
# Date 1516306294 18000
#      Thu Jan 18 15:11:34 2018 -0500
# Node ID 3e89ebf3fc09542792ecccb41c9ea923e270bf76
# Parent  7ffbd911dbc94215248500f0f95064cf3b975144
lfs: default to not using workers for upload/download

I ran into truncated uploads with this defaulting to on.  Wojciech Lis diagnosed
it as creating keepalive connections prior to forking, and illegally
multiplexing the same connection. [1]  I didn't notice a problem with the couple
of downloads I tried, but disabled both for simplicity and safety.

[1] https://www.mercurial-scm.org/pipermail/mercurial-devel/2018-January/109916.html

diff --git a/hgext/lfs/__init__.py b/hgext/lfs/__init__.py
--- a/hgext/lfs/__init__.py
+++ b/hgext/lfs/__init__.py
@@ -118,6 +118,9 @@ configitem = registrar.configitem(config
 configitem('experimental', 'lfs.user-agent',
     default=None,
 )
+configitem('experimental', 'lfs.worker-enable',
+    default=False,
+)
 
 configitem('lfs', 'url',
     default=None,
diff --git a/hgext/lfs/blobstore.py b/hgext/lfs/blobstore.py
--- a/hgext/lfs/blobstore.py
+++ b/hgext/lfs/blobstore.py
@@ -356,8 +356,13 @@ class _gitlfsremote(object):
                             continue
                         raise
 
-        oids = worker.worker(self.ui, 0.1, transfer, (),
-                             sorted(objects, key=lambda o: o.get('oid')))
+        # Until https multiplexing gets sorted out
+        if self.ui.configbool('experimental', 'lfs.worker-enable'):
+            oids = worker.worker(self.ui, 0.1, transfer, (),
+                                 sorted(objects, key=lambda o: o.get('oid')))
+        else:
+            oids = transfer(sorted(objects, key=lambda o: o.get('oid')))
+
         processed = 0
         for _one, oid in oids:
             processed += sizes[oid]


More information about the Mercurial-devel mailing list