[
https://issues.apache.org/jira/browse/CAMEL-26047?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Claus Ibsen resolved CAMEL-26047.
---------------------------------
Resolution: Fixed
Fixed via https://github.com/apache/camel/pull/28540
> camel-minio - the producer uploads a changed body with the stale
> CamelMinioContentLength of the object it was read from, and cuts or fails it
> ---------------------------------------------------------------------------------------------------------------------------------------------
>
> Key: CAMEL-26047
> URL: https://issues.apache.org/jira/browse/CAMEL-26047
> Project: Camel
> Issue Type: Bug
> Components: camel-minio
> Reporter: shashank
> Assignee: shashank
> Priority: Major
> Fix For: 4.24.0
>
>
> The minio consumer sets {{CamelMinioContentLength}} to the size of the object
> it read. {{MinioProducer.putObject}} uses that header as the upload length
> and takes the length of the body only when there is no header, also for a
> {{java.io.File}} body (main 9f839f4bcc9d). A route that reads an object,
> changes the body (unzip, convert, enrich) and stores it with a minio producer
> uploads with the old length. minio 9.0.3 {{PartReader}} reads exactly that
> many bytes: a longer body is stored cut to the old length with no error, and
> a shorter one fails with {{MinioException: unexpected EOF}}. This is the same
> problem as CAMEL-25743 in aws2-s3.
> *Fix*: as CAMEL-25743: the producer uploads with the length of the body when
> it is known without reading it ({{PayloadHelper.getLength}} of the body, then
> of its input stream), and uses the header (or the {{WrappedFile}} length)
> only for a stream whose length is not known. Upgrade guide (4.24) entry next
> to the aws2-s3 one. The test-only {{FakeS3Server}} of the module also answers
> a single part PUT.
> *Tests*: new {{MinioProducerStaleContentLengthTest}}, 4 tests: the real
> {{MinioClient}} uploads to the in-process fake S3 server and the test reads
> back the stored bytes.
> * {{bodyLongerThanAStaleContentLengthHeaderIsStoredWhole}} fails on main:
> {{the whole body must be stored, not the length of the header ==> expected:
> <a body made longer by the route> but was: <a body mad>}};
> * {{bodyShorterThanAStaleContentLengthHeaderIsStoredWithItsLength}} fails on
> main: {{a body shorter than the header must be stored ==> expected: <null>
> but was: <io.minio.errors.MinioException: unexpected EOF>}};
> * {{fileBodyIsStoredWithItsLength}} fails on main: {{expected: <the content
> of the file> but was: <the>}};
> * {{streamOfUnknownLengthUsesTheContentLengthHeader}} is a control that
> passes on main and with the fix.
> Unit tests of camel-minio with the fix: 20 run, 0 failures.
> *How it was found*: variant analysis of CAMEL-25743 (aws2-s3); kept back
> until that fix was merged.
> *Affected*: main, camel-4.23.x, camel-4.22.x and camel-4.18.x (same
> producer). Read, not run.
> _Filed with Claude Code on behalf of allthingssecurity._
--
This message was sent by Atlassian Jira
(v10.3.26#10030026)