-
-
Notifications
You must be signed in to change notification settings - Fork 908
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
Add config to avoid checking MD5 on get and put #928
base: master
Are you sure you want to change the base?
Conversation
f8269e5
to
38ba00c
Compare
Thanks for the PR. Let's remove the relation to no-check-md5, and create a new config key like: And in your case, we can use a value like: With that, in the future, we could have something like: |
Disabling ETag is really the only sane choice. Some background, S3Proxy builds on top of Apache jclouds, a cross-cloud library, and jclouds returns a String from |
Most providers implementing the Amazon s3 protocol, are respecting the aws s3 behavior. I say "md5", but we can say "md5s3". Even if they allows themselves to change in the future, the algo is pretty deterministic and never changed so far. There is even some way to check the md5 for multipart files if you have a "fixed" block size. Anyway, why the etag is useful?
|
HTTPS should provide sufficient protection against corruption. The Azure ETag is opaque and includes some kind of timestamp it seems. The other two providers do not actually return an ETag header and the S3Proxy/jclouds behavior is bogus and likely should not return any header. Thus there is no work to do here except adding an ignore flag as this pull request does. |
In my opinion, in such a case, https is not necessarily sufficient.
Regarding the patch, in my opinion it is a new config just to deal with specific lines that conflict with servers that have a different behavior. But nothing that would be really clear for an user or future proof. So, that's why i think that adding something more generic stating what is the supposed meaning of the ETag for a specific service could fix your issue and even have an added value. |
Checking ETag is not too useful given that most interesting uploads use multipart which also does not have a meaningful value. Most S3 tools which check ETag have some way to disable it, for example, aws/aws-sdk-java#560. If you will not accept this pull request as-is, please close it. |
38ba00c
to
0f7286d
Compare
Overload existing --no-check-md5. Object stores like S3Proxy cannot return an MD5 ETag using some providers: * Atmos returns nothing * Azure returns an opaque ETag * B2 returns a SHA1
Overload existing
--no-check-md5
. Object stores like S3Proxy cannotreturn an MD5 ETag using some providers: