SyncOptions/Propagator: Parallelism as an option
authorChristian Kamm <mail@ckamm.de>
Wed, 12 Jul 2017 11:19:58 +0000 (13:19 +0200)
committerRoeland Jago Douma <roeland@famdouma.nl>
Thu, 5 Oct 2017 20:01:32 +0000 (22:01 +0200)
Very useful for changing it on a per-test basis.

src/libsync/discoveryphase.h
src/libsync/owncloudpropagator.cpp

index 4404e76ea8cab1f7deab801c367c7a8cc61effc6..4a09c346279ff5291a188409ba5406c241088238 100644 (file)
@@ -44,6 +44,7 @@ struct SyncOptions
         , _minChunkSize(1 * 1000 * 1000) // 1 MB
         , _maxChunkSize(100 * 1000 * 1000) // 100 MB
         , _targetChunkUploadDuration(60 * 1000) // 1 minute
+        , _parallelNetworkJobs(true)
     {
     }
 
@@ -74,6 +75,9 @@ struct SyncOptions
      * Set to 0 it will disable dynamic chunk sizing.
      */
     quint64 _targetChunkUploadDuration;
+
+    /** Whether parallel network jobs are allowed. */
+    bool _parallelNetworkJobs;
 };
 
 
index 65fd70264f6a2afb5be3a7093758fc5e03cc662c..7550838e7845c886b2bb8199f9468fc469370331 100644 (file)
@@ -80,7 +80,9 @@ OwncloudPropagator::~OwncloudPropagator()
 
 int OwncloudPropagator::maximumActiveTransferJob()
 {
-    if (_downloadLimit.fetchAndAddAcquire(0) != 0 || _uploadLimit.fetchAndAddAcquire(0) != 0) {
+    if (_downloadLimit.fetchAndAddAcquire(0) != 0
+        || _uploadLimit.fetchAndAddAcquire(0) != 0
+        || !_syncOptions._parallelNetworkJobs) {
         // disable parallelism when there is a network limit.
         return 1;
     }
@@ -90,6 +92,8 @@ int OwncloudPropagator::maximumActiveTransferJob()
 /* The maximum number of active jobs in parallel  */
 int OwncloudPropagator::hardMaximumActiveJob()
 {
+    if (!_syncOptions._parallelNetworkJobs)
+        return 1;
     static int max = qgetenv("OWNCLOUD_MAX_PARALLEL").toUInt();
     if (max)
         return max;