Skip to content

Conversation

@anujmodi2021
Copy link
Contributor

Description of PR
Jira: https://issues.apache.org/jira/browse/HADOOP-19096
Commit in trunk: dbe2d61

ABFS has a client-side throttling mechanism which works on the metrics collected from past requests made. I requests are getting failed due to throttling at server, we update our metrics and client side backoff is calculated based on those metrics.

This PR enhances the logic to decide which requests should be considered to compute client side backoff interval as follows:

For each request made by ABFS driver, we will determine if they should contribute to Client-Side Throttling based on the status code and result:

Status code in 2xx range: Successful Operations should contribute.
Status code in 3xx range: Redirection Operations should not contribute.
Status code in 4xx range: User Errors should not contribute.
Status code is 503: Throttling Error should contribute only if they are due to client limits breach as follows:
503, Ingress Over Account Limit: Should Contribute
503, Egress Over Account Limit: Should Contribute
503, TPS Over Account Limit: Should Contribute
503, Other Server Throttling: Should not Contribute.
Status code in 5xx range other than 503: Should not Contribute.
IOException and UnknownHostExceptions: Should not Contribute.

…g Metrics Logic (apache#6276)


ABFS has a client-side throttling mechanism which works on the metrics collected
from past requests

When requests are fail due to server-side throttling it updates its
metrics and recalculates any client side backoff.

The choice of which requests should be used to compute client side
backoff interval is based on the http status code:

- Status code in 2xx range: Successful Operations should contribute.
- Status code in 3xx range: Redirection Operations should not contribute.
- Status code in 4xx range: User Errors should not contribute.
- Status code is 503: Throttling Error should contribute only if they
  are due to client limits breach as follows:
  * 503, Ingress Over Account Limit: Should Contribute
  * 503, Egress Over Account Limit: Should Contribute
  * 503, TPS Over Account Limit: Should Contribute
  * 503, Other Server Throttling: Should not Contribute.
- Status code in 5xx range other than 503: Should not Contribute.
- IOException and UnknownHostExceptions: Should not Contribute.

Contributed by Anuj Modi
@anujmodi2021
Copy link
Contributor Author


:::: AGGREGATED TEST RESULT ::::

============================================================
HNS-OAuth

[ERROR] testListPathWithValueGreaterThanServerMaximum(org.apache.hadoop.fs.azurebfs.ITestAbfsClient) Time elapsed: 251.144 s <<< FAILURE!

[ERROR] test_120_terasort(org.apache.hadoop.fs.azurebfs.commit.ITestAbfsTerasort) Time elapsed: 4.546 s <<< ERROR!

[WARNING] Tests run: 137, Failures: 0, Errors: 0, Skipped: 2
[ERROR] Tests run: 620, Failures: 1, Errors: 0, Skipped: 73
[ERROR] Tests run: 380, Failures: 0, Errors: 1, Skipped: 55

============================================================
HNS-SharedKey

[ERROR] testListPathWithValueGreaterThanServerMaximum(org.apache.hadoop.fs.azurebfs.ITestAbfsClient) Time elapsed: 244.141 s <<< FAILURE!

[WARNING] Tests run: 137, Failures: 0, Errors: 0, Skipped: 3
[ERROR] Tests run: 620, Failures: 1, Errors: 0, Skipped: 28
[WARNING] Tests run: 380, Failures: 0, Errors: 0, Skipped: 41

============================================================
NonHNS-SharedKey

[WARNING] Tests run: 137, Failures: 0, Errors: 0, Skipped: 9
[WARNING] Tests run: 604, Failures: 0, Errors: 0, Skipped: 269
[WARNING] Tests run: 380, Failures: 0, Errors: 0, Skipped: 44

============================================================
AppendBlob-HNS-OAuth

[ERROR] testCloseOfDataBlockOnAppendComplete(org.apache.hadoop.fs.azurebfs.ITestAzureBlobFileSystemAppend) Time elapsed: 14.424 s <<< FAILURE!
[ERROR] testListPathWithValueGreaterThanServerMaximum(org.apache.hadoop.fs.azurebfs.ITestAbfsClient) Time elapsed: 234.055 s <<< FAILURE!
[ERROR] testAbfsStreamOps(org.apache.hadoop.fs.azurebfs.ITestAbfsStreamStatistics) Time elapsed: 6.224 s <<< FAILURE!

[ERROR] testExpect100ContinueFailureInAppend(org.apache.hadoop.fs.azurebfs.services.ITestAbfsOutputStream) Time elapsed: 9.868 s <<< ERROR!
[ERROR] testAppendWithChecksumAtDifferentOffsets(org.apache.hadoop.fs.azurebfs.ITestAzureBlobFileSystemChecksum) Time elapsed: 15.112 s <<< ERROR!
[ERROR] testTwoWritersCreateAppendNoInfiniteLease(org.apache.hadoop.fs.azurebfs.ITestAzureBlobFileSystemLease) Time elapsed: 4.308 s <<< ERROR!
[ERROR] test_120_terasort(org.apache.hadoop.fs.azurebfs.commit.ITestAbfsTerasort) Time elapsed: 4.584 s <<< ERROR!

[WARNING] Tests run: 137, Failures: 0, Errors: 0, Skipped: 2
[ERROR] Tests run: 620, Failures: 2, Errors: 3, Skipped: 73
[ERROR] Tests run: 380, Failures: 1, Errors: 1, Skipped: 79

Time taken: 55 mins 56 secs.

@anujmodi2021
Copy link
Contributor Author

@steveloughran
This is good to merge.
The test failures here are known and fixed in PR: #6676

@hadoop-yetus
Copy link

🎊 +1 overall

Vote Subsystem Runtime Logfile Comment
+0 🆗 reexec 0m 22s Docker mode activated.
_ Prechecks _
+1 💚 dupname 0m 0s No case conflicting files found.
+0 🆗 codespell 0m 0s codespell was not available.
+0 🆗 detsecrets 0m 0s detect-secrets was not available.
+1 💚 @author 0m 0s The patch does not contain any @author tags.
+1 💚 test4tests 0m 0s The patch appears to include 3 new or modified test files.
_ branch-3.4 Compile Tests _
+1 💚 mvninstall 32m 18s branch-3.4 passed
+1 💚 compile 0m 22s branch-3.4 passed with JDK Ubuntu-11.0.22+7-post-Ubuntu-0ubuntu220.04.1
+1 💚 compile 0m 20s branch-3.4 passed with JDK Private Build-1.8.0_402-8u402-ga-2ubuntu1~20.04-b06
+1 💚 checkstyle 0m 21s branch-3.4 passed
+1 💚 mvnsite 0m 27s branch-3.4 passed
+1 💚 javadoc 0m 25s branch-3.4 passed with JDK Ubuntu-11.0.22+7-post-Ubuntu-0ubuntu220.04.1
+1 💚 javadoc 0m 20s branch-3.4 passed with JDK Private Build-1.8.0_402-8u402-ga-2ubuntu1~20.04-b06
+1 💚 spotbugs 0m 43s branch-3.4 passed
+1 💚 shadedclient 19m 54s branch has no errors when building and testing our client artifacts.
_ Patch Compile Tests _
+1 💚 mvninstall 0m 18s the patch passed
+1 💚 compile 0m 18s the patch passed with JDK Ubuntu-11.0.22+7-post-Ubuntu-0ubuntu220.04.1
+1 💚 javac 0m 18s the patch passed
+1 💚 compile 0m 17s the patch passed with JDK Private Build-1.8.0_402-8u402-ga-2ubuntu1~20.04-b06
+1 💚 javac 0m 17s the patch passed
+1 💚 blanks 0m 0s The patch has no blanks issues.
+1 💚 checkstyle 0m 10s the patch passed
+1 💚 mvnsite 0m 17s the patch passed
+1 💚 javadoc 0m 15s the patch passed with JDK Ubuntu-11.0.22+7-post-Ubuntu-0ubuntu220.04.1
+1 💚 javadoc 0m 17s the patch passed with JDK Private Build-1.8.0_402-8u402-ga-2ubuntu1~20.04-b06
+1 💚 spotbugs 0m 41s the patch passed
+1 💚 shadedclient 19m 42s 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 24s The patch does not generate ASF License warnings.
83m 17s
Subsystem Report/Notes
Docker ClientAPI=1.44 ServerAPI=1.44 base: https://ci-hadoop.apache.org/job/hadoop-multibranch/job/PR-6720/1/artifact/out/Dockerfile
GITHUB PR #6720
JIRA Issue HADOOP-19096
Optional Tests dupname asflicense compile javac javadoc mvninstall mvnsite unit shadedclient spotbugs checkstyle codespell detsecrets
uname Linux 078e88589ba9 5.15.0-94-generic #104-Ubuntu SMP Tue Jan 9 15:25:40 UTC 2024 x86_64 x86_64 x86_64 GNU/Linux
Build tool maven
Personality dev-support/bin/hadoop.sh
git revision branch-3.4 / e2d5562
Default Java Private Build-1.8.0_402-8u402-ga-2ubuntu1~20.04-b06
Multi-JDK versions /usr/lib/jvm/java-11-openjdk-amd64:Ubuntu-11.0.22+7-post-Ubuntu-0ubuntu220.04.1 /usr/lib/jvm/java-8-openjdk-amd64:Private Build-1.8.0_402-8u402-ga-2ubuntu1~20.04-b06
Test Results https://ci-hadoop.apache.org/job/hadoop-multibranch/job/PR-6720/1/testReport/
Max. process+thread count 552 (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-6720/1/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.

@steveloughran steveloughran merged commit 8c12f28 into apache:branch-3.4 Apr 11, 2024
@steveloughran
Copy link
Contributor

+1, merged to 3.4.

@anujmodi2021 anujmodi2021 deleted the branch-3.4_cst branch April 12, 2024 03:51
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants