Milvus Message Queue Switch Failed — How Can I Roll Back? #52618
|
My Milvus version is 3.0. It currently uses Kafka as the message queue and a third-party object storage service. When I tried to switch the message queue from Kafka to Woodpecker, I encountered the following error: Apart from restoring from a backup, is there any way to roll back the change and avoid a prolonged service outage? |
Replies: 2 comments 3 replies
|
This error means your S3-compatible storage rejected a multipart upload where a non-final part was under 5MB. By S3 spec, only non-final parts must be ≥5MB — the last part may be any size. MinIO's SDK (used by both Woodpecker and Milvus) always sizes non-final parts at ≥16MB, so this upload is spec-legal and works fine on real AWS and MinIO. So this is a storage-compatibility issue with your third-party object storage, not a Milvus/Woodpecker bug: your provider enforces a stricter check than AWS (most likely rejecting a last part <5MB too). to confirm: manually upload a 10MB object in two parts (8MB + 2MB) via AWS CLI/mc and complete the multipart upload:
|
|
A few things about this error: It doesn't come from Woodpecker — Woodpecker never calls There is no way to roll back a switch in progress. The switch is driven by an Later on we may provide a birdwatcher tool that resets the checkpoint back to the For validating your storage: the 8MB + 2MB upload doesn't reproduce what Milvus sends, so passing it doesn't clear OBS yet. Milvus only ever produces one part below 5MB — multipart is used only for files larger than 10MB, every part except the last is exactly 10MB, and only the last part is the remainder. So the last part is the only thing that can trip a minimum-size check, and your test already shows a 2MB last part is accepted. What the OBS docs say is that a part must be within [100KB, 5GB] while the last part is [0, 5GB] — i.e. exempt — and that the size check happens at merge time (UploadPart), which is exactly where your error is thrown. Two cases worth uploading to check the implementation matches that:
If both succeed, part size isn't the reason and we need the failing object itself. Please export the full logs with |

This error means your S3-compatible storage rejected a multipart upload where a non-final part was under 5MB. By S3 spec, only non-final parts must be ≥5MB — the last part may be any size. MinIO's SDK (used by both Woodpecker and Milvus) always sizes non-final parts at ≥16MB, so this upload is spec-legal and works fine on real AWS and MinIO.
So this is a storage-compatibility issue with your third-party object storage, not a Milvus/Woodpecker bug: your provider enforces a stricter check than AWS (most likely rejecting a last part <5MB too).
to confirm: manually upload a 10MB object in two parts (8MB + 2MB) via AWS CLI/mc and complete the multipart upload: