Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Context canceled on S3 upload when upload speed is throttled #1172

Closed
akkie opened this issue Aug 21, 2024 · 11 comments
Closed

Context canceled on S3 upload when upload speed is throttled #1172

akkie opened this issue Aug 21, 2024 · 11 comments
Labels

Comments

@akkie
Copy link
Contributor

akkie commented Aug 21, 2024

Describe the bug
I locally test tusd with Minio. To test my frontend I throttle the upload speed in the browser. If I upload as example 30 image files, then after a certain time I get a lot of operation error S3: CompleteMultipartUpload, context canceled messages in the tusd log. Maybe it's a timeout on the writing side to S3?

2024-08-21 21:06:08 2024/08/21 19:06:08.197807 level=ERROR event=InternalServerError method=POST path="" requestId="" id=01J5V4TPTSZAWP88RRFQJT94E9+OWMyODgxOGQtZmUwYS00MmU2LWI2ZTMtNWY5ZmU2NTEzN2ZhLmNhOWIxYzY2LWRhNTEtNGYyYS1hMGZjLWJmNWFlMWRiYmU5M3gxNzI0MjY2NjY2ODU0MTY5NzEw message="operation error S3: CompleteMultipartUpload, context canceled"
2024-08-21 21:06:08 2024/08/21 19:06:08.197817 level=INFO event=ResponseOutgoing method=POST path="" requestId="" id=01J5V4TPTSZAWP88RRFQJT94E9+OWMyODgxOGQtZmUwYS00MmU2LWI2ZTMtNWY5ZmU2NTEzN2ZhLmNhOWIxYzY2LWRhNTEtNGYyYS1hMGZjLWJmNWFlMWRiYmU5M3gxNzI0MjY2NjY2ODU0MTY5NzEw status=500 body="ERR_INTERNAL_SERVER_ERROR: operation error S3: CompleteMultipartUpload, context canceled\n"

There is no such problem if I do not throttle. But this might be still an issue if a client uploads data with limited bandwidth.

To Reproduce
Steps to reproduce the behavior:

  1. Configure tusd to work with Minio
  2. Throttle upload speed
  3. Upload multiple files

Expected behavior
There should not be an error if the bandwidth is limited.

Setup details
Please provide following details, if applicable to your situation:

  • Operating System: Linux
  • Used tusd version: v2.4.0
  • Used tusd data storage: Minio
  • Used tusd configuration: -s3-bucket=uploads
    -s3-disable-ssl=true
    -s3-endpoint=http://minio:9100
    -port=9500
    -max-size=1000000000
    -cors-allow-origin=https://my.domain
    -cors-allow-credentials=true
    -behind-proxy=true
    -show-greeting=false
    -hooks-http=https://api.my.domain/hooks/tusd
    -hooks-enabled-events=pre-create,pre-finish,post-finish
    -hooks-http-forward-headers=Cookie
  • Used tus client library: tus-js-client
@akkie akkie added the bug label Aug 21, 2024
@Acconut
Copy link
Member

Acconut commented Aug 22, 2024

Can you give me more details to reproduce this? Which browser did you use and how did you throttle it? What tus-js-client configuration did you use? What are the full logs from tusd?

@akkie
Copy link
Contributor Author

akkie commented Aug 23, 2024

Sure, I currently use Arc which is Chromium based. If you go to the network setting in the developer tools you have the possibility to throttle the bandwidth.

Sorry, it's german. But I think you get the position of the dropdown.

Bildschirmfoto 2024-08-23 um 22 18 05

I have selected slow 4G and I upload 43 files with a total of 271,4 MB.

My tusd client configuration is:

uploadLengthDeferred: false,
uploadDataDuringCreation: true,
removeFingerprintOnSuccess: true,
retryDelays: [0, 3000, 5000, 10000],
...some metadata

Here are some more logs:

2024-08-23 21:17:14 2024/08/23 19:17:14.660173 level=INFO event=ChunkWriteStart method=POST path="" requestId="" id=01J60AQS4R0CDBB3Q3P91QE0TY+OWMyODgxOGQtZmUwYS00MmU2LWI2ZTMtNWY5ZmU2NTEzN2ZhLmFhZmExZjdlLThmZTEtNDZiOC1hNzgzLTM0Yzc4YzkyNTQ5YngxNzI0NDQwNjM0NTIzODcxMTMy maxSize=7979771 offset=0
2024-08-23 22:06:49 2024/08/23 20:06:49.747832 level=INFO event=ChunkWriteComplete method=POST path="" requestId="" id=01J60AQRRZJCHJ7CC1JHYH1G2N+OWMyODgxOGQtZmUwYS00MmU2LWI2ZTMtNWY5ZmU2NTEzN2ZhLmMyYjhhOTg5LTY1MjktNDI5Ny05M2RhLWU2YmExNDUyNzBlNHgxNzI0NDQwNjM0MTQ2Mjc2NTA3 bytesWritten=432029
2024-08-23 22:06:49 2024/08/23 20:06:49.748012 level=ERROR event=InternalServerError method=POST path="" requestId="" id=01J60AQRRZJCHJ7CC1JHYH1G2N+OWMyODgxOGQtZmUwYS00MmU2LWI2ZTMtNWY5ZmU2NTEzN2ZhLmMyYjhhOTg5LTY1MjktNDI5Ny05M2RhLWU2YmExNDUyNzBlNHgxNzI0NDQwNjM0MTQ2Mjc2NTA3 message="operation error S3: CompleteMultipartUpload, context canceled"
2024-08-23 22:06:49 2024/08/23 20:06:49.748050 level=INFO event=ChunkWriteComplete method=POST path="" requestId="" id=01J60AQRS2Z9K983CWZMSQDWXS+OWMyODgxOGQtZmUwYS00MmU2LWI2ZTMtNWY5ZmU2NTEzN2ZhLjk0OGViMjQyLThmZWUtNDlmYy05MTRhLWQxOGM5NzBjNmYyOXgxNzI0NDQwNjM0MTQ4NzM5MDkw bytesWritten=858108
2024-08-23 22:06:49 2024/08/23 20:06:49.748130 level=ERROR event=InternalServerError method=POST path="" requestId="" id=01J60AQRS2Z9K983CWZMSQDWXS+OWMyODgxOGQtZmUwYS00MmU2LWI2ZTMtNWY5ZmU2NTEzN2ZhLjk0OGViMjQyLThmZWUtNDlmYy05MTRhLWQxOGM5NzBjNmYyOXgxNzI0NDQwNjM0MTQ4NzM5MDkw message="operation error S3: CompleteMultipartUpload, context canceled"
2024-08-23 22:06:49 2024/08/23 20:06:49.748142 level=INFO event=ResponseOutgoing method=POST path="" requestId="" id=01J60AQRRZJCHJ7CC1JHYH1G2N+OWMyODgxOGQtZmUwYS00MmU2LWI2ZTMtNWY5ZmU2NTEzN2ZhLmMyYjhhOTg5LTY1MjktNDI5Ny05M2RhLWU2YmExNDUyNzBlNHgxNzI0NDQwNjM0MTQ2Mjc2NTA3 status=500 body="ERR_INTERNAL_SERVER_ERROR: operation error S3: CompleteMultipartUpload, context canceled\n"
2024-08-23 22:06:49 2024/08/23 20:06:49.748155 level=INFO event=ResponseOutgoing method=POST path="" requestId="" id=01J60AQRS2Z9K983CWZMSQDWXS+OWMyODgxOGQtZmUwYS00MmU2LWI2ZTMtNWY5ZmU2NTEzN2ZhLjk0OGViMjQyLThmZWUtNDlmYy05MTRhLWQxOGM5NzBjNmYyOXgxNzI0NDQwNjM0MTQ4NzM5MDkw status=500 body="ERR_INTERNAL_SERVER_ERROR: operation error S3: CompleteMultipartUpload, context canceled\n"
2024-08-23 22:06:49 2024/08/23 20:06:49.748178 level=INFO event=ChunkWriteComplete method=POST path="" requestId="" id=01J60AQRTS7T528X57HACBB70T+OWMyODgxOGQtZmUwYS00MmU2LWI2ZTMtNWY5ZmU2NTEzN2ZhLmVmZTFkYzRkLWYxZDUtNGMwNi1iMzA2LTdiOTNhZmUyYzQ1MXgxNzI0NDQwNjM0MjA4NzkxOTI0 bytesWritten=958180
2024-08-23 22:06:49 2024/08/23 20:06:49.748238 level=ERROR event=InternalServerError method=POST path="" requestId="" id=01J60AQRTS7T528X57HACBB70T+OWMyODgxOGQtZmUwYS00MmU2LWI2ZTMtNWY5ZmU2NTEzN2ZhLmVmZTFkYzRkLWYxZDUtNGMwNi1iMzA2LTdiOTNhZmUyYzQ1MXgxNzI0NDQwNjM0MjA4NzkxOTI0 message="operation error S3: CompleteMultipartUpload, context canceled"
2024-08-23 22:06:49 2024/08/23 20:06:49.748270 level=INFO event=ResponseOutgoing method=POST path="" requestId="" id=01J60AQRTS7T528X57HACBB70T+OWMyODgxOGQtZmUwYS00MmU2LWI2ZTMtNWY5ZmU2NTEzN2ZhLmVmZTFkYzRkLWYxZDUtNGMwNi1iMzA2LTdiOTNhZmUyYzQ1MXgxNzI0NDQwNjM0MjA4NzkxOTI0 status=500 body="ERR_INTERNAL_SERVER_ERROR: operation error S3: CompleteMultipartUpload, context canceled\n"
2024-08-23 22:06:49 2024/08/23 20:06:49.748360 level=INFO event=ChunkWriteComplete method=POST path="" requestId="" id=01J60AQRRMNTYJFWG14N3YFCS4+OWMyODgxOGQtZmUwYS00MmU2LWI2ZTMtNWY5ZmU2NTEzN2ZhLjU5MGFjNWQ5LTI4MDEtNDE4Zi1iZGFkLWI3MTBhYWZiNTVjOHgxNzI0NDQwNjM0MTM3MzAyMjE1 bytesWritten=1146961
2024-08-23 22:06:49 2024/08/23 20:06:49.748429 level=ERROR event=InternalServerError method=POST path="" requestId="" id=01J60AQRRMNTYJFWG14N3YFCS4+OWMyODgxOGQtZmUwYS00MmU2LWI2ZTMtNWY5ZmU2NTEzN2ZhLjU5MGFjNWQ5LTI4MDEtNDE4Zi1iZGFkLWI3MTBhYWZiNTVjOHgxNzI0NDQwNjM0MTM3MzAyMjE1 message="operation error S3: CompleteMultipartUpload, context canceled"
2024-08-23 22:06:49 2024/08/23 20:06:49.748440 level=INFO event=ResponseOutgoing method=POST path="" requestId="" id=01J60AQRRMNTYJFWG14N3YFCS4+OWMyODgxOGQtZmUwYS00MmU2LWI2ZTMtNWY5ZmU2NTEzN2ZhLjU5MGFjNWQ5LTI4MDEtNDE4Zi1iZGFkLWI3MTBhYWZiNTVjOHgxNzI0NDQwNjM0MTM3MzAyMjE1 status=500 body="ERR_INTERNAL_SERVER_ERROR: operation error S3: CompleteMultipartUpload, context canceled\n"
2024-08-23 22:06:49 2024/08/23 20:06:49.748478 level=INFO event=ChunkWriteComplete method=POST path="" requestId="" id=01J60AQRRJ6X5JWVKWN5GWN8RD+OWMyODgxOGQtZmUwYS00MmU2LWI2ZTMtNWY5ZmU2NTEzN2ZhLjdlOThhZWZiLTc2MWYtNDRjOC1iYWUyLTllZDBlZGEyNDYwMXgxNzI0NDQwNjM0MTM1MDczMTMy bytesWritten=1267932
2024-08-23 22:06:49 2024/08/23 20:06:49.748538 level=ERROR event=InternalServerError method=POST path="" requestId="" id=01J60AQRRJ6X5JWVKWN5GWN8RD+OWMyODgxOGQtZmUwYS00MmU2LWI2ZTMtNWY5ZmU2NTEzN2ZhLjdlOThhZWZiLTc2MWYtNDRjOC1iYWUyLTllZDBlZGEyNDYwMXgxNzI0NDQwNjM0MTM1MDczMTMy message="operation error S3: CompleteMultipartUpload, context canceled"
2024-08-23 22:06:49 2024/08/23 20:06:49.748557 level=INFO event=ResponseOutgoing method=POST path="" requestId="" id=01J60AQRRJ6X5JWVKWN5GWN8RD+OWMyODgxOGQtZmUwYS00MmU2LWI2ZTMtNWY5ZmU2NTEzN2ZhLjdlOThhZWZiLTc2MWYtNDRjOC1iYWUyLTllZDBlZGEyNDYwMXgxNzI0NDQwNjM0MTM1MDczMTMy status=500 body="ERR_INTERNAL_SERVER_ERROR: operation error S3: CompleteMultipartUpload, context canceled\n"
2024-08-23 22:06:49 2024/08/23 20:06:49.748596 level=INFO event=ChunkWriteComplete method=POST path="" requestId="" id=01J60AQRR5BQJDFT8PX3TCQ2YK+OWMyODgxOGQtZmUwYS00MmU2LWI2ZTMtNWY5ZmU2NTEzN2ZhLmEzYzNkNTNkLTYyYjYtNGRiMC05MjQ3LWY0Mzg4NWJhNmQ2MHgxNzI0NDQwNjM0MTIxMjc1MTc0 bytesWritten=1401949
2024-08-23 22:06:49 2024/08/23 20:06:49.748661 level=ERROR event=InternalServerError method=POST path="" requestId="" id=01J60AQRR5BQJDFT8PX3TCQ2YK+OWMyODgxOGQtZmUwYS00MmU2LWI2ZTMtNWY5ZmU2NTEzN2ZhLmEzYzNkNTNkLTYyYjYtNGRiMC05MjQ3LWY0Mzg4NWJhNmQ2MHgxNzI0NDQwNjM0MTIxMjc1MTc0 message="operation error S3: CompleteMultipartUpload, context canceled"
2024-08-23 22:06:49 2024/08/23 20:06:49.748674 level=INFO event=ResponseOutgoing method=POST path="" requestId="" id=01J60AQRR5BQJDFT8PX3TCQ2YK+OWMyODgxOGQtZmUwYS00MmU2LWI2ZTMtNWY5ZmU2NTEzN2ZhLmEzYzNkNTNkLTYyYjYtNGRiMC05MjQ3LWY0Mzg4NWJhNmQ2MHgxNzI0NDQwNjM0MTIxMjc1MTc0 status=500 body="ERR_INTERNAL_SERVER_ERROR: operation error S3: CompleteMultipartUpload, context canceled\n"
2024-08-23 22:06:49 2024/08/23 20:06:49.748712 level=INFO event=ChunkWriteComplete method=POST path="" requestId="" id=01J60AQRSJYB5Q1BYAN7810Y8Z+OWMyODgxOGQtZmUwYS00MmU2LWI2ZTMtNWY5ZmU2NTEzN2ZhLjg2YzdiNDU5LWY1YTQtNDQ2ZS04MmYwLTAzMzcwMDdmNGNkMngxNzI0NDQwNjM0MTc0MTM0NzU3 bytesWritten=1418989
2024-08-23 22:06:49 2024/08/23 20:06:49.748766 level=ERROR event=InternalServerError method=POST path="" requestId="" id=01J60AQRSJYB5Q1BYAN7810Y8Z+OWMyODgxOGQtZmUwYS00MmU2LWI2ZTMtNWY5ZmU2NTEzN2ZhLjg2YzdiNDU5LWY1YTQtNDQ2ZS04MmYwLTAzMzcwMDdmNGNkMngxNzI0NDQwNjM0MTc0MTM0NzU3 message="operation error S3: CompleteMultipartUpload, context canceled"
2024-08-23 22:06:49 2024/08/23 20:06:49.748776 level=INFO event=ResponseOutgoing method=POST path="" requestId="" id=01J60AQRSJYB5Q1BYAN7810Y8Z+OWMyODgxOGQtZmUwYS00MmU2LWI2ZTMtNWY5ZmU2NTEzN2ZhLjg2YzdiNDU5LWY1YTQtNDQ2ZS04MmYwLTAzMzcwMDdmNGNkMngxNzI0NDQwNjM0MTc0MTM0NzU3 status=500 body="ERR_INTERNAL_SERVER_ERROR: operation error S3: CompleteMultipartUpload, context canceled\n"
2024-08-23 22:06:49 2024/08/23 20:06:49.748815 level=INFO event=ChunkWriteComplete method=POST path="" requestId="" id=01J60AQRRP1FZS27CHPDTAHJAA+OWMyODgxOGQtZmUwYS00MmU2LWI2ZTMtNWY5ZmU2NTEzN2ZhLmRmOTM0ZmJiLTg0NWQtNDJkZC1iZmRkLTljYjFiNmMzYjUyZXgxNzI0NDQwNjM0MTQwMDE1MzQw bytesWritten=1620977
2024-08-23 22:06:49 2024/08/23 20:06:49.748892 level=ERROR event=InternalServerError method=POST path="" requestId="" id=01J60AQRRP1FZS27CHPDTAHJAA+OWMyODgxOGQtZmUwYS00MmU2LWI2ZTMtNWY5ZmU2NTEzN2ZhLmRmOTM0ZmJiLTg0NWQtNDJkZC1iZmRkLTljYjFiNmMzYjUyZXgxNzI0NDQwNjM0MTQwMDE1MzQw message="operation error S3: CompleteMultipartUpload, context canceled"
2024-08-23 22:06:49 2024/08/23 20:06:49.748904 level=INFO event=ResponseOutgoing method=POST path="" requestId="" id=01J60AQRRP1FZS27CHPDTAHJAA+OWMyODgxOGQtZmUwYS00MmU2LWI2ZTMtNWY5ZmU2NTEzN2ZhLmRmOTM0ZmJiLTg0NWQtNDJkZC1iZmRkLTljYjFiNmMzYjUyZXgxNzI0NDQwNjM0MTQwMDE1MzQw status=500 body="ERR_INTERNAL_SERVER_ERROR: operation error S3: CompleteMultipartUpload, context canceled\n"
2024-08-23 22:06:49 2024/08/23 20:06:49.748985 level=INFO event=ChunkWriteComplete method=POST path="" requestId="" id=01J60AQRQSQZRQ084Z1Q9S5D00+OWMyODgxOGQtZmUwYS00MmU2LWI2ZTMtNWY5ZmU2NTEzN2ZhLjkxMTkwMzJiLTkyNjEtNDAwNi1iYmZlLTgxYjg3NTI3NTEwZHgxNzI0NDQwNjM0MTA4MjY4ODQw bytesWritten=2035226
2024-08-23 22:06:49 2024/08/23 20:06:49.749117 level=ERROR event=InternalServerError method=POST path="" requestId="" id=01J60AQRQSQZRQ084Z1Q9S5D00+OWMyODgxOGQtZmUwYS00MmU2LWI2ZTMtNWY5ZmU2NTEzN2ZhLjkxMTkwMzJiLTkyNjEtNDAwNi1iYmZlLTgxYjg3NTI3NTEwZHgxNzI0NDQwNjM0MTA4MjY4ODQw message="operation error S3: CompleteMultipartUpload, context canceled"
2024-08-23 22:06:49 2024/08/23 20:06:49.749127 level=INFO event=ResponseOutgoing method=POST path="" requestId="" id=01J60AQRQSQZRQ084Z1Q9S5D00+OWMyODgxOGQtZmUwYS00MmU2LWI2ZTMtNWY5ZmU2NTEzN2ZhLjkxMTkwMzJiLTkyNjEtNDAwNi1iYmZlLTgxYjg3NTI3NTEwZHgxNzI0NDQwNjM0MTA4MjY4ODQw status=500 body="ERR_INTERNAL_SERVER_ERROR: operation error S3: CompleteMultipartUpload, context canceled\n"
2024-08-23 22:06:49 2024/08/23 20:06:49.749194 level=INFO event=ChunkWriteComplete method=POST path="" requestId="" id=01J60AQRZ4DQSFH70KNCY783VQ+OWMyODgxOGQtZmUwYS00MmU2LWI2ZTMtNWY5ZmU2NTEzN2ZhLjkxNzBjNmEwLTNlNTctNDMwNi05YTk0LWFhNzY0YWY0ODZlNXgxNzI0NDQwNjM0MzQ1OTU3NTkx bytesWritten=2526687
2024-08-23 22:06:49 2024/08/23 20:06:49.749327 level=ERROR event=InternalServerError method=POST path="" requestId="" id=01J60AQRZ4DQSFH70KNCY783VQ+OWMyODgxOGQtZmUwYS00MmU2LWI2ZTMtNWY5ZmU2NTEzN2ZhLjkxNzBjNmEwLTNlNTctNDMwNi05YTk0LWFhNzY0YWY0ODZlNXgxNzI0NDQwNjM0MzQ1OTU3NTkx message="operation error S3: CompleteMultipartUpload, context canceled"
2024-08-23 22:06:49 2024/08/23 20:06:49.749352 level=INFO event=ResponseOutgoing method=POST path="" requestId="" id=01J60AQRZ4DQSFH70KNCY783VQ+OWMyODgxOGQtZmUwYS00MmU2LWI2ZTMtNWY5ZmU2NTEzN2ZhLjkxNzBjNmEwLTNlNTctNDMwNi05YTk0LWFhNzY0YWY0ODZlNXgxNzI0NDQwNjM0MzQ1OTU3NTkx status=500 body="ERR_INTERNAL_SERVER_ERROR: operation error S3: CompleteMultipartUpload, context canceled\n"
2024-08-23 22:06:49 2024/08/23 20:06:49.749413 level=INFO event=ChunkWriteComplete method=POST path="" requestId="" id=01J60AQRZ4EBE0ZCEGBDDTF569+OWMyODgxOGQtZmUwYS00MmU2LWI2ZTMtNWY5ZmU2NTEzN2ZhLmJiNWQ5N2M0LWFmZDMtNDMyNS1hYTE5LTc3MmE4MGE0YzA5MXgxNzI0NDQwNjM0MzQzODEzMjk5 bytesWritten=2990674
2024-08-23 22:06:49 2024/08/23 20:06:49.749520 level=ERROR event=InternalServerError method=POST path="" requestId="" id=01J60AQRZ4EBE0ZCEGBDDTF569+OWMyODgxOGQtZmUwYS00MmU2LWI2ZTMtNWY5ZmU2NTEzN2ZhLmJiNWQ5N2M0LWFmZDMtNDMyNS1hYTE5LTc3MmE4MGE0YzA5MXgxNzI0NDQwNjM0MzQzODEzMjk5 message="operation error S3: CompleteMultipartUpload, context canceled"
2024-08-23 22:06:49 2024/08/23 20:06:49.749551 level=INFO event=ResponseOutgoing method=POST path="" requestId="" id=01J60AQRZ4EBE0ZCEGBDDTF569+OWMyODgxOGQtZmUwYS00MmU2LWI2ZTMtNWY5ZmU2NTEzN2ZhLmJiNWQ5N2M0LWFmZDMtNDMyNS1hYTE5LTc3MmE4MGE0YzA5MXgxNzI0NDQwNjM0MzQzODEzMjk5 status=500 body="ERR_INTERNAL_SERVER_ERROR: operation error S3: CompleteMultipartUpload, context canceled\n"
2024-08-23 22:06:49 2024/08/23 20:06:49.749616 level=INFO event=ChunkWriteComplete method=POST path="" requestId="" id=01J60AQRZCTSSP9SQW2GPYJ48B+OWMyODgxOGQtZmUwYS00MmU2LWI2ZTMtNWY5ZmU2NTEzN2ZhLjA3ZTM1ZDc4LWU4NzQtNDIyNi1iMTBjLTljMjkxMDU3ZDlmMXgxNzI0NDQwNjM0MzUwNzYxNTkx bytesWritten=3200799
2024-08-23 22:06:49 2024/08/23 20:06:49.749677 level=ERROR event=InternalServerError method=POST path="" requestId="" id=01J60AQRZCTSSP9SQW2GPYJ48B+OWMyODgxOGQtZmUwYS00MmU2LWI2ZTMtNWY5ZmU2NTEzN2ZhLjA3ZTM1ZDc4LWU4NzQtNDIyNi1iMTBjLTljMjkxMDU3ZDlmMXgxNzI0NDQwNjM0MzUwNzYxNTkx message="operation error S3: CompleteMultipartUpload, context canceled"
2024-08-23 22:06:49 2024/08/23 20:06:49.749688 level=INFO event=ResponseOutgoing method=POST path="" requestId="" id=01J60AQRZCTSSP9SQW2GPYJ48B+OWMyODgxOGQtZmUwYS00MmU2LWI2ZTMtNWY5ZmU2NTEzN2ZhLjA3ZTM1ZDc4LWU4NzQtNDIyNi1iMTBjLTljMjkxMDU3ZDlmMXgxNzI0NDQwNjM0MzUwNzYxNTkx status=500 body="ERR_INTERNAL_SERVER_ERROR: operation error S3: CompleteMultipartUpload, context canceled\n"
2024-08-23 22:06:49 2024/08/23 20:06:49.749732 level=INFO event=ChunkWriteComplete method=POST path="" requestId="" id=01J60AQRZY0SE17MYMCGZ102C9+OWMyODgxOGQtZmUwYS00MmU2LWI2ZTMtNWY5ZmU2NTEzN2ZhLjY2ODQwOWI5LTA5YTQtNDI5Mi1iNmQxLTEyZmE0M2FjMjM1MHgxNzI0NDQwNjM0MzczNTQxNTA3 bytesWritten=0
2024-08-23 22:06:49 2024/08/23 20:06:49.749755 level=ERROR event=InternalServerError method=POST path="" requestId="" id=01J60AQRZY0SE17MYMCGZ102C9+OWMyODgxOGQtZmUwYS00MmU2LWI2ZTMtNWY5ZmU2NTEzN2ZhLjY2ODQwOWI5LTA5YTQtNDI5Mi1iNmQxLTEyZmE0M2FjMjM1MHgxNzI0NDQwNjM0MzczNTQxNTA3 message="operation error S3: UploadPart, context canceled"
2024-08-23 22:06:49 2024/08/23 20:06:49.749766 level=INFO event=ResponseOutgoing method=POST path="" requestId="" id=01J60AQRZY0SE17MYMCGZ102C9+OWMyODgxOGQtZmUwYS00MmU2LWI2ZTMtNWY5ZmU2NTEzN2ZhLjY2ODQwOWI5LTA5YTQtNDI5Mi1iNmQxLTEyZmE0M2FjMjM1MHgxNzI0NDQwNjM0MzczNTQxNTA3 status=500 body="ERR_INTERNAL_SERVER_ERROR: operation error S3: UploadPart, context canceled\n"
2024-08-23 22:06:49 2024/08/23 20:06:49.749814 level=INFO event=ChunkWriteComplete method=POST path="" requestId="" id=01J60AQRY6SX5Y1R6KGHGQ8RAJ+OWMyODgxOGQtZmUwYS00MmU2LWI2ZTMtNWY5ZmU2NTEzN2ZhLmY1ODlhYmVmLWRiMmEtNGMzMC1iZGVjLWNhOWUwNDZjZGI4M3gxNzI0NDQwNjM0MzEzNjQxOTI0 bytesWritten=3693761
2024-08-23 22:06:49 2024/08/23 20:06:49.749898 level=ERROR event=InternalServerError method=POST path="" requestId="" id=01J60AQRY6SX5Y1R6KGHGQ8RAJ+OWMyODgxOGQtZmUwYS00MmU2LWI2ZTMtNWY5ZmU2NTEzN2ZhLmY1ODlhYmVmLWRiMmEtNGMzMC1iZGVjLWNhOWUwNDZjZGI4M3gxNzI0NDQwNjM0MzEzNjQxOTI0 message="operation error S3: CompleteMultipartUpload, context canceled"
2024-08-23 22:06:49 2024/08/23 20:06:49.749920 level=INFO event=ResponseOutgoing method=POST path="" requestId="" id=01J60AQRY6SX5Y1R6KGHGQ8RAJ+OWMyODgxOGQtZmUwYS00MmU2LWI2ZTMtNWY5ZmU2NTEzN2ZhLmY1ODlhYmVmLWRiMmEtNGMzMC1iZGVjLWNhOWUwNDZjZGI4M3gxNzI0NDQwNjM0MzEzNjQxOTI0 status=500 body="ERR_INTERNAL_SERVER_ERROR: operation error S3: CompleteMultipartUpload, context canceled\n"
2024-08-23 22:06:49 2024/08/23 20:06:49.749971 level=INFO event=ChunkWriteComplete method=POST path="" requestId="" id=01J60AQRZXA7Q30YMMHQ1CMWNJ+OWMyODgxOGQtZmUwYS00MmU2LWI2ZTMtNWY5ZmU2NTEzN2ZhLjNmNTQ1NmU5LTNkMjctNDgwMS1hYTNjLWIwZjBkZTVmMGQ3NHgxNzI0NDQwNjM0MzczNjI0MzQx bytesWritten=4173813
2024-08-23 22:06:49 2024/08/23 20:06:49.750047 level=ERROR event=InternalServerError method=POST path="" requestId="" id=01J60AQRZXA7Q30YMMHQ1CMWNJ+OWMyODgxOGQtZmUwYS00MmU2LWI2ZTMtNWY5ZmU2NTEzN2ZhLjNmNTQ1NmU5LTNkMjctNDgwMS1hYTNjLWIwZjBkZTVmMGQ3NHgxNzI0NDQwNjM0MzczNjI0MzQx message="operation error S3: CompleteMultipartUpload, context canceled"
2024-08-23 22:06:49 2024/08/23 20:06:49.750057 level=INFO event=ResponseOutgoing method=POST path="" requestId="" id=01J60AQRZXA7Q30YMMHQ1CMWNJ+OWMyODgxOGQtZmUwYS00MmU2LWI2ZTMtNWY5ZmU2NTEzN2ZhLjNmNTQ1NmU5LTNkMjctNDgwMS1hYTNjLWIwZjBkZTVmMGQ3NHgxNzI0NDQwNjM0MzczNjI0MzQx status=500 body="ERR_INTERNAL_SERVER_ERROR: operation error S3: CompleteMultipartUpload, context canceled\n"
2024-08-23 22:06:49 2024/08/23 20:06:49.750092 level=INFO event=ChunkWriteComplete method=POST path="" requestId="" id=01J60AQRZDRRNBSX30V148J05Q+OWMyODgxOGQtZmUwYS00MmU2LWI2ZTMtNWY5ZmU2NTEzN2ZhLjViZGIxM2E0LTRkNzYtNDNiNy1iYjMzLWVmMzAwMTBlZmFhMHgxNzI0NDQwNjM0MzUzODQ3OTI0 bytesWritten=4454746
2024-08-23 22:06:49 2024/08/23 20:06:49.750180 level=ERROR event=InternalServerError method=POST path="" requestId="" id=01J60AQRZDRRNBSX30V148J05Q+OWMyODgxOGQtZmUwYS00MmU2LWI2ZTMtNWY5ZmU2NTEzN2ZhLjViZGIxM2E0LTRkNzYtNDNiNy1iYjMzLWVmMzAwMTBlZmFhMHgxNzI0NDQwNjM0MzUzODQ3OTI0 message="operation error S3: CompleteMultipartUpload, context canceled"
2024-08-23 22:06:49 2024/08/23 20:06:49.750201 level=INFO event=ResponseOutgoing method=POST path="" requestId="" id=01J60AQRZDRRNBSX30V148J05Q+OWMyODgxOGQtZmUwYS00MmU2LWI2ZTMtNWY5ZmU2NTEzN2ZhLjViZGIxM2E0LTRkNzYtNDNiNy1iYjMzLWVmMzAwMTBlZmFhMHgxNzI0NDQwNjM0MzUzODQ3OTI0 status=500 body="ERR_INTERNAL_SERVER_ERROR: operation error S3: CompleteMultipartUpload, context canceled\n"
2024-08-23 22:06:49 2024/08/23 20:06:49.750252 level=INFO event=ChunkWriteComplete method=POST path="" requestId="" id=01J60AQRZ3AW8Q9YEMXYYEDJ9Q+OWMyODgxOGQtZmUwYS00MmU2LWI2ZTMtNWY5ZmU2NTEzN2ZhLjI1OWY4ZjVlLTNhZjItNDQ2OC04NzI2LWViMmRiMmUyMjFmNHgxNzI0NDQwNjM0MzQ0MTk1Mzgy bytesWritten=4946174
2024-08-23 22:06:49 2024/08/23 20:06:49.750314 level=ERROR event=InternalServerError method=POST path="" requestId="" id=01J60AQRZ3AW8Q9YEMXYYEDJ9Q+OWMyODgxOGQtZmUwYS00MmU2LWI2ZTMtNWY5ZmU2NTEzN2ZhLjI1OWY4ZjVlLTNhZjItNDQ2OC04NzI2LWViMmRiMmUyMjFmNHgxNzI0NDQwNjM0MzQ0MTk1Mzgy message="operation error S3: CompleteMultipartUpload, context canceled"
2024-08-23 22:06:49 2024/08/23 20:06:49.750333 level=INFO event=ResponseOutgoing method=POST path="" requestId="" id=01J60AQRZ3AW8Q9YEMXYYEDJ9Q+OWMyODgxOGQtZmUwYS00MmU2LWI2ZTMtNWY5ZmU2NTEzN2ZhLjI1OWY4ZjVlLTNhZjItNDQ2OC04NzI2LWViMmRiMmUyMjFmNHgxNzI0NDQwNjM0MzQ0MTk1Mzgy status=500 body="ERR_INTERNAL_SERVER_ERROR: operation error S3: CompleteMultipartUpload, context canceled\n"
2024-08-23 22:06:49 2024/08/23 20:06:49.750363 level=INFO event=ChunkWriteComplete method=POST path="" requestId="" id=01J60AQRZG12B95VDY1V8FKSD6+OWMyODgxOGQtZmUwYS00MmU2LWI2ZTMtNWY5ZmU2NTEzN2ZhLjIzY2Y2YzI2LWJhMWYtNDcyZS1iM2M1LWVmOTNhZWY5OGYwMngxNzI0NDQwNjM0MzU4MTMxNDY2 bytesWritten=5027201
2024-08-23 22:06:49 2024/08/23 20:06:49.750419 level=ERROR event=InternalServerError method=POST path="" requestId="" id=01J60AQRZG12B95VDY1V8FKSD6+OWMyODgxOGQtZmUwYS00MmU2LWI2ZTMtNWY5ZmU2NTEzN2ZhLjIzY2Y2YzI2LWJhMWYtNDcyZS1iM2M1LWVmOTNhZWY5OGYwMngxNzI0NDQwNjM0MzU4MTMxNDY2 message="operation error S3: CompleteMultipartUpload, context canceled"
2024-08-23 22:06:49 2024/08/23 20:06:49.750435 level=INFO event=ResponseOutgoing method=POST path="" requestId="" id=01J60AQRZG12B95VDY1V8FKSD6+OWMyODgxOGQtZmUwYS00MmU2LWI2ZTMtNWY5ZmU2NTEzN2ZhLjIzY2Y2YzI2LWJhMWYtNDcyZS1iM2M1LWVmOTNhZWY5OGYwMngxNzI0NDQwNjM0MzU4MTMxNDY2 status=500 body="ERR_INTERNAL_SERVER_ERROR: operation error S3: CompleteMultipartUpload, context canceled\n"
2024-08-23 22:06:49 2024/08/23 20:06:49.750460 level=INFO event=ChunkWriteComplete method=POST path="" requestId="" id=01J60AQRZNJGWJCMG6WF7VZPCA+OWMyODgxOGQtZmUwYS00MmU2LWI2ZTMtNWY5ZmU2NTEzN2ZhLjVmZGUxOWMzLWQ4ODktNDAwYy1hMTcxLTAxM2VkZWI0NWY0N3gxNzI0NDQwNjM0MzYwMjYxNjMy bytesWritten=5329688
2024-08-23 22:06:49 2024/08/23 20:06:49.750497 level=ERROR event=InternalServerError method=POST path="" requestId="" id=01J60AQRZNJGWJCMG6WF7VZPCA+OWMyODgxOGQtZmUwYS00MmU2LWI2ZTMtNWY5ZmU2NTEzN2ZhLjVmZGUxOWMzLWQ4ODktNDAwYy1hMTcxLTAxM2VkZWI0NWY0N3gxNzI0NDQwNjM0MzYwMjYxNjMy message="operation error S3: CompleteMultipartUpload, context canceled"
2024-08-23 22:06:49 2024/08/23 20:06:49.750514 level=INFO event=ResponseOutgoing method=POST path="" requestId="" id=01J60AQRZNJGWJCMG6WF7VZPCA+OWMyODgxOGQtZmUwYS00MmU2LWI2ZTMtNWY5ZmU2NTEzN2ZhLjVmZGUxOWMzLWQ4ODktNDAwYy1hMTcxLTAxM2VkZWI0NWY0N3gxNzI0NDQwNjM0MzYwMjYxNjMy status=500 body="ERR_INTERNAL_SERVER_ERROR: operation error S3: CompleteMultipartUpload, context canceled\n"
2024-08-23 22:06:49 2024/08/23 20:06:49.750536 level=INFO event=ChunkWriteComplete method=POST path="" requestId="" id=01J60AQS2V4BH59Y7D22X97WRK+OWMyODgxOGQtZmUwYS00MmU2LWI2ZTMtNWY5ZmU2NTEzN2ZhLjc0MTRhNmYyLTk4ZWItNDQ1Ni1iMDJlLWQ1MTZkYmIzMTMyMXgxNzI0NDQwNjM0NDY0NDYyNjc0 bytesWritten=5443240
2024-08-23 22:06:49 2024/08/23 20:06:49.750596 level=ERROR event=InternalServerError method=POST path="" requestId="" id=01J60AQS2V4BH59Y7D22X97WRK+OWMyODgxOGQtZmUwYS00MmU2LWI2ZTMtNWY5ZmU2NTEzN2ZhLjc0MTRhNmYyLTk4ZWItNDQ1Ni1iMDJlLWQ1MTZkYmIzMTMyMXgxNzI0NDQwNjM0NDY0NDYyNjc0 message="operation error S3: CompleteMultipartUpload, context canceled"
2024-08-23 22:06:49 2024/08/23 20:06:49.750607 level=INFO event=ResponseOutgoing method=POST path="" requestId="" id=01J60AQS2V4BH59Y7D22X97WRK+OWMyODgxOGQtZmUwYS00MmU2LWI2ZTMtNWY5ZmU2NTEzN2ZhLjc0MTRhNmYyLTk4ZWItNDQ1Ni1iMDJlLWQ1MTZkYmIzMTMyMXgxNzI0NDQwNjM0NDY0NDYyNjc0 status=500 body="ERR_INTERNAL_SERVER_ERROR: operation error S3: CompleteMultipartUpload, context canceled\n"
2024-08-23 22:06:49 2024/08/23 20:06:49.750635 level=INFO event=ChunkWriteComplete method=POST path="" requestId="" id=01J60AQRZCV67D87TTS8ECFPAV+OWMyODgxOGQtZmUwYS00MmU2LWI2ZTMtNWY5ZmU2NTEzN2ZhLjk0YmJjNDQ4LTRkM2QtNDU2Ni05MzY0LTVlMjI3MTM2YWQyOXgxNzI0NDQwNjM0MzU0NTg5NzU3 bytesWritten=5591095
2024-08-23 22:06:49 2024/08/23 20:06:49.750681 level=ERROR event=InternalServerError method=POST path="" requestId="" id=01J60AQRZCV67D87TTS8ECFPAV+OWMyODgxOGQtZmUwYS00MmU2LWI2ZTMtNWY5ZmU2NTEzN2ZhLjk0YmJjNDQ4LTRkM2QtNDU2Ni05MzY0LTVlMjI3MTM2YWQyOXgxNzI0NDQwNjM0MzU0NTg5NzU3 message="operation error S3: CompleteMultipartUpload, context canceled"
2024-08-23 22:06:49 2024/08/23 20:06:49.750689 level=INFO event=ResponseOutgoing method=POST path="" requestId="" id=01J60AQRZCV67D87TTS8ECFPAV+OWMyODgxOGQtZmUwYS00MmU2LWI2ZTMtNWY5ZmU2NTEzN2ZhLjk0YmJjNDQ4LTRkM2QtNDU2Ni05MzY0LTVlMjI3MTM2YWQyOXgxNzI0NDQwNjM0MzU0NTg5NzU3 status=500 body="ERR_INTERNAL_SERVER_ERROR: operation error S3: CompleteMultipartUpload, context canceled\n"
2024-08-23 22:06:49 2024/08/23 20:06:49.750708 level=INFO event=ChunkWriteComplete method=POST path="" requestId="" id=01J60AQS05AZHCGJRV19CJTE5X+OWMyODgxOGQtZmUwYS00MmU2LWI2ZTMtNWY5ZmU2NTEzN2ZhLjM4OWY1YTA3LTc0OTAtNGFlNS04MjhiLTQwZjZhNGY2YzhkYXgxNzI0NDQwNjM0Mzk2Njc4NTA3 bytesWritten=5636635
2024-08-23 22:06:49 2024/08/23 20:06:49.750777 level=ERROR event=InternalServerError method=POST path="" requestId="" id=01J60AQS05AZHCGJRV19CJTE5X+OWMyODgxOGQtZmUwYS00MmU2LWI2ZTMtNWY5ZmU2NTEzN2ZhLjM4OWY1YTA3LTc0OTAtNGFlNS04MjhiLTQwZjZhNGY2YzhkYXgxNzI0NDQwNjM0Mzk2Njc4NTA3 message="operation error S3: CompleteMultipartUpload, context canceled"
2024-08-23 22:06:49 2024/08/23 20:06:49.750792 level=INFO event=ResponseOutgoing method=POST path="" requestId="" id=01J60AQS05AZHCGJRV19CJTE5X+OWMyODgxOGQtZmUwYS00MmU2LWI2ZTMtNWY5ZmU2NTEzN2ZhLjM4OWY1YTA3LTc0OTAtNGFlNS04MjhiLTQwZjZhNGY2YzhkYXgxNzI0NDQwNjM0Mzk2Njc4NTA3 status=500 body="ERR_INTERNAL_SERVER_ERROR: operation error S3: CompleteMultipartUpload, context canceled\n"
2024-08-23 22:06:49 2024/08/23 20:06:49.750826 level=INFO event=ChunkWriteComplete method=POST path="" requestId="" id=01J60AQS00V05H0QGHYDSZFQ9X+OWMyODgxOGQtZmUwYS00MmU2LWI2ZTMtNWY5ZmU2NTEzN2ZhLjM1OWFiNzI4LWZhYTMtNDNlYy04NDdkLTBkMDRiZDIyZThiYngxNzI0NDQwNjM0MzcwNzAyNTkx bytesWritten=6148748
2024-08-23 22:06:49 2024/08/23 20:06:49.750905 level=ERROR event=InternalServerError method=POST path="" requestId="" id=01J60AQS00V05H0QGHYDSZFQ9X+OWMyODgxOGQtZmUwYS00MmU2LWI2ZTMtNWY5ZmU2NTEzN2ZhLjM1OWFiNzI4LWZhYTMtNDNlYy04NDdkLTBkMDRiZDIyZThiYngxNzI0NDQwNjM0MzcwNzAyNTkx message="operation error S3: CompleteMultipartUpload, context canceled"
2024-08-23 22:06:49 2024/08/23 20:06:49.750913 level=INFO event=ResponseOutgoing method=POST path="" requestId="" id=01J60AQS00V05H0QGHYDSZFQ9X+OWMyODgxOGQtZmUwYS00MmU2LWI2ZTMtNWY5ZmU2NTEzN2ZhLjM1OWFiNzI4LWZhYTMtNDNlYy04NDdkLTBkMDRiZDIyZThiYngxNzI0NDQwNjM0MzcwNzAyNTkx status=500 body="ERR_INTERNAL_SERVER_ERROR: operation error S3: CompleteMultipartUpload, context canceled\n"
2024-08-23 22:06:49 2024/08/23 20:06:49.750930 level=INFO event=ChunkWriteComplete method=POST path="" requestId="" id=01J60AQS1MX8DNXKMMRZMZPQRD+OWMyODgxOGQtZmUwYS00MmU2LWI2ZTMtNWY5ZmU2NTEzN2ZhLjlmZWRkOWU2LTBmYTgtNDYxOC04N2FjLTk4NjBiMjVjNzFkZHgxNzI0NDQwNjM0NDIxNzU2MjU3 bytesWritten=6327729
2024-08-23 22:06:49 2024/08/23 20:06:49.750965 level=ERROR event=InternalServerError method=POST path="" requestId="" id=01J60AQS1MX8DNXKMMRZMZPQRD+OWMyODgxOGQtZmUwYS00MmU2LWI2ZTMtNWY5ZmU2NTEzN2ZhLjlmZWRkOWU2LTBmYTgtNDYxOC04N2FjLTk4NjBiMjVjNzFkZHgxNzI0NDQwNjM0NDIxNzU2MjU3 message="operation error S3: CompleteMultipartUpload, context canceled"
2024-08-23 22:06:49 2024/08/23 20:06:49.750978 level=INFO event=ResponseOutgoing method=POST path="" requestId="" id=01J60AQS1MX8DNXKMMRZMZPQRD+OWMyODgxOGQtZmUwYS00MmU2LWI2ZTMtNWY5ZmU2NTEzN2ZhLjlmZWRkOWU2LTBmYTgtNDYxOC04N2FjLTk4NjBiMjVjNzFkZHgxNzI0NDQwNjM0NDIxNzU2MjU3 status=500 body="ERR_INTERNAL_SERVER_ERROR: operation error S3: CompleteMultipartUpload, context canceled\n"
2024-08-23 22:06:49 2024/08/23 20:06:49.751015 level=INFO event=ChunkWriteComplete method=POST path="" requestId="" id=01J60AQS2Y1VFSQJQKPQ5JDAZQ+OWMyODgxOGQtZmUwYS00MmU2LWI2ZTMtNWY5ZmU2NTEzN2ZhLjIzNjM5YTAzLTM4ZTAtNGQyYi05NzA0LTZkMzZkOTkyZjNmOXgxNzI0NDQwNjM0NDY1NTg4NzU3 bytesWritten=7338053
2024-08-23 22:06:49 2024/08/23 20:06:49.751060 level=ERROR event=InternalServerError method=POST path="" requestId="" id=01J60AQS2Y1VFSQJQKPQ5JDAZQ+OWMyODgxOGQtZmUwYS00MmU2LWI2ZTMtNWY5ZmU2NTEzN2ZhLjIzNjM5YTAzLTM4ZTAtNGQyYi05NzA0LTZkMzZkOTkyZjNmOXgxNzI0NDQwNjM0NDY1NTg4NzU3 message="operation error S3: CompleteMultipartUpload, context canceled"
2024-08-23 22:06:49 2024/08/23 20:06:49.751065 level=INFO event=ResponseOutgoing method=POST path="" requestId="" id=01J60AQS2Y1VFSQJQKPQ5JDAZQ+OWMyODgxOGQtZmUwYS00MmU2LWI2ZTMtNWY5ZmU2NTEzN2ZhLjIzNjM5YTAzLTM4ZTAtNGQyYi05NzA0LTZkMzZkOTkyZjNmOXgxNzI0NDQwNjM0NDY1NTg4NzU3 status=500 body="ERR_INTERNAL_SERVER_ERROR: operation error S3: CompleteMultipartUpload, context canceled\n"
2024-08-23 22:06:49 2024/08/23 20:06:49.751082 level=INFO event=ChunkWriteComplete method=POST path="" requestId="" id=01J60AQS4WHZXQKS0MFGYT5MXG+OWMyODgxOGQtZmUwYS00MmU2LWI2ZTMtNWY5ZmU2NTEzN2ZhLjY1MTI5ZGQ5LWU1OTAtNDRiNS04MTQwLWRlYWZlNjQ4OTZiZXgxNzI0NDQwNjM0NTI1NzM2NTkx bytesWritten=8066909
2024-08-23 22:06:49 2024/08/23 20:06:49.751115 level=ERROR event=InternalServerError method=POST path="" requestId="" id=01J60AQS4WHZXQKS0MFGYT5MXG+OWMyODgxOGQtZmUwYS00MmU2LWI2ZTMtNWY5ZmU2NTEzN2ZhLjY1MTI5ZGQ5LWU1OTAtNDRiNS04MTQwLWRlYWZlNjQ4OTZiZXgxNzI0NDQwNjM0NTI1NzM2NTkx message="operation error S3: CompleteMultipartUpload, context canceled"
2024-08-23 22:06:49 2024/08/23 20:06:49.751120 level=INFO event=ResponseOutgoing method=POST path="" requestId="" id=01J60AQS4WHZXQKS0MFGYT5MXG+OWMyODgxOGQtZmUwYS00MmU2LWI2ZTMtNWY5ZmU2NTEzN2ZhLjY1MTI5ZGQ5LWU1OTAtNDRiNS04MTQwLWRlYWZlNjQ4OTZiZXgxNzI0NDQwNjM0NTI1NzM2NTkx status=500 body="ERR_INTERNAL_SERVER_ERROR: operation error S3: CompleteMultipartUpload, context canceled\n"
2024-08-23 22:06:49 2024/08/23 20:06:49.751141 level=INFO event=ChunkWriteComplete method=POST path="" requestId="" id=01J60AQS1D75X6BR7NDN0VR0VD+OWMyODgxOGQtZmUwYS00MmU2LWI2ZTMtNWY5ZmU2NTEzN2ZhLjQ4NGE2NjJlLTdkYWEtNDk1YS1iNjRiLTJjODZjYjMyNTY5M3gxNzI0NDQwNjM0NDE1MDg2Njc0 bytesWritten=8866867
2024-08-23 22:06:49 2024/08/23 20:06:49.751185 level=ERROR event=InternalServerError method=POST path="" requestId="" id=01J60AQS1D75X6BR7NDN0VR0VD+OWMyODgxOGQtZmUwYS00MmU2LWI2ZTMtNWY5ZmU2NTEzN2ZhLjQ4NGE2NjJlLTdkYWEtNDk1YS1iNjRiLTJjODZjYjMyNTY5M3gxNzI0NDQwNjM0NDE1MDg2Njc0 message="operation error S3: CompleteMultipartUpload, context canceled"
2024-08-23 22:06:49 2024/08/23 20:06:49.751198 level=INFO event=ResponseOutgoing method=POST path="" requestId="" id=01J60AQS1D75X6BR7NDN0VR0VD+OWMyODgxOGQtZmUwYS00MmU2LWI2ZTMtNWY5ZmU2NTEzN2ZhLjQ4NGE2NjJlLTdkYWEtNDk1YS1iNjRiLTJjODZjYjMyNTY5M3gxNzI0NDQwNjM0NDE1MDg2Njc0 status=500 body="ERR_INTERNAL_SERVER_ERROR: operation error S3: CompleteMultipartUpload, context canceled\n"
2024-08-23 22:06:49 2024/08/23 20:06:49.751232 level=INFO event=ChunkWriteComplete method=POST path="" requestId="" id=01J60AQRZQDTD2YRXSNEKSZN82+OWMyODgxOGQtZmUwYS00MmU2LWI2ZTMtNWY5ZmU2NTEzN2ZhLjZiNzgyYThmLTEwNzgtNDNkYi1iY2IzLTZkNjM0ZWM0ODhlN3gxNzI0NDQwNjM0MzYzNDk4NzU3 bytesWritten=0
2024-08-23 22:06:49 2024/08/23 20:06:49.751235 level=ERROR event=InternalServerError method=POST path="" requestId="" id=01J60AQRZQDTD2YRXSNEKSZN82+OWMyODgxOGQtZmUwYS00MmU2LWI2ZTMtNWY5ZmU2NTEzN2ZhLjZiNzgyYThmLTEwNzgtNDNkYi1iY2IzLTZkNjM0ZWM0ODhlN3gxNzI0NDQwNjM0MzYzNDk4NzU3 message="operation error S3: UploadPart, context canceled"
2024-08-23 22:06:49 2024/08/23 20:06:49.751248 level=INFO event=ResponseOutgoing method=POST path="" requestId="" id=01J60AQRZQDTD2YRXSNEKSZN82+OWMyODgxOGQtZmUwYS00MmU2LWI2ZTMtNWY5ZmU2NTEzN2ZhLjZiNzgyYThmLTEwNzgtNDNkYi1iY2IzLTZkNjM0ZWM0ODhlN3gxNzI0NDQwNjM0MzYzNDk4NzU3 status=500 body="ERR_INTERNAL_SERVER_ERROR: operation error S3: UploadPart, context canceled\n"
2024-08-23 22:06:49 2024/08/23 20:06:49.751274 level=INFO event=ChunkWriteComplete method=POST path="" requestId="" id=01J60AQS36PBEWZEB1Q5ACJCSQ+OWMyODgxOGQtZmUwYS00MmU2LWI2ZTMtNWY5ZmU2NTEzN2ZhLmNhYzkxZTIzLWU1ZDQtNDM4MC04OTgzLTFkZDZmMGZkYTNiM3gxNzI0NDQwNjM0NDcyMzk4OTY2 bytesWritten=9173680
2024-08-23 22:06:49 2024/08/23 20:06:49.751345 level=ERROR event=InternalServerError method=POST path="" requestId="" id=01J60AQS36PBEWZEB1Q5ACJCSQ+OWMyODgxOGQtZmUwYS00MmU2LWI2ZTMtNWY5ZmU2NTEzN2ZhLmNhYzkxZTIzLWU1ZDQtNDM4MC04OTgzLTFkZDZmMGZkYTNiM3gxNzI0NDQwNjM0NDcyMzk4OTY2 message="operation error S3: CompleteMultipartUpload, context canceled"
2024-08-23 22:06:49 2024/08/23 20:06:49.751365 level=INFO event=ResponseOutgoing method=POST path="" requestId="" id=01J60AQS36PBEWZEB1Q5ACJCSQ+OWMyODgxOGQtZmUwYS00MmU2LWI2ZTMtNWY5ZmU2NTEzN2ZhLmNhYzkxZTIzLWU1ZDQtNDM4MC04OTgzLTFkZDZmMGZkYTNiM3gxNzI0NDQwNjM0NDcyMzk4OTY2 status=500 body="ERR_INTERNAL_SERVER_ERROR: operation error S3: CompleteMultipartUpload, context canceled\n"
2024-08-23 22:06:49 2024/08/23 20:06:49.751392 level=INFO event=ChunkWriteComplete method=POST path="" requestId="" id=01J60AQS0Z1P7ZRE3R519B8873+OWMyODgxOGQtZmUwYS00MmU2LWI2ZTMtNWY5ZmU2NTEzN2ZhLjgyNWM5ZmExLTUwMGQtNGE1NC05MjYwLWVkYmNlNzlmNWE4OXgxNzI0NDQwNjM0NDAxMDkzODgy bytesWritten=0
2024-08-23 22:06:49 2024/08/23 20:06:49.751395 level=ERROR event=InternalServerError method=POST path="" requestId="" id=01J60AQS0Z1P7ZRE3R519B8873+OWMyODgxOGQtZmUwYS00MmU2LWI2ZTMtNWY5ZmU2NTEzN2ZhLjgyNWM5ZmExLTUwMGQtNGE1NC05MjYwLWVkYmNlNzlmNWE4OXgxNzI0NDQwNjM0NDAxMDkzODgy message="operation error S3: UploadPart, context canceled"
2024-08-23 22:06:49 2024/08/23 20:06:49.751399 level=INFO event=ResponseOutgoing method=POST path="" requestId="" id=01J60AQS0Z1P7ZRE3R519B8873+OWMyODgxOGQtZmUwYS00MmU2LWI2ZTMtNWY5ZmU2NTEzN2ZhLjgyNWM5ZmExLTUwMGQtNGE1NC05MjYwLWVkYmNlNzlmNWE4OXgxNzI0NDQwNjM0NDAxMDkzODgy status=500 body="ERR_INTERNAL_SERVER_ERROR: operation error S3: UploadPart, context canceled\n"
2024-08-23 22:06:49 2024/08/23 20:06:49.751413 level=INFO event=ChunkWriteComplete method=POST path="" requestId="" id=01J60AQS4ZJ9YF4Q1XEW05NXEF+OWMyODgxOGQtZmUwYS00MmU2LWI2ZTMtNWY5ZmU2NTEzN2ZhLmNjYmQzOTk1LTBlZWMtNGUxOC05NDJlLWNjZjExMDQxY2VkYngxNzI0NDQwNjM0NTI4NTI2NTkx bytesWritten=9897271
2024-08-23 22:06:49 2024/08/23 20:06:49.751657 level=INFO event=ChunkWriteComplete method=POST path="" requestId="" id=01J60AQS17W4CS4FPRD4V1Y4Q0+OWMyODgxOGQtZmUwYS00MmU2LWI2ZTMtNWY5ZmU2NTEzN2ZhLjE4M2VmODEzLTk1ZTAtNGI3MC1iOTY4LTk5OWY2NzVjZjk2ZHgxNzI0NDQwNjM0NDEwNjg0Njc0 bytesWritten=0
2024-08-23 22:06:49 2024/08/23 20:06:49.751661 level=ERROR event=InternalServerError method=POST path="" requestId="" id=01J60AQS17W4CS4FPRD4V1Y4Q0+OWMyODgxOGQtZmUwYS00MmU2LWI2ZTMtNWY5ZmU2NTEzN2ZhLjE4M2VmODEzLTk1ZTAtNGI3MC1iOTY4LTk5OWY2NzVjZjk2ZHgxNzI0NDQwNjM0NDEwNjg0Njc0 message="operation error S3: UploadPart, context canceled"
2024-08-23 22:06:49 2024/08/23 20:06:49.751665 level=INFO event=ResponseOutgoing method=POST path="" requestId="" id=01J60AQS17W4CS4FPRD4V1Y4Q0+OWMyODgxOGQtZmUwYS00MmU2LWI2ZTMtNWY5ZmU2NTEzN2ZhLjE4M2VmODEzLTk1ZTAtNGI3MC1iOTY4LTk5OWY2NzVjZjk2ZHgxNzI0NDQwNjM0NDEwNjg0Njc0 status=500 body="ERR_INTERNAL_SERVER_ERROR: operation error S3: UploadPart, context canceled\n"
2024-08-23 22:06:49 2024/08/23 20:06:49.751689 level=INFO event=ChunkWriteComplete method=POST path="" requestId="" id=01J60AQS3Y7WE2GP9E8F0GVY81+OWMyODgxOGQtZmUwYS00MmU2LWI2ZTMtNWY5ZmU2NTEzN2ZhLjYxYjZhM2MwLTczZmUtNGM5NS1iN2QyLWRjYmYyOWIzMjMyYXgxNzI0NDQwNjM0NDk2NzE2NzU3 bytesWritten=10383332
2024-08-23 22:06:49 2024/08/23 20:06:49.751867 level=INFO event=ChunkWriteComplete method=POST path="" requestId="" id=01J60AQS4R0CDBB3Q3P91QE0TY+OWMyODgxOGQtZmUwYS00MmU2LWI2ZTMtNWY5ZmU2NTEzN2ZhLmFhZmExZjdlLThmZTEtNDZiOC1hNzgzLTM0Yzc4YzkyNTQ5YngxNzI0NDQwNjM0NTIzODcxMTMy bytesWritten=0
2024-08-23 22:06:49 2024/08/23 20:06:49.751871 level=ERROR event=InternalServerError method=POST path="" requestId="" id=01J60AQS4R0CDBB3Q3P91QE0TY+OWMyODgxOGQtZmUwYS00MmU2LWI2ZTMtNWY5ZmU2NTEzN2ZhLmFhZmExZjdlLThmZTEtNDZiOC1hNzgzLTM0Yzc4YzkyNTQ5YngxNzI0NDQwNjM0NTIzODcxMTMy message="operation error S3: UploadPart, context canceled"
2024-08-23 22:06:49 2024/08/23 20:06:49.751876 level=INFO event=ResponseOutgoing method=POST path="" requestId="" id=01J60AQS4R0CDBB3Q3P91QE0TY+OWMyODgxOGQtZmUwYS00MmU2LWI2ZTMtNWY5ZmU2NTEzN2ZhLmFhZmExZjdlLThmZTEtNDZiOC1hNzgzLTM0Yzc4YzkyNTQ5YngxNzI0NDQwNjM0NTIzODcxMTMy status=500 body="ERR_INTERNAL_SERVER_ERROR: operation error S3: UploadPart, context canceled\n"

The browser shows the following logs:
Bildschirmfoto 2024-08-23 um 22 26 29

I use caddy in front of tusd with the following settings:

@upload host upload.my.domain
    handle @upload {
        # tusd provides a GET method for debugging, we disable that
        # https://github.com/tus/tusd/blob/main/docs/faq.md#how-can-i-prevent-users-from-downloading-the-uploaded-files
        @isGet method GET
        respond @isGet 405

        reverse_proxy http://tusd:9500 {
            # When running tusd behind a reverse proxy, buffering should be completely disabled:
            # https://github.com/tus/tusd/blob/main/docs/faq.md#can-i-run-tusd-behind-a-reverse-proxy
            #
            # By default, the proxy partially buffers the response for wire efficiency:
            # https://caddyserver.com/docs/caddyfile/directives/reverse_proxy#streaming
            #
            # This setting disabled buffering completely
            flush_interval -1
        }
    }

@Acconut
Copy link
Member

Acconut commented Aug 23, 2024

Thanks for the additional details. I will look into this in two weeks. Does this also happen if you upload directly to tusd without using Caddy as a reverse proxy?

@akkie
Copy link
Contributor Author

akkie commented Aug 24, 2024

It needs a bit tweaking on my side to test that only with tusd, because my hook endpoints use authentication and that works only with my local domain.

