Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

HADOOP-19232: [ABFS][FNSOverBlob] Implementing Ingress Support with various Fallback Handling #7272

Open
wants to merge 14 commits into
base: trunk
Choose a base branch
from

Conversation

anmolanmol1234
Copy link
Contributor

@anmolanmol1234 anmolanmol1234 commented Jan 6, 2025

Description of PR :

This Pr is in correlation to the series of work done under Parent Jira: [HADOOP-19179]

(https://issues.apache.org/jira/browse/HADOOP-19179)
Jira for this Patch: https://issues.apache.org/jira/browse/HADOOP-19232

Scope of this task is to refactor the AbfsOutputStream class to handle the ingress for DFS and Blob endpoint effectively.

Production code changes :

The AbfsOutputStream class is crucial for handling the data being written to Azure Storage. Its primary responsibilities include:

  • Buffering: Temporarily holding data in memory before it is uploaded.
  • Streaming: Efficiently streaming data to Azure Storage.
  • Committing: Ensuring that buffered data is correctly uploaded and committed to Azure Storage.

New Additions

The new additions introduce a more modular and flexible approach to managing data ingress (data being written to storage), catering to both Azure Data Lake Storage (ADLS) and Azure Blob Storage.

AzureIngressHandler

The AzureIngressHandler is a new parent class designed to encapsulate common logic for data ingress operations. It simplifies the process of writing data to Azure Storage by providing a unified interface. This class has two specialized child classes:

  1. AzureDfsIngressHandler:

    • Manages data ingress specifically for Azure Data Lake Storage (DFS).
    • Handles operations like creating, appending, and flushing data blocks for DFS.
  2. AzureBlobIngressHandler:

    • Manages data ingress specifically for Azure Blob Storage (BLOB).
    • Handles operations like creating, appending, and flushing data blocks for Blob Storage, while ensuring that each block has a unique blockId.

AbfsBlock and AbfsBlobBlock

Data is managed in discrete blocks to improve efficiency and manageability.

  1. AbfsBlock:

    • A basic structure for buffering data.
    • Used as a common block type for both DFS and Blob Storage.
  2. AbfsBlobBlock:

    • A subclass of AbfsBlock tailored for Blob Storage.
    • Requires a unique blockId for each block, which is necessary for the Blob Storage API.

Block Managers

To manage these data blocks, new manager classes have been introduced. These classes handle the lifecycle of blocks, including creation, appending, and flushing.

  1. AzureBlockManager:

    • A parent class for managing the lifecycle of data blocks.
    • Provides common functionality for block management.
  2. AzureDFSBlockManager:

    • Manages the lifecycle of AbfsBlock instances for DFS.
    • Handles the specifics of appending and flushing blocks in DFS.
  3. AzureBlobBlockManager:

    • Manages the lifecycle of AbfsBlobBlock instances for Blob Storage.
    • Ensures each block has a unique blockId.
    • Handles the specifics of appending and flushing blocks in Blob Storage.

Integration with AbfsOutputStream

The AbfsOutputStream class has been updated to incorporate the new ingress flow logic, enhancing its ability to handle data writes to both DFS and Blob Storage. Here’s how it integrates:

  1. Configuration Selection:

    • The AbfsOutputStream reads the configuration parameter fs.azure.ingress.service.type to determine whether the user has configured the system to use BLOB or DFS for data ingress.
  2. Handler Initialization:

    • Based on the configuration, AbfsOutputStream initializes the appropriate handler (AzureBlobIngressHandler or AzureDfsIngressHandler).
  3. Buffering Data:

    • As data is written to AbfsOutputStream, it is buffered into blocks (AbfsBlock for DFS or AbfsBlobBlock for Blob Storage).
  4. Managing Blocks:

    • The corresponding block manager (AzureDFSBlockManager or AzureBlobBlockManager) manages the lifecycle of these blocks, ensuring that data is correctly created, appended, and flushed.
  5. Block Id Management (Blob Specific):

    • For Blob Storage, AzureBlobBlockManager ensures that each block has a unique blockId, adhering to the requirements of the Blob Storage API.

Detailed Flow

  1. Creating Data Blocks:

    • When data is written to AbfsOutputStream, it is divided into blocks (AbfsBlock for DFS or AbfsBlobBlock for Blob Storage).
  2. Appending Data:

    • These blocks are appended to the Azure storage system via the appropriate handler (AzureBlobIngressHandler or AzureDfsIngressHandler).
  3. Flushing Data:

    • Once all data has been buffered, the blocks are flushed to ensure all buffered data is committed to the storage system.
  4. Lifecycle Management:

    • The block managers (AzureDFSBlockManager and AzureBlobBlockManager) oversee the lifecycle of blocks, handling retries, errors, and ensuring data integrity.

image

Test Code Changes:

  1. Existing tests are modified to work with new abstracted design.
  2. Test Suite was run on DFS Endpoint to make sure the original driver works seamlessly and undisturbed.
  3. Adding some new tests around the new code

@anmolanmol1234 anmolanmol1234 changed the title Ingress changes with fallback HADOOP-19232: [ABFS][FNSOverBlob] Implementing Ingress Support with various Fallback Handling Jan 6, 2025
@hadoop-yetus

This comment was marked as outdated.

@anmolanmol1234 anmolanmol1234 marked this pull request as draft January 6, 2025 08:45
Copy link
Contributor

@anujmodi2021 anujmodi2021 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Added some thoughts around production code.
Will do another round of review for test code,.


/**
* Creates or retrieves an existing Azure ingress handler based on the service type and provided parameters.
* <p>
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

seems like xml tag is not closed

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

which tag is not closed ?

Copy link
Contributor

@anujmodi2021 anujmodi2021 Jan 7, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

<p> tag in comments

@hadoop-yetus

This comment was marked as outdated.

@hadoop-yetus

This comment was marked as outdated.

@hadoop-yetus

This comment was marked as outdated.

@hadoop-yetus

This comment was marked as outdated.

@hadoop-yetus

This comment was marked as outdated.

Copy link
Contributor

@anujmodi2021 anujmodi2021 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Some Suggestions for test code improvement.

* @param errorMessage the error message
* @param innerException the inner exception
*/
public InvalidIngressServiceException(final int statusCode,
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can we also try to include erver request Id for the failed request here??

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

That is already included in the exception message

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

May be I am missing something here, but I can see there are 2 constructors for base exception and the one that excepts AbfsHttpOperation as a separate parameter calls the formatMessage() which adds the req Id to exception message.

Refering to:

private static String formatMessage(final AbfsHttpOperation abfsHttpOperation) {

Copy link
Contributor Author

@anmolanmol1234 anmolanmol1234 Jan 16, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The inner exception that gets caught has the request Id in the message already

fs.create(filePath);
FSDataOutputStream outputStream = fs.append(filePath);
outputStream.write(10);
final AzureBlobFileSystem fs1
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

use try() to autoclose here and every where else applicable

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

taken

* Verify that parallel write with same offset from different output streams will not throw exception.
**/
@Test
public void testParallelWriteSameOffsetDifferentOutputStreams()
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

For this and next 2 tests, there is a lot of code redundancy, not sure if possible but would be good to refactor common code into a parameterised method.

Copy link
Contributor Author

@anmolanmol1234 anmolanmol1234 Jan 10, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Moved the common code into a common method

out::hsync
);
}
}
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

EOF Error

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

taken


// Create a spy of AzureBlobFileSystemStore
AzureBlobFileSystemStore store = Mockito.spy(fs.getAbfsStore());
Assume.assumeTrue(store.getClient() instanceof AbfsBlobClient);
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We can use base class method assumeBlobServiceType() here and other places.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

taken

Copy link
Contributor

@anujmodi2021 anujmodi2021 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pending Test Code Review

});
if (spiedClient instanceof AbfsDfsClient) {
intercept(FileNotFoundException.class, os::close);
} else {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What is the exact difference in behavior between DFS and Blob here?
Can we assert on status code as well??

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

DFS throws FileNotFoundException while Blob throws IOException

@@ -61,6 +65,12 @@ public ITestAbfsHttpClientRequestExecutor() throws Exception {
public void testExpect100ContinueHandling() throws Exception {
AzureBlobFileSystem fs = getFileSystem();
Path path = new Path("/testExpect100ContinueHandling");
if (isAppendBlobEnabled()) {
Assume.assumeFalse("Not valid for AppendBlob with blob endpoint",
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We can check using getAbfsServiceType()

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Since service type and ingress type can be different this might not work, we can add a getIngressServiceType() method in base class ?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes that would be better and cleaner code

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

taken

@@ -1140,7 +1387,7 @@ public boolean checkIsDir(AbfsHttpOperation result) {
public boolean checkUserError(int responseStatusCode) {
return (responseStatusCode >= HttpURLConnection.HTTP_BAD_REQUEST
&& responseStatusCode < HttpURLConnection.HTTP_INTERNAL_ERROR
&& responseStatusCode != HttpURLConnection.HTTP_CONFLICT);
&& responseStatusCode != HTTP_CONFLICT);
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We can do same changes for above two codes (HTTP_INTERNAL_ERROR, HTTP_BAD_REQUEST) as well.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

reverted this change

this.outputStream = outputStream;
this.offset = offset;
DataBlocks.BlockFactory blockFactory = outputStream.getBlockManager().getBlockFactory();
long blockCount = outputStream.getBlockManager().getBlockCount();
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Since we are using these variables (blockCount, blockSize) only at one place, it would be better to call it inplace.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

better to store them as variables for better readability

+ "exists and its resource type is invalid for this operation.";
public static final String BLOB_OPERATION_NOT_SUPPORTED = "Blob operation is not supported.";
public static final String INVALID_APPEND_OPERATION = "The resource was created or modified by the Azure Blob Service API "
+ "and cannot be appended to by the Azure Data Lake Storage Service API";
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Typo error: and cannot be appended by the Azure Data Lake Storage Service API.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is how the error message comes from the backend

boolean hasActiveBlockDataToUpload() {
AzureBlockManager blockManager = getBlockManager();
AbfsBlock activeBlock = blockManager.getActiveBlock();
return blockManager.hasActiveBlock() && activeBlock.hasData();
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can blockManager and activeBlock be null in any of the case?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

hasActiveBlock checks for null for activeBlock and blockManager can not be null

if (hasActiveBlock()) {
clearActiveBlock();
}
getBlockManager().clearActiveBlock();
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should we not have check on hasActiveBlock before clearActiveBlock?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

taken

@VisibleForTesting
AbfsClient getClient() {
synchronized AbfsClient getClient() {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What is the need of this change?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

was reported as a spot bug hence I added it but dont see the need for it hence reverting

AbfsBlobClient blobClient = abfsOutputStream.getClientHandler().getBlobClient();
final AbfsRestOperation op = blobClient
.getBlockList(abfsOutputStream.getPath(), tracingContext);
committedBlockIdList = op.getResult().getBlockIdList();
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

A check on op and op.getResult before calling getBlockIdList is needed.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

taken

BlobAppendRequestParameters blobParams = new BlobAppendRequestParameters(blockToUpload.getBlockId(), getETag());
reqParams.setBlobParams(blobParams);
AbfsRestOperation op;
long threadId = Thread.currentThread().getId();
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can we get Thread.currentThread().getId() inplace as we are only using it once?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

taken

TracingContext tracingContext) throws IOException {
TracingContext tracingContextAppend = new TracingContext(tracingContext);
long threadId = Thread.currentThread().getId();
String threadIdStr = String.valueOf(threadId);
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Same as above, if threadIf is getting used at only one place, can we keep it inplace?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

taken

IOUtils.closeStreams(uploadData, activeBlock);
}
}

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please remove 1 extra empty line.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

taken

AbfsRestOperation op;
TracingContext tracingContextAppend = new TracingContext(tracingContext);
long threadId = Thread.currentThread().getId();
String threadIdStr = String.valueOf(threadId);
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Same as above.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

taken

throws IOException {
TracingContext tracingContextFlush = new TracingContext(tracingContext);
if (tracingContextFlush.getIngressHandler().equals(EMPTY_STRING)) {
tracingContextFlush.setIngressHandler("DFlush");
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can we create constant for DFlush and use it whereever required?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

taken

// Perform the upload within a performance tracking context.
try (AbfsPerfInfo perfInfo = new AbfsPerfInfo(
dfsClient.getAbfsPerfTracker(),
"writeCurrentBufferToService", "append")) {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

can we create constant for append?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

already present, added it here

}
try {
TracingContext tracingContextFlush = new TracingContext(tracingContext);
tracingContextFlush.setIngressHandler("FBFlush");
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Same as above, constant for FBFlush

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

taken

// Perform the upload within a performance tracking context.
try (AbfsPerfInfo perfInfo = new AbfsPerfInfo(
getClient().getAbfsPerfTracker(),
"writeCurrentBufferToService", "append")) {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Same as above, constant for append.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

taken

@hadoop-yetus

This comment was marked as outdated.

@hadoop-yetus

This comment was marked as outdated.

@hadoop-yetus

This comment was marked as outdated.

@anmolanmol1234 anmolanmol1234 marked this pull request as ready for review January 13, 2025 05:07
@hadoop-yetus
Copy link

🎊 +1 overall

Vote Subsystem Runtime Logfile Comment
+0 🆗 reexec 6m 54s Docker mode activated.
_ Prechecks _
+1 💚 dupname 0m 0s No case conflicting files found.
+0 🆗 codespell 0m 1s codespell was not available.
+0 🆗 detsecrets 0m 1s detect-secrets was not available.
+0 🆗 markdownlint 0m 1s markdownlint was not available.
+1 💚 @author 0m 0s The patch does not contain any @author tags.
+1 💚 test4tests 0m 0s The patch appears to include 32 new or modified test files.
_ trunk Compile Tests _
+1 💚 mvninstall 22m 25s trunk passed
+1 💚 compile 0m 23s trunk passed with JDK Ubuntu-11.0.25+9-post-Ubuntu-1ubuntu120.04
+1 💚 compile 0m 20s trunk passed with JDK Private Build-1.8.0_432-8u432-gaus1-0ubuntu220.04-ga
+1 💚 checkstyle 0m 22s trunk passed
+1 💚 mvnsite 0m 27s trunk passed
+1 💚 javadoc 0m 28s trunk passed with JDK Ubuntu-11.0.25+9-post-Ubuntu-1ubuntu120.04
+1 💚 javadoc 0m 22s trunk passed with JDK Private Build-1.8.0_432-8u432-gaus1-0ubuntu220.04-ga
+1 💚 spotbugs 0m 43s trunk passed
+1 💚 shadedclient 19m 51s branch has no errors when building and testing our client artifacts.
-0 ⚠️ patch 20m 3s Used diff version of patch file. Binary files and potentially other changes not applied. Please rebase and squash commits if necessary.
_ Patch Compile Tests _
+1 💚 mvninstall 0m 20s the patch passed
+1 💚 compile 0m 19s the patch passed with JDK Ubuntu-11.0.25+9-post-Ubuntu-1ubuntu120.04
+1 💚 javac 0m 19s the patch passed
+1 💚 compile 0m 18s the patch passed with JDK Private Build-1.8.0_432-8u432-gaus1-0ubuntu220.04-ga
+1 💚 javac 0m 18s the patch passed
+1 💚 blanks 0m 0s The patch has no blanks issues.
-0 ⚠️ checkstyle 0m 14s /results-checkstyle-hadoop-tools_hadoop-azure.txt hadoop-tools/hadoop-azure: The patch generated 12 new + 19 unchanged - 1 fixed = 31 total (was 20)
+1 💚 mvnsite 0m 20s the patch passed
+1 💚 javadoc 0m 17s the patch passed with JDK Ubuntu-11.0.25+9-post-Ubuntu-1ubuntu120.04
+1 💚 javadoc 0m 17s the patch passed with JDK Private Build-1.8.0_432-8u432-gaus1-0ubuntu220.04-ga
+1 💚 spotbugs 0m 43s the patch passed
+1 💚 shadedclient 19m 30s patch has no errors when building and testing our client artifacts.
_ Other Tests _
+1 💚 unit 2m 0s hadoop-azure in the patch passed.
+1 💚 asflicense 0m 24s The patch does not generate ASF License warnings.
77m 46s
Subsystem Report/Notes
Docker ClientAPI=1.47 ServerAPI=1.47 base: https://ci-hadoop.apache.org/job/hadoop-multibranch/job/PR-7272/10/artifact/out/Dockerfile
GITHUB PR #7272
JIRA Issue HADOOP-19232
Optional Tests dupname asflicense compile javac javadoc mvninstall mvnsite unit shadedclient spotbugs checkstyle codespell detsecrets markdownlint
uname Linux e7c37c718562 5.15.0-124-generic #134-Ubuntu SMP Fri Sep 27 20:20:17 UTC 2024 x86_64 x86_64 x86_64 GNU/Linux
Build tool maven
Personality dev-support/bin/hadoop.sh
git revision trunk / b9f2f7b
Default Java Private Build-1.8.0_432-8u432-gaus1-0ubuntu220.04-ga
Multi-JDK versions /usr/lib/jvm/java-11-openjdk-amd64:Ubuntu-11.0.25+9-post-Ubuntu-1ubuntu120.04 /usr/lib/jvm/java-8-openjdk-amd64:Private Build-1.8.0_432-8u432-gaus1-0ubuntu220.04-ga
Test Results https://ci-hadoop.apache.org/job/hadoop-multibranch/job/PR-7272/10/testReport/
Max. process+thread count 736 (vs. ulimit of 5500)
modules C: hadoop-tools/hadoop-azure U: hadoop-tools/hadoop-azure
Console output https://ci-hadoop.apache.org/job/hadoop-multibranch/job/PR-7272/10/console
versions git=2.25.1 maven=3.6.3 spotbugs=4.2.2
Powered by Apache Yetus 0.14.0 https://yetus.apache.org

This message was automatically generated.

@hadoop-yetus
Copy link

🎊 +1 overall

Vote Subsystem Runtime Logfile Comment
+0 🆗 reexec 0m 21s Docker mode activated.
_ Prechecks _
+1 💚 dupname 0m 1s No case conflicting files found.
+0 🆗 codespell 0m 0s codespell was not available.
+0 🆗 detsecrets 0m 0s detect-secrets was not available.
+0 🆗 markdownlint 0m 0s markdownlint was not available.
+1 💚 @author 0m 0s The patch does not contain any @author tags.
+1 💚 test4tests 0m 0s The patch appears to include 32 new or modified test files.
_ trunk Compile Tests _
+1 💚 mvninstall 21m 51s trunk passed
+1 💚 compile 0m 24s trunk passed with JDK Ubuntu-11.0.25+9-post-Ubuntu-1ubuntu120.04
+1 💚 compile 0m 23s trunk passed with JDK Private Build-1.8.0_432-8u432-gaus1-0ubuntu220.04-ga
+1 💚 checkstyle 0m 21s trunk passed
+1 💚 mvnsite 0m 24s trunk passed
+1 💚 javadoc 0m 27s trunk passed with JDK Ubuntu-11.0.25+9-post-Ubuntu-1ubuntu120.04
+1 💚 javadoc 0m 20s trunk passed with JDK Private Build-1.8.0_432-8u432-gaus1-0ubuntu220.04-ga
+1 💚 spotbugs 0m 43s trunk passed
+1 💚 shadedclient 19m 19s branch has no errors when building and testing our client artifacts.
-0 ⚠️ patch 19m 31s Used diff version of patch file. Binary files and potentially other changes not applied. Please rebase and squash commits if necessary.
_ Patch Compile Tests _
+1 💚 mvninstall 0m 19s the patch passed
+1 💚 compile 0m 19s the patch passed with JDK Ubuntu-11.0.25+9-post-Ubuntu-1ubuntu120.04
+1 💚 javac 0m 19s the patch passed
+1 💚 compile 0m 17s the patch passed with JDK Private Build-1.8.0_432-8u432-gaus1-0ubuntu220.04-ga
+1 💚 javac 0m 17s the patch passed
+1 💚 blanks 0m 0s The patch has no blanks issues.
-0 ⚠️ checkstyle 0m 13s /results-checkstyle-hadoop-tools_hadoop-azure.txt hadoop-tools/hadoop-azure: The patch generated 12 new + 22 unchanged - 1 fixed = 34 total (was 23)
+1 💚 mvnsite 0m 19s the patch passed
+1 💚 javadoc 0m 17s the patch passed with JDK Ubuntu-11.0.25+9-post-Ubuntu-1ubuntu120.04
+1 💚 javadoc 0m 16s the patch passed with JDK Private Build-1.8.0_432-8u432-gaus1-0ubuntu220.04-ga
+1 💚 spotbugs 0m 45s the patch passed
+1 💚 shadedclient 19m 26s patch has no errors when building and testing our client artifacts.
_ Other Tests _
+1 💚 unit 1m 59s hadoop-azure in the patch passed.
+1 💚 asflicense 0m 25s The patch does not generate ASF License warnings.
69m 54s
Subsystem Report/Notes
Docker ClientAPI=1.47 ServerAPI=1.47 base: https://ci-hadoop.apache.org/job/hadoop-multibranch/job/PR-7272/11/artifact/out/Dockerfile
GITHUB PR #7272
JIRA Issue HADOOP-19232
Optional Tests dupname asflicense compile javac javadoc mvninstall mvnsite unit shadedclient spotbugs checkstyle codespell detsecrets markdownlint
uname Linux 1f388635e774 5.15.0-124-generic #134-Ubuntu SMP Fri Sep 27 20:20:17 UTC 2024 x86_64 x86_64 x86_64 GNU/Linux
Build tool maven
Personality dev-support/bin/hadoop.sh
git revision trunk / 0d2c693
Default Java Private Build-1.8.0_432-8u432-gaus1-0ubuntu220.04-ga
Multi-JDK versions /usr/lib/jvm/java-11-openjdk-amd64:Ubuntu-11.0.25+9-post-Ubuntu-1ubuntu120.04 /usr/lib/jvm/java-8-openjdk-amd64:Private Build-1.8.0_432-8u432-gaus1-0ubuntu220.04-ga
Test Results https://ci-hadoop.apache.org/job/hadoop-multibranch/job/PR-7272/11/testReport/
Max. process+thread count 555 (vs. ulimit of 5500)
modules C: hadoop-tools/hadoop-azure U: hadoop-tools/hadoop-azure
Console output https://ci-hadoop.apache.org/job/hadoop-multibranch/job/PR-7272/11/console
versions git=2.25.1 maven=3.6.3 spotbugs=4.2.2
Powered by Apache Yetus 0.14.0 https://yetus.apache.org

This message was automatically generated.

Copy link
Contributor

@anujmodi2021 anujmodi2021 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Reviewed Latest Iteration

@@ -234,6 +236,27 @@ public void initialize(URI uri, Configuration configuration)
throw new InvalidConfigurationValueException(FS_AZURE_ACCOUNT_IS_HNS_ENABLED, ex);
}

/**
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This should be a blocked comment instead of javadoc to avoid dangling javadoc issues.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

taken

@@ -234,6 +236,27 @@ public void initialize(URI uri, Configuration configuration)
throw new InvalidConfigurationValueException(FS_AZURE_ACCOUNT_IS_HNS_ENABLED, ex);
}

/**
* Validates if the FixedSASTokenProvider is configured for non-HNS accounts.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I feel like the comment here should be re-phrased. Its sounds like only FixedSasTokenProvider can be used with FNS. It should clarify that if Auth Type is SAS then user can only configure a fixed SAS Token and SASTokenProvider should not be configured at all otherwise Fixed SAS Token won't be used.
Refer to

public SASTokenProvider getSASTokenProvider() throws AzureBlobFileSystemException {

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

taken

* @throws InvalidConfigurationValueException if the namespace is not enabled and the FixedSASTokenProvider is not configured.
*/
try {
if (!getIsNamespaceEnabled(new TracingContext(initFSTracingContext))
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Better use tryGetIsNamespaceEnabled() here with proper exception handling.
Refer to:

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

taken

try {
if (!getIsNamespaceEnabled(new TracingContext(initFSTracingContext))
&& !abfsConfiguration.isFixedSASTokenProviderConfigured()) {
close();
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No need of close() here. FileSystem creation happening after all the checks now.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

taken

throw new InvalidConfigurationValueException(
FS_AZURE_SAS_TOKEN_PROVIDER_TYPE, UNAUTHORIZED_SAS);
}
} catch (AzureBlobFileSystemException ex) {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We need better exception handling here.
We should first catch SASTokenProviderException and throw InvalidConfigurationValueException() with original exception included as it will tell why getSASTokenProvder() failed.

Then we should catch the AzureBlobFileSystemException that can be thrown while determining account type.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

taken

/**
* Exception message on filesystem init if token-provider-auth-type configs are provided
*/
public static final String UNAUTHORIZED_SAS =
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can be moved to AbfsErrors.java class

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Taken

* @param errorMessage the error message
* @param innerException the inner exception
*/
public InvalidIngressServiceException(final int statusCode,
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

May be I am missing something here, but I can see there are 2 constructors for base exception and the one that excepts AbfsHttpOperation as a separate parameter calls the formatMessage() which adds the req Id to exception message.

Refering to:

private static String formatMessage(final AbfsHttpOperation abfsHttpOperation) {

op = client.getPathStatus(fileName, true, testTracingContext, null);
return AzureBlobFileSystemStore.extractEtagHeader(op.getResult());
}
}
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

EOF Error

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

taken

@@ -370,4 +397,4 @@ public void testAcquireRetry() throws Exception {
tracingContext);
});
}
}
}
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

EOF Error

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

taken

@hadoop-yetus
Copy link

💔 -1 overall

Vote Subsystem Runtime Logfile Comment
+0 🆗 reexec 21m 10s Docker mode activated.
_ Prechecks _
+1 💚 dupname 0m 1s No case conflicting files found.
+0 🆗 codespell 0m 1s codespell was not available.
+0 🆗 detsecrets 0m 1s detect-secrets was not available.
+0 🆗 markdownlint 0m 1s markdownlint was not available.
+1 💚 @author 0m 0s The patch does not contain any @author tags.
+1 💚 test4tests 0m 0s The patch appears to include 32 new or modified test files.
_ trunk Compile Tests _
+1 💚 mvninstall 35m 20s trunk passed
+1 💚 compile 0m 38s trunk passed with JDK Ubuntu-11.0.25+9-post-Ubuntu-1ubuntu120.04
+1 💚 compile 0m 35s trunk passed with JDK Private Build-1.8.0_432-8u432-gaus1-0ubuntu220.04-ga
+1 💚 checkstyle 0m 32s trunk passed
+1 💚 mvnsite 0m 40s trunk passed
+1 💚 javadoc 0m 40s trunk passed with JDK Ubuntu-11.0.25+9-post-Ubuntu-1ubuntu120.04
+1 💚 javadoc 0m 33s trunk passed with JDK Private Build-1.8.0_432-8u432-gaus1-0ubuntu220.04-ga
+1 💚 spotbugs 1m 6s trunk passed
+1 💚 shadedclient 35m 2s branch has no errors when building and testing our client artifacts.
-0 ⚠️ patch 35m 23s Used diff version of patch file. Binary files and potentially other changes not applied. Please rebase and squash commits if necessary.
_ Patch Compile Tests _
+1 💚 mvninstall 0m 29s the patch passed
+1 💚 compile 0m 30s the patch passed with JDK Ubuntu-11.0.25+9-post-Ubuntu-1ubuntu120.04
+1 💚 javac 0m 30s the patch passed
+1 💚 compile 0m 27s the patch passed with JDK Private Build-1.8.0_432-8u432-gaus1-0ubuntu220.04-ga
+1 💚 javac 0m 27s the patch passed
+1 💚 blanks 0m 0s The patch has no blanks issues.
-0 ⚠️ checkstyle 0m 20s /results-checkstyle-hadoop-tools_hadoop-azure.txt hadoop-tools/hadoop-azure: The patch generated 16 new + 22 unchanged - 1 fixed = 38 total (was 23)
+1 💚 mvnsite 0m 30s the patch passed
-1 ❌ javadoc 0m 27s /results-javadoc-javadoc-hadoop-tools_hadoop-azure-jdkUbuntu-11.0.25+9-post-Ubuntu-1ubuntu120.04.txt hadoop-tools_hadoop-azure-jdkUbuntu-11.0.25+9-post-Ubuntu-1ubuntu120.04 with JDK Ubuntu-11.0.25+9-post-Ubuntu-1ubuntu120.04 generated 2 new + 11 unchanged - 0 fixed = 13 total (was 11)
-1 ❌ javadoc 0m 26s /results-javadoc-javadoc-hadoop-tools_hadoop-azure-jdkPrivateBuild-1.8.0_432-8u432-gaus1-0ubuntu220.04-ga.txt hadoop-tools_hadoop-azure-jdkPrivateBuild-1.8.0_432-8u432-gaus1-0ubuntu220.04-ga with JDK Private Build-1.8.0_432-8u432-gaus1-0ubuntu220.04-ga generated 2 new + 11 unchanged - 0 fixed = 13 total (was 11)
-1 ❌ spotbugs 1m 8s /new-spotbugs-hadoop-tools_hadoop-azure.html hadoop-tools/hadoop-azure generated 5 new + 0 unchanged - 0 fixed = 5 total (was 0)
+1 💚 shadedclient 34m 8s patch has no errors when building and testing our client artifacts.
_ Other Tests _
+1 💚 unit 2m 22s hadoop-azure in the patch passed.
+1 💚 asflicense 0m 36s The patch does not generate ASF License warnings.
139m 13s
Reason Tests
SpotBugs module:hadoop-tools/hadoop-azure
Redundant nullcheck of op which is known to be null in org.apache.hadoop.fs.azurebfs.services.AzureBlobIngressHandler.remoteAppendBlobWrite(String, DataBlocks$BlockUploadData, AbfsBlock, AppendRequestParameters, TracingContext) Redundant null check at AzureBlobIngressHandler.java:is known to be null in org.apache.hadoop.fs.azurebfs.services.AzureBlobIngressHandler.remoteAppendBlobWrite(String, DataBlocks$BlockUploadData, AbfsBlock, AppendRequestParameters, TracingContext) Redundant null check at AzureBlobIngressHandler.java:[line 227]
Redundant nullcheck of op which is known to be null in org.apache.hadoop.fs.azurebfs.services.AzureBlobIngressHandler.remoteFlush(long, boolean, boolean, String, TracingContext) Redundant null check at AzureBlobIngressHandler.java:is known to be null in org.apache.hadoop.fs.azurebfs.services.AzureBlobIngressHandler.remoteFlush(long, boolean, boolean, String, TracingContext) Redundant null check at AzureBlobIngressHandler.java:[line 190]
Redundant nullcheck of op which is known to be null in org.apache.hadoop.fs.azurebfs.services.AzureBlobIngressHandler.remoteWrite(AbfsBlock, DataBlocks$BlockUploadData, AppendRequestParameters, TracingContext) Redundant null check at AzureBlobIngressHandler.java:is known to be null in org.apache.hadoop.fs.azurebfs.services.AzureBlobIngressHandler.remoteWrite(AbfsBlock, DataBlocks$BlockUploadData, AppendRequestParameters, TracingContext) Redundant null check at AzureBlobIngressHandler.java:[line 140]
Redundant nullcheck of op which is known to be null in org.apache.hadoop.fs.azurebfs.services.AzureDfsToBlobIngressFallbackHandler.remoteFlush(long, boolean, boolean, String, TracingContext) Redundant null check at AzureDfsToBlobIngressFallbackHandler.java:is known to be null in org.apache.hadoop.fs.azurebfs.services.AzureDfsToBlobIngressFallbackHandler.remoteFlush(long, boolean, boolean, String, TracingContext) Redundant null check at AzureDfsToBlobIngressFallbackHandler.java:[line 163]
Redundant nullcheck of op which is known to be null in org.apache.hadoop.fs.azurebfs.services.AzureDfsToBlobIngressFallbackHandler.remoteWrite(AbfsBlock, DataBlocks$BlockUploadData, AppendRequestParameters, TracingContext) Redundant null check at AzureDfsToBlobIngressFallbackHandler.java:is known to be null in org.apache.hadoop.fs.azurebfs.services.AzureDfsToBlobIngressFallbackHandler.remoteWrite(AbfsBlock, DataBlocks$BlockUploadData, AppendRequestParameters, TracingContext) Redundant null check at AzureDfsToBlobIngressFallbackHandler.java:[line 124]
Subsystem Report/Notes
Docker ClientAPI=1.47 ServerAPI=1.47 base: https://ci-hadoop.apache.org/job/hadoop-multibranch/job/PR-7272/12/artifact/out/Dockerfile
GITHUB PR #7272
JIRA Issue HADOOP-19232
Optional Tests dupname asflicense compile javac javadoc mvninstall mvnsite unit shadedclient spotbugs checkstyle codespell detsecrets markdownlint
uname Linux 3455ead6dd56 5.15.0-124-generic #134-Ubuntu SMP Fri Sep 27 20:20:17 UTC 2024 x86_64 x86_64 x86_64 GNU/Linux
Build tool maven
Personality dev-support/bin/hadoop.sh
git revision trunk / 1df66bb
Default Java Private Build-1.8.0_432-8u432-gaus1-0ubuntu220.04-ga
Multi-JDK versions /usr/lib/jvm/java-11-openjdk-amd64:Ubuntu-11.0.25+9-post-Ubuntu-1ubuntu120.04 /usr/lib/jvm/java-8-openjdk-amd64:Private Build-1.8.0_432-8u432-gaus1-0ubuntu220.04-ga
Test Results https://ci-hadoop.apache.org/job/hadoop-multibranch/job/PR-7272/12/testReport/
Max. process+thread count 704 (vs. ulimit of 5500)
modules C: hadoop-tools/hadoop-azure U: hadoop-tools/hadoop-azure
Console output https://ci-hadoop.apache.org/job/hadoop-multibranch/job/PR-7272/12/console
versions git=2.25.1 maven=3.6.3 spotbugs=4.2.2
Powered by Apache Yetus 0.14.0 https://yetus.apache.org

This message was automatically generated.

@hadoop-yetus
Copy link

🎊 +1 overall

Vote Subsystem Runtime Logfile Comment
+0 🆗 reexec 0m 57s Docker mode activated.
_ Prechecks _
+1 💚 dupname 0m 2s No case conflicting files found.
+0 🆗 codespell 0m 0s codespell was not available.
+0 🆗 detsecrets 0m 0s detect-secrets was not available.
+0 🆗 markdownlint 0m 0s markdownlint was not available.
+1 💚 @author 0m 0s The patch does not contain any @author tags.
+1 💚 test4tests 0m 0s The patch appears to include 32 new or modified test files.
_ trunk Compile Tests _
+1 💚 mvninstall 35m 49s trunk passed
+1 💚 compile 0m 37s trunk passed with JDK Ubuntu-11.0.25+9-post-Ubuntu-1ubuntu120.04
+1 💚 compile 0m 34s trunk passed with JDK Private Build-1.8.0_432-8u432-gaus1-0ubuntu220.04-ga
+1 💚 checkstyle 0m 31s trunk passed
+1 💚 mvnsite 0m 39s trunk passed
+1 💚 javadoc 0m 39s trunk passed with JDK Ubuntu-11.0.25+9-post-Ubuntu-1ubuntu120.04
+1 💚 javadoc 0m 33s trunk passed with JDK Private Build-1.8.0_432-8u432-gaus1-0ubuntu220.04-ga
+1 💚 spotbugs 1m 8s trunk passed
+1 💚 shadedclient 35m 45s branch has no errors when building and testing our client artifacts.
-0 ⚠️ patch 36m 7s Used diff version of patch file. Binary files and potentially other changes not applied. Please rebase and squash commits if necessary.
_ Patch Compile Tests _
+1 💚 mvninstall 0m 29s the patch passed
+1 💚 compile 0m 32s the patch passed with JDK Ubuntu-11.0.25+9-post-Ubuntu-1ubuntu120.04
+1 💚 javac 0m 32s the patch passed
+1 💚 compile 0m 28s the patch passed with JDK Private Build-1.8.0_432-8u432-gaus1-0ubuntu220.04-ga
+1 💚 javac 0m 28s the patch passed
+1 💚 blanks 0m 0s The patch has no blanks issues.
-0 ⚠️ checkstyle 0m 20s /results-checkstyle-hadoop-tools_hadoop-azure.txt hadoop-tools/hadoop-azure: The patch generated 21 new + 22 unchanged - 1 fixed = 43 total (was 23)
+1 💚 mvnsite 0m 30s the patch passed
+1 💚 javadoc 0m 27s the patch passed with JDK Ubuntu-11.0.25+9-post-Ubuntu-1ubuntu120.04
+1 💚 javadoc 0m 26s the patch passed with JDK Private Build-1.8.0_432-8u432-gaus1-0ubuntu220.04-ga
+1 💚 spotbugs 1m 6s the patch passed
+1 💚 shadedclient 34m 0s patch has no errors when building and testing our client artifacts.
_ Other Tests _
+1 💚 unit 2m 20s hadoop-azure in the patch passed.
+1 💚 asflicense 0m 35s The patch does not generate ASF License warnings.
119m 56s
Subsystem Report/Notes
Docker ClientAPI=1.47 ServerAPI=1.47 base: https://ci-hadoop.apache.org/job/hadoop-multibranch/job/PR-7272/13/artifact/out/Dockerfile
GITHUB PR #7272
JIRA Issue HADOOP-19232
Optional Tests dupname asflicense compile javac javadoc mvninstall mvnsite unit shadedclient spotbugs checkstyle codespell detsecrets markdownlint
uname Linux e885af0a36c5 5.15.0-124-generic #134-Ubuntu SMP Fri Sep 27 20:20:17 UTC 2024 x86_64 x86_64 x86_64 GNU/Linux
Build tool maven
Personality dev-support/bin/hadoop.sh
git revision trunk / 51ebb13
Default Java Private Build-1.8.0_432-8u432-gaus1-0ubuntu220.04-ga
Multi-JDK versions /usr/lib/jvm/java-11-openjdk-amd64:Ubuntu-11.0.25+9-post-Ubuntu-1ubuntu120.04 /usr/lib/jvm/java-8-openjdk-amd64:Private Build-1.8.0_432-8u432-gaus1-0ubuntu220.04-ga
Test Results https://ci-hadoop.apache.org/job/hadoop-multibranch/job/PR-7272/13/testReport/
Max. process+thread count 554 (vs. ulimit of 5500)
modules C: hadoop-tools/hadoop-azure U: hadoop-tools/hadoop-azure
Console output https://ci-hadoop.apache.org/job/hadoop-multibranch/job/PR-7272/13/console
versions git=2.25.1 maven=3.6.3 spotbugs=4.2.2
Powered by Apache Yetus 0.14.0 https://yetus.apache.org

This message was automatically generated.

@hadoop-yetus
Copy link

🎊 +1 overall

Vote Subsystem Runtime Logfile Comment
+0 🆗 reexec 1m 25s Docker mode activated.
_ Prechecks _
+1 💚 dupname 0m 1s No case conflicting files found.
+0 🆗 codespell 0m 0s codespell was not available.
+0 🆗 detsecrets 0m 0s detect-secrets was not available.
+0 🆗 markdownlint 0m 0s markdownlint was not available.
+1 💚 @author 0m 0s The patch does not contain any @author tags.
+1 💚 test4tests 0m 0s The patch appears to include 32 new or modified test files.
_ trunk Compile Tests _
+1 💚 mvninstall 34m 28s trunk passed
+1 💚 compile 0m 38s trunk passed with JDK Ubuntu-11.0.25+9-post-Ubuntu-1ubuntu120.04
+1 💚 compile 0m 37s trunk passed with JDK Private Build-1.8.0_432-8u432-gaus1-0ubuntu220.04-ga
+1 💚 checkstyle 0m 32s trunk passed
+1 💚 mvnsite 0m 41s trunk passed
+1 💚 javadoc 0m 40s trunk passed with JDK Ubuntu-11.0.25+9-post-Ubuntu-1ubuntu120.04
+1 💚 javadoc 0m 35s trunk passed with JDK Private Build-1.8.0_432-8u432-gaus1-0ubuntu220.04-ga
+1 💚 spotbugs 1m 6s trunk passed
+1 💚 shadedclient 33m 7s branch has no errors when building and testing our client artifacts.
-0 ⚠️ patch 33m 28s Used diff version of patch file. Binary files and potentially other changes not applied. Please rebase and squash commits if necessary.
_ Patch Compile Tests _
+1 💚 mvninstall 0m 29s the patch passed
+1 💚 compile 0m 30s the patch passed with JDK Ubuntu-11.0.25+9-post-Ubuntu-1ubuntu120.04
+1 💚 javac 0m 30s the patch passed
+1 💚 compile 0m 28s the patch passed with JDK Private Build-1.8.0_432-8u432-gaus1-0ubuntu220.04-ga
+1 💚 javac 0m 28s the patch passed
+1 💚 blanks 0m 0s The patch has no blanks issues.
-0 ⚠️ checkstyle 0m 20s /results-checkstyle-hadoop-tools_hadoop-azure.txt hadoop-tools/hadoop-azure: The patch generated 19 new + 22 unchanged - 1 fixed = 41 total (was 23)
+1 💚 mvnsite 0m 30s the patch passed
+1 💚 javadoc 0m 27s the patch passed with JDK Ubuntu-11.0.25+9-post-Ubuntu-1ubuntu120.04
+1 💚 javadoc 0m 26s the patch passed with JDK Private Build-1.8.0_432-8u432-gaus1-0ubuntu220.04-ga
+1 💚 spotbugs 1m 4s the patch passed
+1 💚 shadedclient 32m 51s patch has no errors when building and testing our client artifacts.
_ Other Tests _
+1 💚 unit 2m 24s hadoop-azure in the patch passed.
+1 💚 asflicense 0m 37s The patch does not generate ASF License warnings.
115m 27s
Subsystem Report/Notes
Docker ClientAPI=1.47 ServerAPI=1.47 base: https://ci-hadoop.apache.org/job/hadoop-multibranch/job/PR-7272/14/artifact/out/Dockerfile
GITHUB PR #7272
JIRA Issue HADOOP-19232
Optional Tests dupname asflicense compile javac javadoc mvninstall mvnsite unit shadedclient spotbugs checkstyle codespell detsecrets markdownlint
uname Linux d720330b6793 5.15.0-124-generic #134-Ubuntu SMP Fri Sep 27 20:20:17 UTC 2024 x86_64 x86_64 x86_64 GNU/Linux
Build tool maven
Personality dev-support/bin/hadoop.sh
git revision trunk / dabcb1e
Default Java Private Build-1.8.0_432-8u432-gaus1-0ubuntu220.04-ga
Multi-JDK versions /usr/lib/jvm/java-11-openjdk-amd64:Ubuntu-11.0.25+9-post-Ubuntu-1ubuntu120.04 /usr/lib/jvm/java-8-openjdk-amd64:Private Build-1.8.0_432-8u432-gaus1-0ubuntu220.04-ga
Test Results https://ci-hadoop.apache.org/job/hadoop-multibranch/job/PR-7272/14/testReport/
Max. process+thread count 699 (vs. ulimit of 5500)
modules C: hadoop-tools/hadoop-azure U: hadoop-tools/hadoop-azure
Console output https://ci-hadoop.apache.org/job/hadoop-multibranch/job/PR-7272/14/console
versions git=2.25.1 maven=3.6.3 spotbugs=4.2.2
Powered by Apache Yetus 0.14.0 https://yetus.apache.org

This message was automatically generated.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants