Hacker News new | ask | show | jobs
by henningpeters 3902 days ago
AWS S3 doesn't expose a flush()-like call in their API, hence what is the point of exposing something that the underlying service doesn't support?
1 comments

data on s3 is durable after a successful PUT (or a complete multipart upload), so their flush() is implied.
Fun fact: the S3 API actually makes no such claim.

http://docs.aws.amazon.com/AmazonS3/latest/API/RESTObjectPUT...

Nope. Let's try the developer guide.

http://docs.aws.amazon.com/AmazonS3/latest/dev/storage-class...

Nope again. Let's try the FAQ.

https://aws.amazon.com/s3/faqs/

They claim S3 is "designed for" 99.999999999% durability, but there's neither a guarantee nor a clear definition of when an object starts to be covered by one. While it's both intuitively obvious and conventional wisdom that an object is durable at the end of a PUT, as far as I've ever been able to tell Amazon doesn't come out and say so.

That's one of the problems with company-defined "standards" BTW. This kind of issue would surely have been noticed and discussed in any kind of open standards process. It's what makes those processes so tedious. De facto standards can be turned around a lot faster, but there's a necessary sacrifice in precision to go with that.

exactly, so why do you need a flush then?
I looked at the code some more and they do handle release(), so much of my point above was invalid. I expect riofs's streaming write performance to be comparable to goofys because we both use the same implementation strategy.