But I discovered another interesting case. Maybe this is expected, but I think this could lead to disk space issues on the tusd instance.

During a throttled upload I have looked to my upload bucket and I have seen that only the info file gets stored and after looking at the docker metrics I have seen that tusd writes the data to its own storage. With a not throttled upload it sends it directly to minio over the network.

In the first screenshot you can see that I first tested the upload with some small files and later then with a larger video (ca. 145mb). This is where I discovered the issue that there is no file in minio during the upload. Then I restarted tusd, to clear the stats. I disabled throttling and uploaded the video. You can see that there was no write to the disk but the networking IO shows that it has sent the file to minio. It's only a blue line, but if I hover over it, then you can see that it also has sent the data.

Bildschirmfoto 2024-08-24 um 23 16 39

Hovering over the data
Bildschirmfoto 2024-08-25 um 00 04 09

In the second screenshot you can see that with enabled throttling it writes the data to the disk and then sends it in three chunks over the network. But this is still strange, I can see now data in minio during upload.

Bildschirmfoto 2024-08-24 um 23 33 57

@Acconut
Copy link
Member

Acconut commented Aug 25, 2024

But I discovered another interesting case. Maybe this is expected, but I think this could lead to disk space issues on the tusd instance.

Tusd buffers data on disk before uploading it to S3. This happens in chunks, so the entire file isn't stored on disk. We have to do this because S3 expects us to known the size of the chunk we are uploading. See #1084 for more details and a potential alternative/improvement.

