1
0
Эх сурвалжийг харах

[PLUGIN] don't set posix permission on filesystem that don't support it

Simon Willnauer 11 жил өмнө
parent
commit
a436da7cdb

+ 17 - 13
src/main/java/org/elasticsearch/plugins/PluginManager.java

@@ -47,6 +47,7 @@ import java.net.MalformedURLException;
 import java.net.URL;
 import java.nio.file.*;
 import java.nio.file.attribute.BasicFileAttributes;
+import java.nio.file.attribute.PosixFileAttributeView;
 import java.nio.file.attribute.PosixFileAttributes;
 import java.nio.file.attribute.PosixFilePermission;
 import java.util.*;
@@ -243,20 +244,23 @@ public class PluginManager {
                 IOUtils.rm(toLocation);
             }
             Files.move(binFile, toLocation, StandardCopyOption.ATOMIC_MOVE);
-            final Set<PosixFilePermission> perms = new HashSet<PosixFilePermission>();
-            perms.add(PosixFilePermission.OWNER_EXECUTE);
-            perms.add(PosixFilePermission.GROUP_EXECUTE);
-            perms.add(PosixFilePermission.OTHERS_EXECUTE);
-            Files.walkFileTree(toLocation, new SimpleFileVisitor<Path>() {
-                @Override
-                public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException {
-                    if (attrs.isRegularFile()) {
-
-                        Files.setPosixFilePermissions(file, perms);
+            if (Files.getFileStore(toLocation).supportsFileAttributeView(PosixFileAttributeView.class)) {
+                final Set<PosixFilePermission> perms = new HashSet<>();
+                perms.add(PosixFilePermission.OWNER_EXECUTE);
+                perms.add(PosixFilePermission.GROUP_EXECUTE);
+                perms.add(PosixFilePermission.OTHERS_EXECUTE);
+                Files.walkFileTree(toLocation, new SimpleFileVisitor<Path>() {
+                    @Override
+                    public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException {
+                        if (attrs.isRegularFile()) {
+                            Files.setPosixFilePermissions(file, perms);
+                        }
+                        return FileVisitResult.CONTINUE;
                     }
-                    return FileVisitResult.CONTINUE;
-                }
-            });
+                });
+            } else {
+                debug("Skipping posix permissions - filestore doesn't support posix permission");
+            }
             debug("Installed " + name + " into " + toLocation.toAbsolutePath());
             potentialSitePlugin = false;
         }