[
https://issues.apache.org/jira/browse/HADOOP-19795?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=18055101#comment-18055101
]
ASF GitHub Bot commented on HADOOP-19795:
-----------------------------------------
anmolanmol1234 commented on code in PR #8212:
URL: https://github.com/apache/hadoop/pull/8212#discussion_r2740911106
##########
hadoop-tools/hadoop-azure/src/main/java/org/apache/hadoop/fs/azurebfs/AzureBlobFileSystemStore.java:
##########
@@ -890,66 +905,79 @@ public AbfsInputStream openFileForRead(Path path,
FileStatus fileStatus = parameters.map(OpenFileParameters::getStatus)
.orElse(null);
String relativePath = getRelativePath(path);
- String resourceType, eTag;
- long contentLength;
+ String resourceType, eTag = EMPTY_STRING;
+ long contentLength = 0;
ContextEncryptionAdapter contextEncryptionAdapter =
NoContextEncryptionAdapter.getInstance();
/*
* GetPathStatus API has to be called in case of:
- * 1. fileStatus is null or not an object of VersionedFileStatus: as
eTag
- * would not be there in the fileStatus object.
+ * 1. restrictGpsOnOpenFile config is disabled AND fileStatus is null
or not
+ * an object of VersionedFileStatus: as eTag would not be there in
the fileStatus object.
* 2. fileStatus is an object of VersionedFileStatus and the object
doesn't
* have encryptionContext field when client's encryptionType is
* ENCRYPTION_CONTEXT.
*/
if ((fileStatus instanceof VersionedFileStatus) && (
- getClient().getEncryptionType() != EncryptionType.ENCRYPTION_CONTEXT
- || ((VersionedFileStatus) fileStatus).getEncryptionContext()
- != null)) {
+ getClient().getEncryptionType() !=
EncryptionType.ENCRYPTION_CONTEXT
+ || ((VersionedFileStatus)
fileStatus).getEncryptionContext()
+ != null)) {
path = path.makeQualified(this.uri, path);
Preconditions.checkArgument(fileStatus.getPath().equals(path),
- String.format(
- "Filestatus path [%s] does not match with given path [%s]",
- fileStatus.getPath(), path));
+ String.format(
+ "Filestatus path [%s] does not match with given path
[%s]",
+ fileStatus.getPath(), path));
resourceType = fileStatus.isFile() ? FILE : DIRECTORY;
contentLength = fileStatus.getLen();
eTag = ((VersionedFileStatus) fileStatus).getVersion();
final String encryptionContext
- = ((VersionedFileStatus) fileStatus).getEncryptionContext();
+ = ((VersionedFileStatus) fileStatus).getEncryptionContext();
if (getClient().getEncryptionType() ==
EncryptionType.ENCRYPTION_CONTEXT) {
contextEncryptionAdapter = new ContextProviderEncryptionAdapter(
- getClient().getEncryptionContextProvider(),
getRelativePath(path),
- encryptionContext.getBytes(StandardCharsets.UTF_8));
+ getClient().getEncryptionContextProvider(),
getRelativePath(path),
+ encryptionContext.getBytes(StandardCharsets.UTF_8));
}
- } else {
+ if (parseIsDirectory(resourceType)) {
Review Comment:
Can be moved to common part as is getting checked in both the cases
> ABFS: GetPathStatus Optimization on OpenFileForRead
> ---------------------------------------------------
>
> Key: HADOOP-19795
> URL: https://issues.apache.org/jira/browse/HADOOP-19795
> Project: Hadoop Common
> Issue Type: Task
> Components: fs/azure
> Affects Versions: 3.4.1, 3.4.2
> Reporter: Manika Joshi
> Assignee: Manika Joshi
> Priority: Major
> Labels: pull-request-available
>
> We do a getPathStatus call during file open for read. This call is primarily
> used to fetch the file’s metadata properties before the actual read begins.
> We are now introducing an optional, config-driven read flow that avoids the
> getPathStatus call during open and instead derives required metadata from the
> read response itself.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]