@Acconut
Copy link
Member

Acconut commented Aug 25, 2024

But this is still strange, I can see now data in minio during upload.

S3 uploads are performing using S3 nultipart uploads, which don't shown up in the file explorer and ListObjects calls until the upload is done.

@akkie
Copy link
Contributor Author

akkie commented Aug 25, 2024

Thanks for you explanation and the insides. Very helpful. Do you also have an explanation why it has no writes on the disk, if throttling is disabled as you can see in the first screenshot?

@akkie
Copy link
Contributor Author

akkie commented Aug 25, 2024

Tested it without Caddy today and I couldn't reproduce it. So it seems it's an issue when using caddy.

@spaiz
Copy link

spaiz commented Sep 2, 2024

I think I'm getting the same when working with telnyx.com and backblaze.com
It is happening when I try to upload ~1GB file (for 100-300mb everything is OK)

I'm using embedded golang package, and testing it from local host. And this is what I get :/
Something that I notices, PATCH endpoint fails with status 500 after ~10 seconds.

For frontend I use uppy.

Logs from telnyx.com

SDK 2024/09/01 23:27:29 DEBUG request failed with unretryable error https response error StatusCode: 0, RequestID: , HostID: , canceled, context canceled
SDK 2024/09/01 23:27:29 DEBUG request failed with unretryable error https response error StatusCode: 0, RequestID: , HostID: , canceled, context canceled
SDK 2024/09/01 23:27:29 DEBUG request failed with unretryable error https response error StatusCode: 0, RequestID: , HostID: , canceled, context canceled
SDK 2024/09/01 23:27:29 DEBUG request failed with unretryable error https response error StatusCode: 0, RequestID: , HostID: , canceled, context canceled
SDK 2024/09/01 23:27:29 DEBUG request failed with unretryable error https response error StatusCode: 0, RequestID: , HostID: , canceled, context canceled
SDK 2024/09/01 23:27:29 DEBUG request failed with unretryable error https response error StatusCode: 0, RequestID: , HostID: , canceled, context canceled
SDK 2024/09/01 23:27:29 DEBUG request failed with unretryable error https response error StatusCode: 0, RequestID: , HostID: , canceled, context canceled
SDK 2024/09/01 23:27:29 DEBUG request failed with unretryable error https response error StatusCode: 0, RequestID: , HostID: , canceled, context canceled
SDK 2024/09/01 23:27:29 DEBUG request failed with unretryable error https response error StatusCode: 0, RequestID: , HostID: , canceled, context canceled
SDK 2024/09/01 23:27:29 DEBUG request failed with unretryable error https response error StatusCode: 0, RequestID: , HostID: , canceled, context canceled
2024/09/01 23:27:29 INFO ChunkWriteComplete method=PATCH path=/b2b325c9c55414ce8837d864c1acc6c5+2~gk44tFzF-niTC3yFuS8HPTGQ_vn1jqI requestId="" id=b2b325c9c55414ce8837d864c1acc6c5+2~gk44tFzF-niTC3yFuS8HPTGQ_vn1jqI bytesWritten=0
2024/09/01 23:27:29 ERROR InternalServerError method=PATCH path=/b2b325c9c55414ce8837d864c1acc6c5+2~gk44tFzF-niTC3yFuS8HPTGQ_vn1jqI requestId="" id=b2b325c9c55414ce8837d864c1acc6c5+2~gk44tFzF-niTC3yFuS8HPTGQ_vn1jqI message="operation error S3: UploadPart, context canceled"
2024/09/01 23:27:29 INFO ResponseOutgoing method=PATCH path=/b2b325c9c55414ce8837d864c1acc6c5+2~gk44tFzF-niTC3yFuS8HPTGQ_vn1jqI requestId="" id=b2b325c9c55414ce8837d864c1acc6c5+2~gk44tFzF-niTC3yFuS8HPTGQ_vn1jqI status=500 body="ERR_INTERNAL_SERVER_ERROR: operation error S3: UploadPart, context canceled\n"
[GIN] 2024/09/01 - 23:27:29 | 500 | 10.051479083s |             ::1 | PATCH    "/uploads/b2b325c9c55414ce8837d864c1acc6c5+2~gk44tFzF-niTC3yFuS8HPTGQ_vn1jqI"

