12934: crunch-run creates .keep file in empty directories
[arvados.git] / services / crunch-run / crunchrun.go
index e5e0ea001669f21219c8f6d01717f7771b885f59..59fdd007e2b636f3b0be975a4add3d610980d657 100644 (file)
@@ -1051,6 +1051,21 @@ func (runner *ContainerRunner) UploadOutputFile(
        followed int) (manifestText string, err error) {
 
        if info.Mode().IsDir() {
+               // if empty, need to create a .keep file
+               dir, direrr := os.Open(path)
+               if (direrr != nil) {
+                       return "", direrr
+               }
+               defer dir.Close()
+               names, eof := dir.Readdirnames(1)
+               if len(names) == 0 && eof == io.EOF {
+                       keep, keeperr := os.Create(path+"/.keep")
+                       if keeperr != nil {
+                               return "", keeperr
+                       }
+                       keep.Close()
+               }
+
                return
        }