felipecrv commented on code in PR #40147:
URL: https://github.com/apache/arrow/pull/40147#discussion_r1513010171


##########
cpp/src/arrow/filesystem/s3fs.cc:
##########
@@ -2145,7 +2166,10 @@ class S3FileSystem::Impl : public 
std::enable_shared_from_this<S3FileSystem::Imp
           child_path_ss << bucket << kSep << child_key;
           child_key = child_path_ss.str();
           if (obj.GetSize() > 0 || !had_trailing_slash) {
-            // We found a real file
+            // We found a real file.
+            // XXX Ideally, for 0-sized files we would also check the 
Content-Type
+            // against kAwsDirectoryContentType, but ListObjectsV2 does not 
give
+            // that information.

Review Comment:
   For example:
   
   s3fs doesn't support `Move` yet I think, but if it were to support, the 
semantics of the path validations take the trailing `/` in `dest` to mean `src` 
should also be a directory. It's OK to pass `/`-less to `Move` that refer to 
directories, but it's not OK to pass paths with trailing slashes that refer to 
files.
   
   This prevents accidental overrides of files by `Move(src, dest)` because 
directories can only be overriden if they are empty.



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to