Logs from backblaze.com

Screenshot 2024-09-02 at 10 49 47

I tried to find any way to configure some timeout maybe, but didn't find anything.

My setup is

func NewTelnyxStore(ctx context.Context) (s3store.S3Store, error) {
	telnyxAPIKey := os.Getenv("TELNYX_API_KEY")
	region, _ := os.LookupEnv("AWS_REGION")
	endpoint := fmt.Sprintf("https://%s.telnyxcloudstorage.com", region)

	s3Client, err := connectS3(ctx, telnyxAPIKey, telnyxAPIKey, region, endpoint)
	bucket, _ := os.LookupEnv("STORAGE_BUCKET")
	store := s3store.New(bucket, s3Client)
	return store, err
}

func NewBackblazeStore(ctx context.Context) (s3store.S3Store, error) {
	region := "us-east-005"
	endpoint := fmt.Sprintf("https://s3.%s.backblazeb2.com", region)

	keyId := "***"
	appKey := "****"

	s3Client, err := connectS3(ctx, keyId, appKey, region, endpoint)
	bucket, _ := os.LookupEnv("STORAGE_BUCKET")
	store := s3store.New(bucket, s3Client)
	return store, err
}

func connectS3(ctx context.Context, apiKey string, secretKey string, region string, endpoint string) (*s3.Client, error) {

	cfg, err := config.LoadDefaultConfig(ctx, config.WithRegion(region),
		config.WithCredentialsProvider(aws.CredentialsProviderFunc(
			func(context.Context) (aws.Credentials, error) {
				return aws.Credentials{
					AccessKeyID:     apiKey,
					SecretAccessKey: secretKey,
				}, nil
			})),
		config.WithS3UseARNRegion(true),
		config.WithS3DisableExpressAuth(true),
		config.WithS3DisableMultiRegionAccessPoints(true),
	)

	if err != nil {
		return nil, err
	}

	cfg.BaseEndpoint = aws.String(endpoint)

	httpClient := awshttp.NewBuildableClient().WithDialerOptions(func(d *net.Dialer) {
		//d.KeepAlive = -1
		d.Timeout = time.Minute * 10
	})

	client := s3.NewFromConfig(cfg, func(o *s3.Options) {
		o.UsePathStyle = true
		o.ClientLogMode |= aws.LogResponse | aws.LogResponseEventMessage | aws.LogRequestEventMessage | aws.LogRequest | aws.LogDeprecatedUsage | aws.LogRetries | aws.LogResponseWithBody
		o.HTTPClient = httpClient
	})

	return client, nil
}
/*
	storageDriver := os.Getenv("STORAGE_DRIVER")
	store, err := infra.NewTelnyxStore(context.Background())
	if err != nil {
		panic(err)
	}
*/
        store, err := infra.NewBackblazeStore(context.Background())
	if err != nil {
		panic(err)
	}

	locker := filelocker.New("./files/uploads")
	composer := tusd.NewStoreComposer()
	store.UseIn(composer)
	locker.UseIn(composer)

	cc := tusd.Config{
		BasePath:              "/uploads/",
		StoreComposer:         composer,
		NotifyCompleteUploads: true,
	}

	handler, err := tusd.NewUnroutedHandler(cc)

