From 25e0cc092003b2b1e54f0b39956477a2d2c86181 Mon Sep 17 00:00:00 2001 From: Dominik Schmidt Date: Fri, 20 Dec 2024 14:10:55 +0100 Subject: [PATCH] fix: make deferred upload length optional --- packages/@uppy/companion/KUBERNETES.md | 1 + packages/@uppy/companion/env_example | 1 + packages/@uppy/companion/src/server/Uploader.js | 9 +++++++-- packages/@uppy/companion/src/standalone/helper.js | 1 + packages/@uppy/companion/test/mockserver.js | 1 + 5 files changed, 11 insertions(+), 2 deletions(-) diff --git a/packages/@uppy/companion/KUBERNETES.md b/packages/@uppy/companion/KUBERNETES.md index b9c908bb3a..2af0df9078 100644 --- a/packages/@uppy/companion/KUBERNETES.md +++ b/packages/@uppy/companion/KUBERNETES.md @@ -28,6 +28,7 @@ data: COMPANION_DOMAINS: 'sub1.domain.com,sub2.domain.com,sub3.domain.com' COMPANION_PROTOCOL: 'YOUR SERVER PROTOCOL' COMPANION_STREAMING_UPLOAD: true + COMPANION_DEFERRED_UPLOAD_LENGTH: true COMPANION_REDIS_URL: redis://:superSecretPassword@uppy-redis.uppy.svc.cluster.local:6379 COMPANION_SECRET: 'shh!Issa Secret!' COMPANION_PREAUTH_SECRET: 'another secret' diff --git a/packages/@uppy/companion/env_example b/packages/@uppy/companion/env_example index 08b3e0acf1..768b2f6d78 100644 --- a/packages/@uppy/companion/env_example +++ b/packages/@uppy/companion/env_example @@ -5,6 +5,7 @@ COMPANION_SELF_ENDPOINT=uppy.xxxx.com COMPANION_HIDE_METRICS=false COMPANION_HIDE_WELCOME=false COMPANION_STREAMING_UPLOAD=true +COMPANION_DEFERRED_UPLOAD_LENGTH=true COMPANION_PROTOCOL=https COMPANION_DATADIR=/mnt/uppy-server-data diff --git a/packages/@uppy/companion/src/server/Uploader.js b/packages/@uppy/companion/src/server/Uploader.js index 9c2e3dd64b..7291ae2d29 100644 --- a/packages/@uppy/companion/src/server/Uploader.js +++ b/packages/@uppy/companion/src/server/Uploader.js @@ -509,9 +509,7 @@ class Uploader { const tusOptions = { endpoint: this.options.endpoint, uploadUrl: this.options.uploadUrl, - uploadLengthDeferred: !isFileStream, retryDelays: [0, 1000, 3000, 5000], - uploadSize: isFileStream ? this.size : undefined, chunkSize, headers: headerSanitize(this.options.headers), addRequestId: true, @@ -553,6 +551,13 @@ class Uploader { }, } + if (this.options.companionOptions.deferredUploadLength && !isFileStream) { + tusOptions.uploadLengthDeferred = true + } else { + tusOptions.uploadLengthDeferred = false + tusOptions.uploadSize = this.size + } + this.tus = new tus.Upload(stream, tusOptions) this.tus.start() diff --git a/packages/@uppy/companion/src/standalone/helper.js b/packages/@uppy/companion/src/standalone/helper.js index 57494dadb8..9a772e0192 100644 --- a/packages/@uppy/companion/src/standalone/helper.js +++ b/packages/@uppy/companion/src/standalone/helper.js @@ -183,6 +183,7 @@ const getConfigFromEnv = () => { // cookieDomain is kind of a hack to support distributed systems. This should be improved but we never got so far. cookieDomain: process.env.COMPANION_COOKIE_DOMAIN, streamingUpload: process.env.COMPANION_STREAMING_UPLOAD ? process.env.COMPANION_STREAMING_UPLOAD === 'true' : undefined, + deferredUploadLength: process.env.COMPANION_DEFERRED_UPLOAD_LENGTH ? process.env.COMPANION_DEFERRED_UPLOAD_LENGTH === 'true' : true, maxFileSize: process.env.COMPANION_MAX_FILE_SIZE ? parseInt(process.env.COMPANION_MAX_FILE_SIZE, 10) : undefined, chunkSize: process.env.COMPANION_CHUNK_SIZE ? parseInt(process.env.COMPANION_CHUNK_SIZE, 10) : undefined, clientSocketConnectTimeout: process.env.COMPANION_CLIENT_SOCKET_CONNECT_TIMEOUT diff --git a/packages/@uppy/companion/test/mockserver.js b/packages/@uppy/companion/test/mockserver.js index 9ee1779e96..c18d0f2098 100644 --- a/packages/@uppy/companion/test/mockserver.js +++ b/packages/@uppy/companion/test/mockserver.js @@ -12,6 +12,7 @@ const defaultEnv = { COMPANION_HIDE_WELCOME: 'false', COMPANION_STREAMING_UPLOAD: 'true', + COMPANION_DEFERRED_UPLOAD_LENGTH: 'true', COMPANION_ALLOW_LOCAL_URLS: 'false', COMPANION_PROTOCOL: 'http',