Docker 1.29.3: Large File Uploads Fail

Please fill in the questionnaire below.

Technical Help Questionnaire

Have you read and followed the instructions at: *READ ME FIRST* Technical Help FAQs - #2 by nigel ?

Answer: Yes, I have

Self-Hosted Installation and Setup Questions

Delete this section if you are using Baserow.io.

How have you self-hosted Baserow.

Docker 27.4.0 & Docker Compose 1.29.2

What are the specs of the service or server you are using to host Baserow.

Dell Inc. OptiPlex 9020M, 8.0 GiB RAM, 256.1 GB SSD, under Zorin OS 17.2 Core.

Which version of Baserow are you using.

Docker 1.29.3

How have you configured your self-hosted installation?

docker run -d \
--name baserow \
-e BASEROW_PUBLIC_URL=http://{LOCAL_IP_ADDR}}:8080 \
-e EMAIL_SMTP=True \
-e EMAIL_SMTP_USE_SSL=True \
-e EMAIL_SMTP_HOST="smtp.host.com" \
-e EMAIL_SMTP_PORT=465 \
-e EMAIL_SMTP_USER="{USER_NAME}" \
-e EMAIL_SMTP_PASSWORD="{USER_PWD}}" \
-e FROM_EMAIL="{USER_NAME}" \
-e BASEROW_FILE_UPLOAD_SIZE_LIMIT_MB=1048576 \
-p 8080:80 \
-v /home/noco/baserow:/baserow/data \
--restart unless-stopped \
baserow/baserow:1.29.3

There is no external reverse proxy.

What commands if any did you use to start your Baserow server?

Issued “docker run…”, see above.

Describe the problem

Describe, step by step, how to reproduce the error or problem you are encountering.

Start container as above, login, access appropriate table, click in File field to open upload dialog, select file, start upload. Small files (<40MB) succeed. Larger files fail.

Initially the error was:

Now receiving this error:

Peculiar error in logs might be relevant:

[BACKEND][2024-12-15 22:36:11] OSError: [Errno 28] No space left on device

[BACKEND][2024-12-15 22:36:13] {LOCAL_IP_ADDR}}:0 - “POST /api/user-files/upload-file/ HTTP/1.1” 500

What is “device”? Disk space analyzer shows 165GB of free space.

Provide screenshots or include share links showing:

How many rows in total do you have in your Baserow tables?

11 rows, two File fields.

Screenshot 2024-12-15 at 4.08.07 PM

Please attach full logs from all of Baserow’s services

How do you attach log files? Snippet follows:

[BACKEND][2024-12-15 23:21:26] ERROR 2024-12-15 23:21:26,761 django.request.log_response:241- Internal Server Error: /api/user-files/upload-file/   
 [BACKEND][2024-12-15 23:21:26] Traceback (most recent call last):  
 [BACKEND][2024-12-15 23:21:26]   File "/baserow/venv/lib/python3.11/site-packages/asgiref/sync.py", line 518, in thread_handler  
 [BACKEND][2024-12-15 23:21:26]     raise exc_info[1]  
 [BACKEND][2024-12-15 23:21:26]   File "/baserow/venv/lib/python3.11/site-packages/django/core/handlers/exception.py", line 42, in inner  
 [BACKEND][2024-12-15 23:21:26]     response = await get_response(request)  
 [BACKEND][2024-12-15 23:21:26]                ^^^^^^^^^^^^^^^^^^^^^^^^^^^  
 [BACKEND][2024-12-15 23:21:26]   File "/baserow/venv/lib/python3.11/site-packages/asgiref/sync.py", line 518, in thread_handler  
 [BACKEND][2024-12-15 23:21:26]     raise exc_info[1]  
 [BACKEND][2024-12-15 23:21:26]   File "/baserow/venv/lib/python3.11/site-packages/django/core/handlers/base.py", line 253, in _get_response_async  
 [BACKEND][2024-12-15 23:21:26]     response = await wrapped_callback(  
 [BACKEND][2024-12-15 23:21:26]                ^^^^^^^^^^^^^^^^^^^^^^^  
 [BACKEND][2024-12-15 23:21:26]   File "/baserow/venv/lib/python3.11/site-packages/asgiref/sync.py", line 468, in __call__  
 [BACKEND][2024-12-15 23:21:26]     ret = await asyncio.shield(exec_coro)  
 [BACKEND][2024-12-15 23:21:26]           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^  
 [BACKEND][2024-12-15 23:21:26]   File "/baserow/venv/lib/python3.11/site-packages/asgiref/current_thread_executor.py", line 40, in run  
 [BACKEND][2024-12-15 23:21:26]     result = self.fn(*self.args, **self.kwargs)  
 [BACKEND][2024-12-15 23:21:26]              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^  
 [BACKEND][2024-12-15 23:21:26]   File "/baserow/venv/lib/python3.11/site-packages/asgiref/sync.py", line 522, in thread_handler  
 [BACKEND][2024-12-15 23:21:26]     return func(*args, **kwargs)  
 [BACKEND][2024-12-15 23:21:26]            ^^^^^^^^^^^^^^^^^^^^^  
 [BACKEND][2024-12-15 23:21:26]   File "/baserow/venv/lib/python3.11/site-packages/django/views/decorators/csrf.py", line 65, in _view_wrapper  
 [BACKEND][2024-12-15 23:21:26]     return view_func(request, *args, **kwargs)  
 [BACKEND][2024-12-15 23:21:26]            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^  
 [BACKEND][2024-12-15 23:21:26]   File "/baserow/venv/lib/python3.11/site-packages/django/views/generic/base.py", line 104, in view  
 [BACKEND][2024-12-15 23:21:26]     return self.dispatch(request, *args, **kwargs)  
 [BACKEND][2024-12-15 23:21:26]            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^  
 [BACKEND][2024-12-15 23:21:26]   File "/baserow/venv/lib/python3.11/site-packages/rest_framework/views.py", line 509, in dispatch  
 [BACKEND][2024-12-15 23:21:26]     response = self.handle_exception(exc)  
 [BACKEND][2024-12-15 23:21:26]                ^^^^^^^^^^^^^^^^^^^^^^^^^^  
 [BACKEND][2024-12-15 23:21:26]   File "/baserow/venv/lib/python3.11/site-packages/rest_framework/views.py", line 469, in handle_exception  
 [BACKEND][2024-12-15 23:21:26]     self.raise_uncaught_exception(exc)  
 [BACKEND][2024-12-15 23:21:26]   File "/baserow/venv/lib/python3.11/site-packages/rest_framework/views.py", line 480, in raise_uncaught_exception  
 [BACKEND][2024-12-15 23:21:26]     raise exc  
 [BACKEND][2024-12-15 23:21:26]   File "/baserow/venv/lib/python3.11/site-packages/rest_framework/views.py", line 506, in dispatch  
 [BACKEND][2024-12-15 23:21:26]     response = handler(request, *args, **kwargs)  
 [BACKEND][2024-12-15 23:21:26]                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^  
 [BACKEND][2024-12-15 23:21:26]   File "/usr/lib/python3.11/contextlib.py", line 81, in inner  
 [BACKEND][2024-12-15 23:21:26]     return func(*args, **kwds)  
 [BACKEND][2024-12-15 23:21:26]            ^^^^^^^^^^^^^^^^^^^  
 [BACKEND][2024-12-15 23:21:26]   File "/baserow/backend/src/baserow/api/decorators.py", line 113, in func_wrapper  
 [BACKEND][2024-12-15 23:21:26]     return func(*args, **kwargs)  
 [BACKEND][2024-12-15 23:21:26]            ^^^^^^^^^^^^^^^^^^^^^  
 [BACKEND][2024-12-15 23:21:26]   File "/baserow/backend/src/baserow/api/user_files/views.py", line 57, in post  
 [BACKEND][2024-12-15 23:21:26]     if "file" not in request.FILES:  
 [BACKEND][2024-12-15 23:21:26]                      ^^^^^^^^^^^^^  
 [BACKEND][2024-12-15 23:21:26]   File "/baserow/venv/lib/python3.11/site-packages/rest_framework/request.py", line 447, in FILES  
 [BACKEND][2024-12-15 23:21:26]     self._load_data_and_files()  
 [BACKEND][2024-12-15 23:21:26]   File "/baserow/venv/lib/python3.11/site-packages/rest_framework/request.py", line 283, in _load_data_and_files  
 [BACKEND][2024-12-15 23:21:26]     self._data, self._files = self._parse()  
 [BACKEND][2024-12-15 23:21:26]                               ^^^^^^^^^^^^^  
 [BACKEND][2024-12-15 23:21:26]   File "/baserow/venv/lib/python3.11/site-packages/rest_framework/request.py", line 358, in _parse  
 [BACKEND][2024-12-15 23:21:26]     parsed = parser.parse(stream, media_type, self.parser_context)  
 [BACKEND][2024-12-15 23:21:26]              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^  
 [BACKEND][2024-12-15 23:21:26]   File "/baserow/venv/lib/python3.11/site-packages/rest_framework/parsers.py", line 110, in parse  
 [BACKEND][2024-12-15 23:21:26]     data, files = parser.parse()  
 [BACKEND][2024-12-15 23:21:26]                   ^^^^^^^^^^^^^^  
 [BACKEND][2024-12-15 23:21:26]   File "/baserow/venv/lib/python3.11/site-packages/django/http/multipartparser.py", line 124, in parse  
 [BACKEND][2024-12-15 23:21:26]     return self._parse()  
 [BACKEND][2024-12-15 23:21:26]            ^^^^^^^^^^^^^  
 [BACKEND][2024-12-15 23:21:26]   File "/baserow/venv/lib/python3.11/site-packages/django/http/multipartparser.py", line 327, in _parse  
 [BACKEND][2024-12-15 23:21:26]     chunk = handler.receive_data_chunk(chunk, counters[i])  
 [BACKEND][2024-12-15 23:21:26]             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^  
 [BACKEND][2024-12-15 23:21:26]   File "/baserow/venv/lib/python3.11/site-packages/django/core/files/uploadhandler.py", line 176, in receive_data_chunk  
 [BACKEND][2024-12-15 23:21:26]     self.file.write(raw_data)  
 [BACKEND][2024-12-15 23:21:26]   File "/usr/lib/python3.11/tempfile.py", line 638, in func_wrapper  
 [BACKEND][2024-12-15 23:21:26]     return func(*args, **kwargs)  
 [BACKEND][2024-12-15 23:21:26]            ^^^^^^^^^^^^^^^^^^^^^  
 [BACKEND][2024-12-15 23:21:26] OSError: [Errno 28] No space left on device  

Hi @HG2S,

so as the error says I think it is a storage issue. What operating system do you use? Perhaps there is some size limit somewhere that doesn’t allocate all the space for the container’s volume.

The OS is Zorin 17.2 which is based on Ubuntu 22.04.

“Docker Info” shows:

noco@optiplex:~$ docker info
Client: Docker Engine - Community
 Version:    27.4.0
 Context:    default
 Debug Mode: false
 Plugins:
  buildx: Docker Buildx (Docker Inc.)
    Version:  v0.19.2
    Path:     /usr/libexec/docker/cli-plugins/docker-buildx
  compose: Docker Compose (Docker Inc.)
    Version:  v2.31.0
    Path:     /usr/libexec/docker/cli-plugins/docker-compose

Server:
 Containers: 2
  Running: 2
  Paused: 0
  Stopped: 0
 Images: 9
 Server Version: 27.4.0
 Storage Driver: overlay2
  Backing Filesystem: extfs
  Supports d_type: true
  Using metacopy: false
  Native Overlay Diff: true
  userxattr: false
 Logging Driver: json-file
 Cgroup Driver: systemd
 Cgroup Version: 2
 Plugins:
  Volume: local
  Network: bridge host ipvlan macvlan null overlay
  Log: awslogs fluentd gcplogs gelf journald json-file local splunk syslog
 Swarm: inactive
 Runtimes: io.containerd.runc.v2 runc
 Default Runtime: runc
 Init Binary: docker-init
 containerd version: 88bf19b2105c8b17560993bee28a01ddc2f97182
 runc version: v1.2.2-0-g7cb3632
 init version: de40ad0
 Security Options:
  apparmor
  seccomp
   Profile: builtin
  cgroupns
 Kernel Version: 6.8.0-49-generic
 Operating System: Zorin OS 17.2
 OSType: linux
 Architecture: x86_64
 CPUs: 4
 Total Memory: 7.664GiB
 Name: optiplex
 ID: eda75612-1706-42b2-98ae-a8dcae06953b
 Docker Root Dir: /var/lib/docker
 Debug Mode: false
 Experimental: false
 Insecure Registries:
  127.0.0.0/8
 Live Restore Enabled: false

WARNING: bridge-nf-call-iptables is disabled
WARNING: bridge-nf-call-ip6tables is disabled

I believe the storage driver overlay2 lifts the older/previous container size from a default 10GB to 100GB, but please check and verify.

The command ‘docker ps --size’ shows baserow container uses:

533MB (virtual 2.53GB)

CONTAINER ID   IMAGE                           COMMAND               CREATED        STATUS                    PORTS                                                                                            NAMES       SIZE
62db76a4f34a   baserow/baserow:1.29.3          "/baserow.sh start"   18 hours ago   Up 29 minutes (healthy)   0.0.0.0:8080->80/tcp, [::]:8080->80/tcp                                                          baserow     533MB (virtual 2.53GB)
b7e93e450ae5   portainer/portainer-ce:latest   "/portainer"          3 weeks ago    Up 29 minutes             0.0.0.0:8000->8000/tcp, :::8000->8000/tcp, 0.0.0.0:9443->9443/tcp, :::9443->9443/tcp, 9000/tcp   portainer   0B (virtual 302MB)

'Docker system df" seems to suggest that local volumes and containers are pretty slim.

noco@optiplex:~$ docker system df
TYPE            TOTAL     ACTIVE    SIZE      RECLAIMABLE
Images          9         2         6.257GB   5.006GB (80%)
Containers      2         2         532.9MB   0B (0%)
Local Volumes   18        0         296.2MB   296.2MB (100%)
Build Cache     0         0         0B        0B
noco@optiplex:~$ 

Further, ‘du -shc /var/lib/docker/*’ shows:

root@optiplex:/home/noco# du -shc /var/lib/docker/*
112K	/var/lib/docker/buildkit
2.7M	/var/lib/docker/containers
4.0K	/var/lib/docker/engine-id
24M	/var/lib/docker/image
112K	/var/lib/docker/network
10G	/var/lib/docker/overlay2
16K	/var/lib/docker/plugins
4.0K	/var/lib/docker/runtimes
4.0K	/var/lib/docker/swarm
4.0K	/var/lib/docker/tmp
291M	/var/lib/docker/volumes
11G	total

Note: overlay2 is at 10G.

Should I just flush everything and start over? None of this suggests to me that I should not be able to upload a file in excess of 40 MB.

-Thank you

Just installed a clean Ubuntu 24.04 LTS along with Docker and Docker Compose. Same system specs as above.

Installed Baserow using Docker CLI (based on example in the Documentation):

docker run \
  -d \
  --name baserow \
  -e BASEROW_PUBLIC_URL=http://{IP_ADDR}:8080 \
  -v ~/baserow_data:/baserow/data \
  -p 8080:80 \
  -p 4443:443 \
  --restart unless-stopped \
  baserow/baserow:1.29.3

Setup simple database with a couple text fields and one File field for uploads.

Same results as above except the API error message (“Could not connect to the API server”) appears for all large uploads. Small files are accepted. All uploads were attempted from the server PC (locally; not remotely).

The logs present the same error: “OSError: [Errno 28] No space left on device”

 [BACKEND][2024-12-16 20:48:07] 127.0.0.1:36622 - "GET /api/_health/ HTTP/1.1" 200  
 [BACKEND][2024-12-16 20:48:07] [2024-12-16 20:48:07 +0000] [510] [ERROR] Exception in ASGI application  
 [BACKEND][2024-12-16 20:48:07] Traceback (most recent call last):  
 [BACKEND][2024-12-16 20:48:07]   File "/baserow/venv/lib/python3.11/site-packages/uvicorn/protocols/http/httptools_impl.py", line 411, in run_asgi  
 [BACKEND][2024-12-16 20:48:07]     result = await app(  # type: ignore[func-returns-value]  
 [BACKEND][2024-12-16 20:48:07]              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^  
 [BACKEND][2024-12-16 20:48:07]   File "/baserow/venv/lib/python3.11/site-packages/uvicorn/middleware/proxy_headers.py", line 69, in __call__  
 [BACKEND][2024-12-16 20:48:07]     return await self.app(scope, receive, send)  
 [BACKEND][2024-12-16 20:48:07]            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^  
 [BACKEND][2024-12-16 20:48:07]   File "/baserow/venv/lib/python3.11/site-packages/channels/routing.py", line 62, in __call__  
 [BACKEND][2024-12-16 20:48:07]     return await application(scope, receive, send)  
 [BACKEND][2024-12-16 20:48:07]            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^  
 [BACKEND][2024-12-16 20:48:07]   File "/baserow/backend/src/baserow/config/helpers.py", line 31, in __call__  
 [BACKEND][2024-12-16 20:48:07]     await self.app(scope, receive, send)  
 [BACKEND][2024-12-16 20:48:07]   File "/baserow/venv/lib/python3.11/site-packages/django/core/handlers/asgi.py", line 170, in __call__  
 [BACKEND][2024-12-16 20:48:07]     await self.handle(scope, receive, send)  
 [BACKEND][2024-12-16 20:48:07]   File "/baserow/venv/lib/python3.11/site-packages/django/core/handlers/asgi.py", line 178, in handle  
 [BACKEND][2024-12-16 20:48:07]     body_file = await self.read_body(receive)  
 [BACKEND][2024-12-16 20:48:07]                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^  
 [BACKEND][2024-12-16 20:48:07]   File "/baserow/venv/lib/python3.11/site-packages/django/core/handlers/asgi.py", line 274, in read_body  
 [BACKEND][2024-12-16 20:48:07]     body_file.write(message["body"])  
 [BACKEND][2024-12-16 20:48:07]   File "/usr/lib/python3.11/tempfile.py", line 981, in write  
 [BACKEND][2024-12-16 20:48:07]     rv = file.write(s)  
 [BACKEND][2024-12-16 20:48:07]          ^^^^^^^^^^^^^  
 [BACKEND][2024-12-16 20:48:07] OSError: [Errno 28] No space left on device  
 [BACKEND][2024-12-16 20:48:07] 192.168.2.80:0 - "POST /api/user-files/upload-file/ HTTP/1.1" 500  
 [BACKEND][2024-12-16 20:48:07] [2024-12-16 20:48:07 +0000] [510] [ERROR] Exception in ASGI application  
 [BACKEND][2024-12-16 20:48:07] Traceback (most recent call last):  
 [BACKEND][2024-12-16 20:48:07]   File "/baserow/venv/lib/python3.11/site-packages/uvicorn/protocols/http/httptools_impl.py", line 411, in run_asgi  
 [BACKEND][2024-12-16 20:48:07]     result = await app(  # type: ignore[func-returns-value]  
 [BACKEND][2024-12-16 20:48:07]              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^  
 [BACKEND][2024-12-16 20:48:07]   File "/baserow/venv/lib/python3.11/site-packages/uvicorn/middleware/proxy_headers.py", line 69, in __call__  
 [BACKEND][2024-12-16 20:48:07]     return await self.app(scope, receive, send)  
 [BACKEND][2024-12-16 20:48:07]            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^  
 [BACKEND][2024-12-16 20:48:07]   File "/baserow/venv/lib/python3.11/site-packages/channels/routing.py", line 62, in __call__  
 [BACKEND][2024-12-16 20:48:07]     return await application(scope, receive, send)  
 [BACKEND][2024-12-16 20:48:07]            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^  
 [BACKEND][2024-12-16 20:48:07]   File "/baserow/backend/src/baserow/config/helpers.py", line 31, in __call__  
 [BACKEND][2024-12-16 20:48:07]     await self.app(scope, receive, send)  
 [BACKEND][2024-12-16 20:48:07]   File "/baserow/venv/lib/python3.11/site-packages/django/core/handlers/asgi.py", line 170, in __call__  
 [BACKEND][2024-12-16 20:48:07]     await self.handle(scope, receive, send)  
 [BACKEND][2024-12-16 20:48:07]   File "/baserow/venv/lib/python3.11/site-packages/django/core/handlers/asgi.py", line 178, in handle  
 [BACKEND][2024-12-16 20:48:07]     body_file = await self.read_body(receive)  
 [BACKEND][2024-12-16 20:48:07]                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^  
 [BACKEND][2024-12-16 20:48:07]   File "/baserow/venv/lib/python3.11/site-packages/django/core/handlers/asgi.py", line 274, in read_body  
 [BACKEND][2024-12-16 20:48:07]     body_file.write(message["body"])  
 [BACKEND][2024-12-16 20:48:07]   File "/usr/lib/python3.11/tempfile.py", line 981, in write  
 [BACKEND][2024-12-16 20:48:07]     rv = file.write(s)  
 [BACKEND][2024-12-16 20:48:07]          ^^^^^^^^^^^^^  
 [BACKEND][2024-12-16 20:48:07] OSError: [Errno 28] No space left on device  
 [CADDY][2024-12-16 20:48:07] {"level":"error","ts":1734382055.2832043,"logger":"http.log.error","msg":"readfrom tcp 127.0.0.1:59276->127.0.0.1:8000: write tcp 127.0.0.1:59276->127.0.0.1:8000: write: connection reset by peer","request":{"remote_ip":"192.168.2.80","remote_port":"52510","client_ip":"192.168.2.80","proto":"HTTP/1.1","method":"POST","host":"192.168.2.80:8080","uri":"/api/user-files/upload-file/","headers":{"Referer":["http://192.168.2.80:8080/database/106/table/518/2274"],"Accept-Language":["en-US,en;q=0.5"],"Accept-Encoding":["gzip, deflate"],"Content-Type":["multipart/form-data; boundary=---------------------------25572599632103869001823454459"],"Origin":["http://192.168.2.80:8080"],"Sec-Gpc":["1"],"Priority":["u=0"],"Authorization":[],"Accept":["application/json"],"Clientsessionid":["132ddbb4-a896-44a7-8540-b57c7fb99c82"],"Websocketid":["c0382f93-7c8f-4d8a-8090-567b50b4feb7"],"Content-Length":["104857823"],"Connection":["keep-alive"],"Cookie":[],"User-Agent":["Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:133.0) Gecko/20100101 Firefox/133.0"]}},"duration":0.158893317,"status":502,"err_id":"557pf9mzr","err_trace":"reverseproxy.statusError (reverseproxy.go:1267)"}  
 [BACKEND][2024-12-16 20:48:13] 192.168.2.80:0 - "POST /api/user-files/upload-file/ HTTP/1.1" 500  

The volume “-v ~/baserow_data:/baserow/data” does appear to be getting used by the container.

There must be something structurally wrong with the installation. Does anyone have a clue as to where we are going wrong?

-Thank you

I think the problem here might not be at the final destination (in that case you wouldn’t be able to upload multiple smaller files to fill those ~40 MB) but one step before where probably Django stores a temporary file before moving it to the final destination (small files would be kept in RAM).

What does df -h /tmp when run inside the container says?

This is from a clean Ubuntu 22.04 system with “-e BASEROW_FILE_UPLOAD_SIZE_LIMIT_MB=1048576” in case it matters:

# df -h /tmp
Filesystem      Size  Used Avail Use% Mounted on
overlay         234G   17G  205G   8% /
# 

The command was run after three unsuccessful upload attempts.

Thank you for your help with this.

Update: I just tried some more upload tests to home into the exact maximum file size and it’s not getting to 40MB anymore. It got to 20MB but sent up an error at 30MB. 25 MB failed as well and when I attempted 20 MB, again, it too failed.

I want to throw one comment out about the upload process in case it means anything to you. During a large upload I’ve noticed that the progress bar starts across the screen from left to right, halts part way, backs up, and seemingly tries again to upload the file. After one or two of these attempts it stops and presents the error message.

To my untrained eye, it appears to be retrying an upload “chunk” and fails. Does that agree with your understanding of how things work?

Thanks again for you assistance with this.