diff --git a/custom/conf/app.example.ini b/custom/conf/app.example.ini index e080b0be72..f201ff1d19 100644 --- a/custom/conf/app.example.ini +++ b/custom/conf/app.example.ini @@ -2650,7 +2650,7 @@ LEVEL = Info ;; Limit the number of pointers in each batch request to this number ;BATCH_SIZE = 20 ;; Limit the number of concurrent upload/download operations within a batch -;BATCH_OPERATION_CONCURRENCY = 3 +;BATCH_OPERATION_CONCURRENCY = 8 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; diff --git a/modules/lfs/http_client.go b/modules/lfs/http_client.go index 411c4248c4..3060e25754 100644 --- a/modules/lfs/http_client.go +++ b/modules/lfs/http_client.go @@ -136,6 +136,9 @@ func (c *HTTPClient) performOperation(ctx context.Context, objects []Pointer, dc return fmt.Errorf("TransferAdapter not found: %s", result.Transfer) } + if setting.LFSClient.BatchOperationConcurrency <= 0 { + panic("BatchOperationConcurrency must be greater than 0, forgot to init?") + } errGroup, groupCtx := errgroup.WithContext(ctx) errGroup.SetLimit(setting.LFSClient.BatchOperationConcurrency) for _, object := range result.Objects { diff --git a/modules/lfs/http_client_test.go b/modules/lfs/http_client_test.go index d22735147a..aa7e3c45c4 100644 --- a/modules/lfs/http_client_test.go +++ b/modules/lfs/http_client_test.go @@ -237,7 +237,7 @@ func TestHTTPClientDownload(t *testing.T) { }, } - defer test.MockVariableValue(&setting.LFSClient.BatchOperationConcurrency, 3)() + defer test.MockVariableValue(&setting.LFSClient.BatchOperationConcurrency, 8)() for _, c := range cases { t.Run(c.endpoint, func(t *testing.T) { client := &HTTPClient{ @@ -337,7 +337,7 @@ func TestHTTPClientUpload(t *testing.T) { }, } - defer test.MockVariableValue(&setting.LFSClient.BatchOperationConcurrency, 3)() + defer test.MockVariableValue(&setting.LFSClient.BatchOperationConcurrency, 8)() for _, c := range cases { t.Run(c.endpoint, func(t *testing.T) { client := &HTTPClient{ diff --git a/modules/setting/lfs.go b/modules/setting/lfs.go index 6b54ac0a60..7f2d0ae159 100644 --- a/modules/setting/lfs.go +++ b/modules/setting/lfs.go @@ -68,8 +68,8 @@ func loadLFSFrom(rootCfg ConfigProvider) error { } if LFSClient.BatchOperationConcurrency < 1 { - // match the default git-lfs's `lfs.concurrenttransfers` - LFSClient.BatchOperationConcurrency = 3 + // match the default git-lfs's `lfs.concurrenttransfers` https://github.com/git-lfs/git-lfs/blob/main/docs/man/git-lfs-config.adoc#upload-and-download-transfer-settings + LFSClient.BatchOperationConcurrency = 8 } LFS.HTTPAuthExpiry = sec.Key("LFS_HTTP_AUTH_EXPIRY").MustDuration(24 * time.Hour) diff --git a/modules/setting/lfs_test.go b/modules/setting/lfs_test.go index 471fa8bff3..d27dd7c5bf 100644 --- a/modules/setting/lfs_test.go +++ b/modules/setting/lfs_test.go @@ -114,7 +114,7 @@ BATCH_SIZE = 0 assert.NoError(t, loadLFSFrom(cfg)) assert.EqualValues(t, 100, LFS.MaxBatchSize) assert.EqualValues(t, 20, LFSClient.BatchSize) - assert.EqualValues(t, 3, LFSClient.BatchOperationConcurrency) + assert.EqualValues(t, 8, LFSClient.BatchOperationConcurrency) iniStr = ` [lfs_client]