@spaiz
Copy link

spaiz commented Sep 3, 2024

I solved the issue by setting

		NetworkTimeout:     time.Minute * 5,

@akkie I'm sure there should be a similar command line param.

@Acconut
Copy link
Member

Acconut commented Dec 20, 2024

@akkie I just had the chance to look more into this and I can shed additional light on the situation. I tried to reproduce the problem using https://uppy.io/examples/, which uploads to our public tusd instance at tusd.tusdemo.net/files/. Even with 30 files totaling to ~300 MB and a throttled connection (similar to your setup in #1172 (comment)), I was not able to reproduce this problem. So it does not seem to be caused inside tusd.

The 502 Bad Gateway response (#1172 (comment)) that the browser receives is not from tusd, but Caddy instead. When a proxy forwards a request to tusd, it waits for a response from tusd. If no request is received in a certain period, the proxy stops the forwarded request and responds with a 502 Bad Gateway to the client/browser. On the other side, tusd sees that the request is cancelled and stops processing giving the context canceled errors in tusd's logs.

It's possible that due to the throttling, the requests take longer than Caddy expects and thus exceeds its timeout for waiting for a response. Without throttling, the responses arrive quickly enough to not trigger the timeout.

If you or anybody else is having this problem I would recommend you to look into your proxies settings and see if you can increase the timeout waiting for responses. Or even better, the proxies' timeout should only start when the full request has been sent to tusd.

I hope this still helps! Since the original issue is a bit older, I will close this for now. If you still have this problem, feel free to leave a comment and we can continue the discussion here.

@Acconut Acconut closed this as completed Dec 20, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

3 participants