You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@samza.apache.org by pm...@apache.org on 2023/03/23 16:28:32 UTC
[samza] branch master updated: Only verify permissions for file owner after blob store restore. (#1659)
This is an automated email from the ASF dual-hosted git repository.
pmaheshwari pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/samza.git
The following commit(s) were added to refs/heads/master by this push:
new 03b187a6d Only verify permissions for file owner after blob store restore. (#1659)
03b187a6d is described below
commit 03b187a6de0e123568f3ce3af94c946e6380fc8d
Author: Prateek Maheshwari <pr...@utexas.edu>
AuthorDate: Thu Mar 23 09:28:24 2023 -0700
Only verify permissions for file owner after blob store restore. (#1659)
---
.../samza/storage/blobstore/util/DirDiffUtil.java | 21 ++++++++++++++++-----
1 file changed, 16 insertions(+), 5 deletions(-)
diff --git a/samza-core/src/main/java/org/apache/samza/storage/blobstore/util/DirDiffUtil.java b/samza-core/src/main/java/org/apache/samza/storage/blobstore/util/DirDiffUtil.java
index f09b56f8a..4313d56b4 100644
--- a/samza-core/src/main/java/org/apache/samza/storage/blobstore/util/DirDiffUtil.java
+++ b/samza-core/src/main/java/org/apache/samza/storage/blobstore/util/DirDiffUtil.java
@@ -26,6 +26,7 @@ import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.nio.file.attribute.PosixFileAttributes;
+import java.nio.file.attribute.PosixFilePermission;
import java.nio.file.attribute.PosixFilePermissions;
import java.util.ArrayList;
import java.util.Arrays;
@@ -159,17 +160,27 @@ public class DirDiffUtil {
throw new RuntimeException(String.format("Error reading attributes for file: %s", localFile.getAbsolutePath()));
}
+ Set<PosixFilePermission> remoteFilePermissions =
+ PosixFilePermissions.fromString(remoteFileMetadata.getPermissions());
+
// Don't compare file timestamps. The ctime of a local file just restored will be different than the
// remote file, and will cause the file to be uploaded again during the first commit after restore.
-
boolean areSameFiles =
localFileAttrs.size() == remoteFileMetadata.getSize() &&
localFileAttrs.group().getName().equals(remoteFileMetadata.getGroup()) &&
- localFileAttrs.owner().getName().equals(remoteFileMetadata.getOwner()) &&
- PosixFilePermissions.toString(localFileAttrs.permissions()).equals(remoteFileMetadata.getPermissions());
+ localFileAttrs.owner().getName().equals(remoteFileMetadata.getOwner());
+
+ // only verify permissions for file owner
+ areSameFiles = areSameFiles &&
+ localFileAttrs.permissions().contains(PosixFilePermission.OWNER_READ) ==
+ remoteFilePermissions.contains(PosixFilePermission.OWNER_READ) &&
+ localFileAttrs.permissions().contains(PosixFilePermission.OWNER_WRITE) ==
+ remoteFilePermissions.contains(PosixFilePermission.OWNER_WRITE) &&
+ localFileAttrs.permissions().contains(PosixFilePermission.OWNER_EXECUTE) ==
+ remoteFilePermissions.contains(PosixFilePermission.OWNER_EXECUTE);
if (!areSameFiles) {
- LOG.debug("Local file: {} and remote file: {} are not same. " +
+ LOG.warn("Local file: {} and remote file: {} are not same. " +
"Local file attributes: {}. Remote file attributes: {}.",
localFile.getAbsolutePath(), remoteFile.getFileName(),
fileAttributesToString(localFileAttrs), remoteFile.getFileMetadata().toString());
@@ -200,7 +211,7 @@ public class DirDiffUtil {
boolean areSameChecksum = localFileChecksum == remoteFile.getChecksum();
if (!areSameChecksum) {
- LOG.debug("Local file: {} and remote file: {} are not same. " +
+ LOG.warn("Local file: {} and remote file: {} are not same. " +
"Local checksum: {}. Remote checksum: {}",
localFile.getAbsolutePath(), remoteFile.getFileName(), localFileChecksum, remoteFile.getChecksum());
} else {