Skip to content

Commit

Permalink
@uppy/companion: add COMPANION_TUS_DEFERRED_UPLOAD_LENGTH (#5561)
Browse files Browse the repository at this point in the history
  • Loading branch information
dschmidt authored Jan 13, 2025

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
1 parent e056158 commit e26d161
Showing 5 changed files with 14 additions and 2 deletions.
1 change: 1 addition & 0 deletions packages/@uppy/companion/KUBERNETES.md
Original file line number Diff line number Diff line change
@@ -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_TUS_DEFERRED_UPLOAD_LENGTH: true
COMPANION_REDIS_URL: redis://:[email protected]:6379
COMPANION_SECRET: 'shh!Issa Secret!'
COMPANION_PREAUTH_SECRET: 'another secret'
1 change: 1 addition & 0 deletions packages/@uppy/companion/env_example
Original file line number Diff line number Diff line change
@@ -5,6 +5,7 @@ COMPANION_SELF_ENDPOINT=uppy.xxxx.com
COMPANION_HIDE_METRICS=false
COMPANION_HIDE_WELCOME=false
COMPANION_STREAMING_UPLOAD=true
COMPANION_TUS_DEFERRED_UPLOAD_LENGTH=true

COMPANION_PROTOCOL=https
COMPANION_DATADIR=/mnt/uppy-server-data
12 changes: 10 additions & 2 deletions packages/@uppy/companion/src/server/Uploader.js
Original file line number Diff line number Diff line change
@@ -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,16 @@ class Uploader {
},
}

if (this.options.companionOptions.tusDeferredUploadLength && !isFileStream) {
tusOptions.uploadLengthDeferred = true
} else {
if (!this.size) {
reject(new Error('tusDeferredUploadLength needs to be enabled if no file size is provided by the provider'))
}
tusOptions.uploadLengthDeferred = false
tusOptions.uploadSize = this.size
}

this.tus = new tus.Upload(stream, tusOptions)

this.tus.start()
1 change: 1 addition & 0 deletions packages/@uppy/companion/src/standalone/helper.js
Original file line number Diff line number Diff line change
@@ -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,
tusDeferredUploadLength: process.env.COMPANION_TUS_DEFERRED_UPLOAD_LENGTH ? process.env.COMPANION_TUS_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
1 change: 1 addition & 0 deletions packages/@uppy/companion/test/mockserver.js
Original file line number Diff line number Diff line change
@@ -12,6 +12,7 @@ const defaultEnv = {
COMPANION_HIDE_WELCOME: 'false',

COMPANION_STREAMING_UPLOAD: 'true',
COMPANION_TUS_DEFERRED_UPLOAD_LENGTH: 'true',
COMPANION_ALLOW_LOCAL_URLS: 'false',

COMPANION_PROTOCOL: 'http',

0 comments on commit e26d161

Please sign in to comment.