Github user NicoK commented on the issue: https://github.com/apache/flink/pull/5624 Indeed, Presto-S3 does better in `com.facebook.presto.hive.PrestoS3FileSystem#create()`: ``` if ((!overwrite) && exists(path)) { throw new IOException("File already exists:" + path); } // file creation ``` But if `overwrite = false`, it will also check for existence first. Also, contrary to my initial analysis, the retries when retrieving the file status during the existence check do not cover non-existence. I can adapt the tests to only use `overwrite = true`, but actual code outside the tests makes use of both variants. It's therefore a good idea to make the distinction between `flink-s3-fs-hadoop` and `flink-s3-fs-presto` but only for the existence check, not for checking that a file/directory was deleted since > Amazon S3 offers eventual consistency for overwrite PUTS and DELETES in all regions. I adapted the code accordingly which effectively boiled down to removing some of the new eventual consistent existence checks in `PrestoS3FileSystemITCase`. Regarding the two implementations you provided: for doing the existence check, there should not be a difference between a single `fs.exists()` call vs. `fs.open()` in terms of consistency.
---