-
Notifications
You must be signed in to change notification settings - Fork 460
Description
When one uses a load balancer with health checks to access a Minio cluster, downtimes of single nodes should not affect users too much or at the very least provide error reports to them. Currently the web client / console does not do that: Failed downloads are marked as a successful download if nodes fail during the transfer.
Expected Behavior
Minimum: The download fails and reports an error message.
Best: The web client retries the failed parts for a documented amount of time and fails otherwise.
Current Behavior
The web client marks the download as successful and stores the smaller, unfinished file without an error. Users are not informed about the file corruption.
I downloaded the same file two times:
The first download succeded, but during the second download I stopped a cluster node that was providing parts, which did not result in an error and provided a cut-off / corrupted file:
% lsd -l ~/Downloads/output_file*
.rw-rw-r-- hashworks hashworks 10 GB Mon Aug 21 22:00:51 2023 /home/hashworks/Downloads/output_file
.rw-rw-r-- hashworks hashworks 1.3 GB Mon Aug 21 22:10:42 2023 /home/hashworks/Downloads/output_file(1)
Steps to Reproduce
- Set up a small Minio cluster, f.e. three nodes, access it using a load balancer with health checks
- Upload a larger file
- Try to download the file using the web client / console
- Verify that a specific node is used to provide parts of the file (f.e. using nethogs)
- Kill minio on said node
- Note the successful download, but the insufficient file size
Context
Other tools handle this better:
mc
reports an error and fails the download (EOF
)rclone
retries the failed parts and finishes the download using the degraded cluster
Your Environment
- MinIO version used (
minio --version
):RELEASE.2023-08-09T23-30-22Z (commit-id=eb55034dfe5ef82449796c83e3126b245c5aee05)
- Server setup and configuration: 3x(Minio + nginx reverse proxy) + Hetzner Load Balancer
- Operating System and version (
uname -a
):Linux test1.example.net 6.1.0-11-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.38-4 (2023-08-08) x86_64 GNU/Linux
- Web browser:
Firefox 116.0.3