[jira] [Commented] (HADOOP-18521) ABFS ReadBufferManager buffer sharing across concurrent HTTP requests

2022-12-09 Thread ASF GitHub Bot (Jira)


[ 
https://issues.apache.org/jira/browse/HADOOP-18521?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17645451#comment-17645451
 ] 

ASF GitHub Bot commented on HADOOP-18521:
-

hadoop-yetus commented on PR #5117:
URL: https://github.com/apache/hadoop/pull/5117#issuecomment-1344656088

   :broken_heart: **-1 overall**
   
   
   
   
   
   
   | Vote | Subsystem | Runtime |  Logfile | Comment |
   |::|--:|:|::|:---:|
   | +0 :ok: |  reexec  |   0m 37s |  |  Docker mode activated.  |
    _ Prechecks _ |
   | +1 :green_heart: |  dupname  |   0m  0s |  |  No case conflicting files 
found.  |
   | +0 :ok: |  codespell  |   0m  1s |  |  codespell was not available.  |
   | +0 :ok: |  detsecrets  |   0m  1s |  |  detect-secrets was not available.  
|
   | +1 :green_heart: |  @author  |   0m  0s |  |  The patch does not contain 
any @author tags.  |
   | +1 :green_heart: |  test4tests  |   0m  0s |  |  The patch appears to 
include 6 new or modified test files.  |
    _ trunk Compile Tests _ |
   | +0 :ok: |  mvndep  |  17m 19s |  |  Maven dependency ordering for branch  |
   | +1 :green_heart: |  mvninstall  |  31m 23s |  |  trunk passed  |
   | +1 :green_heart: |  compile  |  24m 34s |  |  trunk passed with JDK 
Ubuntu-11.0.17+8-post-Ubuntu-1ubuntu220.04  |
   | +1 :green_heart: |  compile  |  21m  1s |  |  trunk passed with JDK 
Private Build-1.8.0_352-8u352-ga-1~20.04-b08  |
   | +1 :green_heart: |  checkstyle  |   3m 40s |  |  trunk passed  |
   | +1 :green_heart: |  mvnsite  |   2m 35s |  |  trunk passed  |
   | -1 :x: |  javadoc  |   1m 12s | 
[/branch-javadoc-hadoop-common-project_hadoop-common-jdkUbuntu-11.0.17+8-post-Ubuntu-1ubuntu220.04.txt](https://ci-hadoop.apache.org/job/hadoop-multibranch/job/PR-5117/9/artifact/out/branch-javadoc-hadoop-common-project_hadoop-common-jdkUbuntu-11.0.17+8-post-Ubuntu-1ubuntu220.04.txt)
 |  hadoop-common in trunk failed with JDK 
Ubuntu-11.0.17+8-post-Ubuntu-1ubuntu220.04.  |
   | -1 :x: |  javadoc  |   0m 44s | 
[/branch-javadoc-hadoop-tools_hadoop-azure-jdkUbuntu-11.0.17+8-post-Ubuntu-1ubuntu220.04.txt](https://ci-hadoop.apache.org/job/hadoop-multibranch/job/PR-5117/9/artifact/out/branch-javadoc-hadoop-tools_hadoop-azure-jdkUbuntu-11.0.17+8-post-Ubuntu-1ubuntu220.04.txt)
 |  hadoop-azure in trunk failed with JDK 
Ubuntu-11.0.17+8-post-Ubuntu-1ubuntu220.04.  |
   | +1 :green_heart: |  javadoc  |   1m 27s |  |  trunk passed with JDK 
Private Build-1.8.0_352-8u352-ga-1~20.04-b08  |
   | +1 :green_heart: |  spotbugs  |   4m  2s |  |  trunk passed  |
   | +1 :green_heart: |  shadedclient  |  20m 48s |  |  branch has no errors 
when building and testing our client artifacts.  |
    _ Patch Compile Tests _ |
   | +0 :ok: |  mvndep  |   0m 28s |  |  Maven dependency ordering for patch  |
   | +1 :green_heart: |  mvninstall  |   1m 30s |  |  the patch passed  |
   | +1 :green_heart: |  compile  |  25m 54s |  |  the patch passed with JDK 
Ubuntu-11.0.17+8-post-Ubuntu-1ubuntu220.04  |
   | +1 :green_heart: |  javac  |  25m 54s |  |  the patch passed  |
   | +1 :green_heart: |  compile  |  21m 47s |  |  the patch passed with JDK 
Private Build-1.8.0_352-8u352-ga-1~20.04-b08  |
   | +1 :green_heart: |  javac  |  21m 47s |  |  the patch passed  |
   | -1 :x: |  blanks  |   0m  0s | 
[/blanks-eol.txt](https://ci-hadoop.apache.org/job/hadoop-multibranch/job/PR-5117/9/artifact/out/blanks-eol.txt)
 |  The patch has 1 line(s) that end in blanks. Use git apply --whitespace=fix 
<>. Refer https://git-scm.com/docs/git-apply  |
   | -0 :warning: |  checkstyle  |   3m 57s | 
[/results-checkstyle-root.txt](https://ci-hadoop.apache.org/job/hadoop-multibranch/job/PR-5117/9/artifact/out/results-checkstyle-root.txt)
 |  root: The patch generated 5 new + 1 unchanged - 0 fixed = 6 total (was 1)  |
   | +1 :green_heart: |  mvnsite  |   2m 32s |  |  the patch passed  |
   | -1 :x: |  javadoc  |   1m  4s | 
[/patch-javadoc-hadoop-common-project_hadoop-common-jdkUbuntu-11.0.17+8-post-Ubuntu-1ubuntu220.04.txt](https://ci-hadoop.apache.org/job/hadoop-multibranch/job/PR-5117/9/artifact/out/patch-javadoc-hadoop-common-project_hadoop-common-jdkUbuntu-11.0.17+8-post-Ubuntu-1ubuntu220.04.txt)
 |  hadoop-common in the patch failed with JDK 
Ubuntu-11.0.17+8-post-Ubuntu-1ubuntu220.04.  |
   | -1 :x: |  javadoc  |   0m 41s | 
[/patch-javadoc-hadoop-tools_hadoop-azure-jdkUbuntu-11.0.17+8-post-Ubuntu-1ubuntu220.04.txt](https://ci-hadoop.apache.org/job/hadoop-multibranch/job/PR-5117/9/artifact/out/patch-javadoc-hadoop-tools_hadoop-azure-jdkUbuntu-11.0.17+8-post-Ubuntu-1ubuntu220.04.txt)
 |  hadoop-azure in the patch failed with JDK 
Ubuntu-11.0.17+8-post-Ubuntu-1ubuntu220.04.  |
   | +1 :green_heart: |  javadoc  |   1m 22s |  |  the patch passed with JDK 
Private Build-1.8.0_352-8u352-ga-1~20.04-b08  |
   | +1 :green_heart: |  spotbugs  |   4m  8s |  |  the patch passed  |
   | +1 :green

[jira] [Commented] (HADOOP-18521) ABFS ReadBufferManager buffer sharing across concurrent HTTP requests

2022-12-09 Thread Steve Loughran (Jira)


[ 
https://issues.apache.org/jira/browse/HADOOP-18521?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17645309#comment-17645309
 ] 

Steve Loughran commented on HADOOP-18521:
-

We have a nice and minimal fix which can be easily backported anywhere that is 
needed.

That larger patch of mine was intended to
# avoid adding the prefetches of closed streams to the completed list (impact: 
buffers will be retained until timeout)
# add validation about accidental buffer reuse
# handle failures in the async read caused by the close()
# iostatistics for production code and testing. used in asserts and will allow 
us to assess value of prefetching in production code
# pulling out of the methods invoked on abfs input stream into their own 
interface, again for testing.

we don't need this as much any more; it's something where I would like most of 
the features (1, 3, 4, 5) in, but we could look at that in terms of a broader 
review of the readbuffer feature

I'm going to
rebase my pr
create a new jira for "extend readbuffer for testing/statistics" and move the 
pr to that

> ABFS ReadBufferManager buffer sharing across concurrent HTTP requests
> -
>
> Key: HADOOP-18521
> URL: https://issues.apache.org/jira/browse/HADOOP-18521
> Project: Hadoop Common
>  Issue Type: Bug
>  Components: fs/azure
>Affects Versions: 3.3.2, 3.3.3, 3.3.4
>Reporter: Steve Loughran
>Assignee: Steve Loughran
>Priority: Critical
>  Labels: pull-request-available
>
> AbfsInputStream.close() can trigger the return of buffers used for active 
> prefetch GET requests into the ReadBufferManager free buffer pool.
> A subsequent prefetch by a different stream in the same process may acquire 
> this same buffer. This can lead to risk of corruption of its own prefetched 
> data, data which may then be returned to that other thread.
> On releases without the fix for this (3.3.2+), the bug can be avoided by 
> disabling all prefetching 
> {code}
> fs.azure.readaheadqueue.depth = 0
> {code}



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

-
To unsubscribe, e-mail: common-issues-unsubscr...@hadoop.apache.org
For additional commands, e-mail: common-issues-h...@hadoop.apache.org



[jira] [Commented] (HADOOP-18521) ABFS ReadBufferManager buffer sharing across concurrent HTTP requests

2022-11-29 Thread ASF GitHub Bot (Jira)


[ 
https://issues.apache.org/jira/browse/HADOOP-18521?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17640956#comment-17640956
 ] 

ASF GitHub Bot commented on HADOOP-18521:
-

hadoop-yetus commented on PR #5117:
URL: https://github.com/apache/hadoop/pull/5117#issuecomment-1331371867

   :broken_heart: **-1 overall**
   
   
   
   
   
   
   | Vote | Subsystem | Runtime |  Logfile | Comment |
   |::|--:|:|::|:---:|
   | +0 :ok: |  reexec  |   0m 51s |  |  Docker mode activated.  |
    _ Prechecks _ |
   | +1 :green_heart: |  dupname  |   0m  0s |  |  No case conflicting files 
found.  |
   | +0 :ok: |  codespell  |   0m  1s |  |  codespell was not available.  |
   | +0 :ok: |  detsecrets  |   0m  1s |  |  detect-secrets was not available.  
|
   | +1 :green_heart: |  @author  |   0m  0s |  |  The patch does not contain 
any @author tags.  |
   | +1 :green_heart: |  test4tests  |   0m  0s |  |  The patch appears to 
include 6 new or modified test files.  |
    _ trunk Compile Tests _ |
   | +0 :ok: |  mvndep  |  16m  5s |  |  Maven dependency ordering for branch  |
   | +1 :green_heart: |  mvninstall  |  26m 16s |  |  trunk passed  |
   | +1 :green_heart: |  compile  |  23m 32s |  |  trunk passed with JDK 
Ubuntu-11.0.16+8-post-Ubuntu-0ubuntu120.04  |
   | +1 :green_heart: |  compile  |  20m 53s |  |  trunk passed with JDK 
Private Build-1.8.0_342-8u342-b07-0ubuntu1~20.04-b07  |
   | +1 :green_heart: |  checkstyle  |   4m 12s |  |  trunk passed  |
   | +1 :green_heart: |  mvnsite  |   3m 13s |  |  trunk passed  |
   | +1 :green_heart: |  javadoc  |   2m 44s |  |  trunk passed with JDK 
Ubuntu-11.0.16+8-post-Ubuntu-0ubuntu120.04  |
   | +1 :green_heart: |  javadoc  |   2m 24s |  |  trunk passed with JDK 
Private Build-1.8.0_342-8u342-b07-0ubuntu1~20.04-b07  |
   | +1 :green_heart: |  spotbugs  |   4m 42s |  |  trunk passed  |
   | +1 :green_heart: |  shadedclient  |  21m 46s |  |  branch has no errors 
when building and testing our client artifacts.  |
    _ Patch Compile Tests _ |
   | +0 :ok: |  mvndep  |   0m 31s |  |  Maven dependency ordering for patch  |
   | +1 :green_heart: |  mvninstall  |   1m 41s |  |  the patch passed  |
   | +1 :green_heart: |  compile  |  22m 41s |  |  the patch passed with JDK 
Ubuntu-11.0.16+8-post-Ubuntu-0ubuntu120.04  |
   | +1 :green_heart: |  javac  |  22m 41s |  |  the patch passed  |
   | +1 :green_heart: |  compile  |  20m 46s |  |  the patch passed with JDK 
Private Build-1.8.0_342-8u342-b07-0ubuntu1~20.04-b07  |
   | +1 :green_heart: |  javac  |  20m 46s |  |  the patch passed  |
   | -1 :x: |  blanks  |   0m  0s | 
[/blanks-eol.txt](https://ci-hadoop.apache.org/job/hadoop-multibranch/job/PR-5117/8/artifact/out/blanks-eol.txt)
 |  The patch has 1 line(s) that end in blanks. Use git apply --whitespace=fix 
<>. Refer https://git-scm.com/docs/git-apply  |
   | -0 :warning: |  checkstyle  |   4m 11s | 
[/results-checkstyle-root.txt](https://ci-hadoop.apache.org/job/hadoop-multibranch/job/PR-5117/8/artifact/out/results-checkstyle-root.txt)
 |  root: The patch generated 5 new + 1 unchanged - 0 fixed = 6 total (was 1)  |
   | +1 :green_heart: |  mvnsite  |   3m  5s |  |  the patch passed  |
   | +1 :green_heart: |  javadoc  |   2m 41s |  |  the patch passed with JDK 
Ubuntu-11.0.16+8-post-Ubuntu-0ubuntu120.04  |
   | +1 :green_heart: |  javadoc  |   2m  8s |  |  the patch passed with JDK 
Private Build-1.8.0_342-8u342-b07-0ubuntu1~20.04-b07  |
   | +1 :green_heart: |  spotbugs  |   4m 59s |  |  the patch passed  |
   | +1 :green_heart: |  shadedclient  |  22m 29s |  |  patch has no errors 
when building and testing our client artifacts.  |
    _ Other Tests _ |
   | +1 :green_heart: |  unit  |  18m 40s |  |  hadoop-common in the patch 
passed.  |
   | +1 :green_heart: |  unit  |   2m 41s |  |  hadoop-azure in the patch 
passed.  |
   | +1 :green_heart: |  asflicense  |   1m 18s |  |  The patch does not 
generate ASF License warnings.  |
   |  |   | 239m 51s |  |  |
   
   
   | Subsystem | Report/Notes |
   |--:|:-|
   | Docker | ClientAPI=1.41 ServerAPI=1.41 base: 
https://ci-hadoop.apache.org/job/hadoop-multibranch/job/PR-5117/8/artifact/out/Dockerfile
 |
   | GITHUB PR | https://github.com/apache/hadoop/pull/5117 |
   | Optional Tests | dupname asflicense compile javac javadoc mvninstall 
mvnsite unit shadedclient spotbugs checkstyle codespell detsecrets |
   | uname | Linux 7ef67244d4ab 4.15.0-191-generic #202-Ubuntu SMP Thu Aug 4 
01:49:29 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux |
   | Build tool | maven |
   | Personality | dev-support/bin/hadoop.sh |
   | git revision | trunk / a261c9ac1cab9b2e1f95ef9ff59e1b02c07c5c4d |
   | Default Java | Private Build-1.8.0_342-8u342-b07-0ubuntu1~20.04-b07 |
   | Multi-JDK versions | 
/usr/lib/jvm/java-11-openjdk-amd64:Ubuntu-11.0.16+8-post-Ubuntu-0ubuntu120.04 
/usr/lib/jvm/jav

[jira] [Commented] (HADOOP-18521) ABFS ReadBufferManager buffer sharing across concurrent HTTP requests

2022-11-28 Thread ASF GitHub Bot (Jira)


[ 
https://issues.apache.org/jira/browse/HADOOP-18521?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17640195#comment-17640195
 ] 

ASF GitHub Bot commented on HADOOP-18521:
-

hadoop-yetus commented on PR #5117:
URL: https://github.com/apache/hadoop/pull/5117#issuecomment-1329588076

   :confetti_ball: **+1 overall**
   
   
   
   
   
   
   | Vote | Subsystem | Runtime |  Logfile | Comment |
   |::|--:|:|::|:---:|
   | +0 :ok: |  reexec  |   0m 55s |  |  Docker mode activated.  |
    _ Prechecks _ |
   | +1 :green_heart: |  dupname  |   0m  1s |  |  No case conflicting files 
found.  |
   | +0 :ok: |  codespell  |   0m  0s |  |  codespell was not available.  |
   | +0 :ok: |  detsecrets  |   0m  0s |  |  detect-secrets was not available.  
|
   | +1 :green_heart: |  @author  |   0m  0s |  |  The patch does not contain 
any @author tags.  |
   | +1 :green_heart: |  test4tests  |   0m  0s |  |  The patch appears to 
include 6 new or modified test files.  |
    _ trunk Compile Tests _ |
   | +0 :ok: |  mvndep  |  16m 10s |  |  Maven dependency ordering for branch  |
   | +1 :green_heart: |  mvninstall  |  29m  8s |  |  trunk passed  |
   | +1 :green_heart: |  compile  |  25m 32s |  |  trunk passed with JDK 
Ubuntu-11.0.16+8-post-Ubuntu-0ubuntu120.04  |
   | +1 :green_heart: |  compile  |  22m 17s |  |  trunk passed with JDK 
Private Build-1.8.0_342-8u342-b07-0ubuntu1~20.04-b07  |
   | +1 :green_heart: |  checkstyle  |   4m 25s |  |  trunk passed  |
   | +1 :green_heart: |  mvnsite  |   2m 53s |  |  trunk passed  |
   | +1 :green_heart: |  javadoc  |   2m 17s |  |  trunk passed with JDK 
Ubuntu-11.0.16+8-post-Ubuntu-0ubuntu120.04  |
   | +1 :green_heart: |  javadoc  |   1m 49s |  |  trunk passed with JDK 
Private Build-1.8.0_342-8u342-b07-0ubuntu1~20.04-b07  |
   | +1 :green_heart: |  spotbugs  |   4m 22s |  |  trunk passed  |
   | +1 :green_heart: |  shadedclient  |  25m  4s |  |  branch has no errors 
when building and testing our client artifacts.  |
    _ Patch Compile Tests _ |
   | +0 :ok: |  mvndep  |   0m 29s |  |  Maven dependency ordering for patch  |
   | +1 :green_heart: |  mvninstall  |   1m 49s |  |  the patch passed  |
   | +1 :green_heart: |  compile  |  27m 24s |  |  the patch passed with JDK 
Ubuntu-11.0.16+8-post-Ubuntu-0ubuntu120.04  |
   | +1 :green_heart: |  javac  |  27m 24s |  |  the patch passed  |
   | +1 :green_heart: |  compile  |  26m 57s |  |  the patch passed with JDK 
Private Build-1.8.0_342-8u342-b07-0ubuntu1~20.04-b07  |
   | +1 :green_heart: |  javac  |  26m 57s |  |  the patch passed  |
   | +1 :green_heart: |  blanks  |   0m  0s |  |  The patch has no blanks 
issues.  |
   | -0 :warning: |  checkstyle  |   5m  1s | 
[/results-checkstyle-root.txt](https://ci-hadoop.apache.org/job/hadoop-multibranch/job/PR-5117/7/artifact/out/results-checkstyle-root.txt)
 |  root: The patch generated 40 new + 1 unchanged - 0 fixed = 41 total (was 1) 
 |
   | +1 :green_heart: |  mvnsite  |   3m 33s |  |  the patch passed  |
   | +1 :green_heart: |  javadoc  |   2m 49s |  |  the patch passed with JDK 
Ubuntu-11.0.16+8-post-Ubuntu-0ubuntu120.04  |
   | +1 :green_heart: |  javadoc  |   2m  4s |  |  the patch passed with JDK 
Private Build-1.8.0_342-8u342-b07-0ubuntu1~20.04-b07  |
   | +1 :green_heart: |  spotbugs  |   5m  7s |  |  the patch passed  |
   | +1 :green_heart: |  shadedclient  |  25m 44s |  |  patch has no errors 
when building and testing our client artifacts.  |
    _ Other Tests _ |
   | +1 :green_heart: |  unit  |  18m 44s |  |  hadoop-common in the patch 
passed.  |
   | +1 :green_heart: |  unit  |   2m 40s |  |  hadoop-azure in the patch 
passed.  |
   | +1 :green_heart: |  asflicense  |   1m 19s |  |  The patch does not 
generate ASF License warnings.  |
   |  |   | 263m 49s |  |  |
   
   
   | Subsystem | Report/Notes |
   |--:|:-|
   | Docker | ClientAPI=1.41 ServerAPI=1.41 base: 
https://ci-hadoop.apache.org/job/hadoop-multibranch/job/PR-5117/7/artifact/out/Dockerfile
 |
   | GITHUB PR | https://github.com/apache/hadoop/pull/5117 |
   | Optional Tests | dupname asflicense compile javac javadoc mvninstall 
mvnsite unit shadedclient spotbugs checkstyle codespell detsecrets |
   | uname | Linux 9fca8013fa2f 4.15.0-191-generic #202-Ubuntu SMP Thu Aug 4 
01:49:29 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux |
   | Build tool | maven |
   | Personality | dev-support/bin/hadoop.sh |
   | git revision | trunk / b224f33813755c2e5b2d73d64486ad4b0482feb6 |
   | Default Java | Private Build-1.8.0_342-8u342-b07-0ubuntu1~20.04-b07 |
   | Multi-JDK versions | 
/usr/lib/jvm/java-11-openjdk-amd64:Ubuntu-11.0.16+8-post-Ubuntu-0ubuntu120.04 
/usr/lib/jvm/java-8-openjdk-amd64:Private 
Build-1.8.0_342-8u342-b07-0ubuntu1~20.04-b07 |
   |  Test Results | 
https://ci-hadoop.apache.org/job/hadoop-multibranch/job/PR-5117/7/testReport/ |
   | Max. pr

[jira] [Commented] (HADOOP-18521) ABFS ReadBufferManager buffer sharing across concurrent HTTP requests

2022-11-28 Thread ASF GitHub Bot (Jira)


[ 
https://issues.apache.org/jira/browse/HADOOP-18521?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17640155#comment-17640155
 ] 

ASF GitHub Bot commented on HADOOP-18521:
-

steveloughran commented on code in PR #5117:
URL: https://github.com/apache/hadoop/pull/5117#discussion_r1033835902


##
hadoop-tools/hadoop-azure/src/test/resources/log4j.properties:
##
@@ -26,6 +26,8 @@ 
log4j.logger.org.apache.hadoop.fs.azure.AzureFileSystemThreadPoolExecutor=DEBUG
 log4j.logger.org.apache.hadoop.fs.azure.BlockBlobAppendStream=DEBUG
 
log4j.logger.org.apache.hadoop.fs.azurebfs.contracts.services.TracingService=TRACE
 log4j.logger.org.apache.hadoop.fs.azurebfs.services.AbfsClient=DEBUG
+log4j.logger.org.apache.hadoop.fs.azurebfs.services.ReadBufferManager=TRACE

Review Comment:
   it was...but we run the rest of the tests logging at debug, and i don't see 
the prefetcher being any chattier than the rest of the stack.





> ABFS ReadBufferManager buffer sharing across concurrent HTTP requests
> -
>
> Key: HADOOP-18521
> URL: https://issues.apache.org/jira/browse/HADOOP-18521
> Project: Hadoop Common
>  Issue Type: Bug
>  Components: fs/azure
>Affects Versions: 3.3.2, 3.3.3, 3.3.4
>Reporter: Steve Loughran
>Assignee: Steve Loughran
>Priority: Critical
>  Labels: pull-request-available
>
> AbfsInputStream.close() can trigger the return of buffers used for active 
> prefetch GET requests into the ReadBufferManager free buffer pool.
> A subsequent prefetch by a different stream in the same process may acquire 
> this same buffer. This can lead to risk of corruption of its own prefetched 
> data, data which may then be returned to that other thread.
> On releases without the fix for this (3.3.2+), the bug can be avoided by 
> disabling all prefetching 
> {code}
> fs.azure.readaheadqueue.depth = 0
> {code}



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

-
To unsubscribe, e-mail: common-issues-unsubscr...@hadoop.apache.org
For additional commands, e-mail: common-issues-h...@hadoop.apache.org



[jira] [Commented] (HADOOP-18521) ABFS ReadBufferManager buffer sharing across concurrent HTTP requests

2022-11-28 Thread ASF GitHub Bot (Jira)


[ 
https://issues.apache.org/jira/browse/HADOOP-18521?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17640153#comment-17640153
 ] 

ASF GitHub Bot commented on HADOOP-18521:
-

steveloughran commented on code in PR #5117:
URL: https://github.com/apache/hadoop/pull/5117#discussion_r1033833635


##
hadoop-tools/hadoop-azure/src/main/java/org/apache/hadoop/fs/azurebfs/services/AbfsInputStream.java:
##
@@ -555,7 +579,7 @@ int readRemote(long position, byte[] b, int offset, int 
length, TracingContext t
   throw new FileNotFoundException(ere.getMessage());
 }
   }
-  throw new IOException(ex);
+  throw ex;

Review Comment:
   i haven't
   ```
   class AzureBlobFileSystemException extends IOException 
   ```
   just removed one layer of wrapping so hive is less likely to lose the stack 
trace





> ABFS ReadBufferManager buffer sharing across concurrent HTTP requests
> -
>
> Key: HADOOP-18521
> URL: https://issues.apache.org/jira/browse/HADOOP-18521
> Project: Hadoop Common
>  Issue Type: Bug
>  Components: fs/azure
>Affects Versions: 3.3.2, 3.3.3, 3.3.4
>Reporter: Steve Loughran
>Assignee: Steve Loughran
>Priority: Critical
>  Labels: pull-request-available
>
> AbfsInputStream.close() can trigger the return of buffers used for active 
> prefetch GET requests into the ReadBufferManager free buffer pool.
> A subsequent prefetch by a different stream in the same process may acquire 
> this same buffer. This can lead to risk of corruption of its own prefetched 
> data, data which may then be returned to that other thread.
> On releases without the fix for this (3.3.2+), the bug can be avoided by 
> disabling all prefetching 
> {code}
> fs.azure.readaheadqueue.depth = 0
> {code}



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

-
To unsubscribe, e-mail: common-issues-unsubscr...@hadoop.apache.org
For additional commands, e-mail: common-issues-h...@hadoop.apache.org



[jira] [Commented] (HADOOP-18521) ABFS ReadBufferManager buffer sharing across concurrent HTTP requests

2022-11-28 Thread ASF GitHub Bot (Jira)


[ 
https://issues.apache.org/jira/browse/HADOOP-18521?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17639973#comment-17639973
 ] 

ASF GitHub Bot commented on HADOOP-18521:
-

anmolanmol1234 commented on code in PR #5117:
URL: https://github.com/apache/hadoop/pull/5117#discussion_r1033433849


##
hadoop-tools/hadoop-azure/src/main/java/org/apache/hadoop/fs/azurebfs/services/ReadBufferManager.java:
##
@@ -302,33 +325,33 @@ private synchronized boolean tryEvict() {
   }
 
   private boolean evict(final ReadBuffer buf) {
-// As failed ReadBuffers (bufferIndx = -1) are saved in completedReadList,
-// avoid adding it to freeList.
-if (buf.getBufferindex() != -1) {
-  freeList.push(buf.getBufferindex());
-}
-
-completedReadList.remove(buf);
 buf.setTracingContext(null);
 if (LOGGER.isTraceEnabled()) {
   LOGGER.trace("Evicting buffer idx {}; was used for file {} offset {} 
length {}",
   buf.getBufferindex(), buf.getStream().getPath(), buf.getOffset(), 
buf.getLength());
 }
+completedReadList.remove(buf);

Review Comment:
   Can you please highlight again why should we not remove the buffer from the 
completed list after it has been added to the free list ?





> ABFS ReadBufferManager buffer sharing across concurrent HTTP requests
> -
>
> Key: HADOOP-18521
> URL: https://issues.apache.org/jira/browse/HADOOP-18521
> Project: Hadoop Common
>  Issue Type: Bug
>  Components: fs/azure
>Affects Versions: 3.3.2, 3.3.3, 3.3.4
>Reporter: Steve Loughran
>Assignee: Steve Loughran
>Priority: Critical
>  Labels: pull-request-available
>
> AbfsInputStream.close() can trigger the return of buffers used for active 
> prefetch GET requests into the ReadBufferManager free buffer pool.
> A subsequent prefetch by a different stream in the same process may acquire 
> this same buffer. This can lead to risk of corruption of its own prefetched 
> data, data which may then be returned to that other thread.
> On releases without the fix for this (3.3.2+), the bug can be avoided by 
> disabling all prefetching 
> {code}
> fs.azure.readaheadqueue.depth = 0
> {code}



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

-
To unsubscribe, e-mail: common-issues-unsubscr...@hadoop.apache.org
For additional commands, e-mail: common-issues-h...@hadoop.apache.org



[jira] [Commented] (HADOOP-18521) ABFS ReadBufferManager buffer sharing across concurrent HTTP requests

2022-11-28 Thread ASF GitHub Bot (Jira)


[ 
https://issues.apache.org/jira/browse/HADOOP-18521?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17639972#comment-17639972
 ] 

ASF GitHub Bot commented on HADOOP-18521:
-

anmolanmol1234 commented on code in PR #5117:
URL: https://github.com/apache/hadoop/pull/5117#discussion_r1033420242


##
hadoop-tools/hadoop-azure/src/main/java/org/apache/hadoop/fs/azurebfs/services/AbfsInputStream.java:
##
@@ -555,7 +579,7 @@ int readRemote(long position, byte[] b, int offset, int 
length, TracingContext t
   throw new FileNotFoundException(ere.getMessage());
 }
   }
-  throw new IOException(ex);
+  throw ex;

Review Comment:
   Any specific reason for changing the exception type from IOException to 
AzureBlobFileSystemException ? 



##
hadoop-tools/hadoop-azure/src/test/java/org/apache/hadoop/fs/azurebfs/services/TestAbfsInputStream.java:
##
@@ -851,4 +880,67 @@ private void resetReadBufferManager(int bufferSize, int 
threshold) {
 // by successive tests can lead to OOM based on the dev VM/machine 
capacity.
 System.gc();
   }
+
+  /**
+   * The first readahead closes the stream.
+   */
+  @Test
+  public void testStreamCloseInFirstReadAhead() throws Exception {
+describe("close a stream during prefetch, verify outcome is good");
+
+AbfsClient client = getMockAbfsClient();
+AbfsRestOperation successOp = getMockRestOp();
+
+AbfsInputStream inputStream = getAbfsInputStream(client, getMethodName());
+ReadBufferManager bufferManager = ReadBufferManager.getBufferManager();
+
+final long initialInProgressBlocksDiscarded = 
bufferManager.getInProgressBlocksDiscarded();
+
+// on first read, the op succeeds but the stream is closed, which
+// means that the request should be considered a failure
+doAnswer(invocation -> {
+  LOG.info("in read call with {}", inputStream);
+  inputStream.close();
+  return successOp;
+}).doReturn(successOp)
+.when(client)
+.read(any(String.class), any(Long.class), any(byte[].class),
+any(Integer.class), any(Integer.class), any(String.class),
+any(String.class), any(TracingContext.class));
+
+// kick these off before the read() to avoid various race conditions.
+queueReadAheads(inputStream);
+
+// AbfsInputStream Read would have waited for the read-ahead for the 
requested offset
+// as we are testing from ReadAheadManager directly, sleep for a sec to
+// get the read ahead threads to complete
+waitForPrefetchCompletion();
+
+// this triggers prefetching, which closes the stream while the read
+// is queued. which causes the prefetch to not return.
+// which triggers a blocking read, which will then fail.
+intercept(PathIOException.class, FSExceptionMessages.STREAM_IS_CLOSED, () 
-> {
+  // should fail
+  int bytesRead = inputStream.read(new byte[ONE_KB]);
+  // diagnostics info if failure wasn't raised
+  return "read " + bytesRead + " bytes from " + inputStream;
+});
+
+Assertions.assertThat(bufferManager.getCompletedReadListCopy())
+.filteredOn(rb -> rb.getStream() == inputStream)
+.describedAs("list of completed reads")
+.isEmpty();
+IOStatisticsStore ios = inputStream.getIOStatistics();
+assertThatStatisticCounter(ios, STREAM_READ_PREFETCH_BLOCKS_DISCARDED)
+.describedAs("blocks discarded by %s", inputStream)
+.isGreaterThan(0);
+
+// at least one of the blocks was discarded in progress.
+// this is guaranteed because the mockito callback must have been invoked
+// by the prefetcher
+Assertions.assertThat(bufferManager.getInProgressBlocksDiscarded())
+.describedAs("in progress blocks discarded")
+.isGreaterThan(initialInProgressBlocksDiscarded);
+  }
+
 }

Review Comment:
   nit: Add line at the end of the file.



##
hadoop-tools/hadoop-azure/src/test/resources/log4j.properties:
##
@@ -26,6 +26,8 @@ 
log4j.logger.org.apache.hadoop.fs.azure.AzureFileSystemThreadPoolExecutor=DEBUG
 log4j.logger.org.apache.hadoop.fs.azure.BlockBlobAppendStream=DEBUG
 
log4j.logger.org.apache.hadoop.fs.azurebfs.contracts.services.TracingService=TRACE
 log4j.logger.org.apache.hadoop.fs.azurebfs.services.AbfsClient=DEBUG
+log4j.logger.org.apache.hadoop.fs.azurebfs.services.ReadBufferManager=TRACE

Review Comment:
   Was this added for testing as this might add a lot of logging ?



##
hadoop-tools/hadoop-azure/src/main/java/org/apache/hadoop/fs/azurebfs/services/ReadBuffer.java:
##
@@ -162,4 +182,120 @@ public void setAnyByteConsumed(boolean isAnyByteConsumed) 
{
 this.isAnyByteConsumed = isAnyByteConsumed;
   }
 
+  @Override
+  public String toString() {
+return super.toString() +
+"{ status=" + status +
+", offset=" + offset +
+", length=" + length +
+   

[jira] [Commented] (HADOOP-18521) ABFS ReadBufferManager buffer sharing across concurrent HTTP requests

2022-11-28 Thread ASF GitHub Bot (Jira)


[ 
https://issues.apache.org/jira/browse/HADOOP-18521?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17639959#comment-17639959
 ] 

ASF GitHub Bot commented on HADOOP-18521:
-

anmolanmol1234 commented on code in PR #5117:
URL: https://github.com/apache/hadoop/pull/5117#discussion_r1033415579


##
hadoop-tools/hadoop-azure/src/main/java/org/apache/hadoop/fs/azurebfs/services/ReadBufferStreamOperations.java:
##
@@ -0,0 +1,70 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.hadoop.fs.azurebfs.services;
+
+import java.io.IOException;
+
+import org.apache.hadoop.fs.azurebfs.utils.TracingContext;
+import org.apache.hadoop.fs.statistics.impl.IOStatisticsStore;
+
+/**
+ * Interface which is required for read buffer stream
+ * calls.
+ * Extracted from {@code AbfsInputStream} to make testing
+ * easier and to isolate what operations the read buffer
+ * makes of the streams using it.
+ */
+interface ReadBufferStreamOperations {
+
+  /**
+   * Read a block from the store.
+   * @param position position in file
+   * @param b destination buffer.
+   * @param offset offset in buffer
+   * @param length length of read
+   * @param tracingContext trace context
+   * @return count of bytes read.
+   * @throws IOException failure.
+   */
+  int readRemote(long position,
+  byte[] b,
+  int offset,
+  int length,
+  TracingContext tracingContext) throws IOException;
+
+  /**
+   * Is the stream closed?
+   * This must be thread safe as prefetch operations in
+   * different threads probe this before closure.
+   * @return true if the stream has been closed.
+   */
+  boolean isClosed();
+
+  String getStreamID();
+
+  IOStatisticsStore getIOStatistics();
+
+  /**
+   * Get the stream path as a string.
+   * @return path string.
+   */
+  String getPath();
+

Review Comment:
   nit: Additional line, can be removed





> ABFS ReadBufferManager buffer sharing across concurrent HTTP requests
> -
>
> Key: HADOOP-18521
> URL: https://issues.apache.org/jira/browse/HADOOP-18521
> Project: Hadoop Common
>  Issue Type: Bug
>  Components: fs/azure
>Affects Versions: 3.3.2, 3.3.3, 3.3.4
>Reporter: Steve Loughran
>Assignee: Steve Loughran
>Priority: Critical
>  Labels: pull-request-available
>
> AbfsInputStream.close() can trigger the return of buffers used for active 
> prefetch GET requests into the ReadBufferManager free buffer pool.
> A subsequent prefetch by a different stream in the same process may acquire 
> this same buffer. This can lead to risk of corruption of its own prefetched 
> data, data which may then be returned to that other thread.
> On releases without the fix for this (3.3.2+), the bug can be avoided by 
> disabling all prefetching 
> {code}
> fs.azure.readaheadqueue.depth = 0
> {code}



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

-
To unsubscribe, e-mail: common-issues-unsubscr...@hadoop.apache.org
For additional commands, e-mail: common-issues-h...@hadoop.apache.org



[jira] [Commented] (HADOOP-18521) ABFS ReadBufferManager buffer sharing across concurrent HTTP requests

2022-11-28 Thread ASF GitHub Bot (Jira)


[ 
https://issues.apache.org/jira/browse/HADOOP-18521?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17639958#comment-17639958
 ] 

ASF GitHub Bot commented on HADOOP-18521:
-

anmolanmol1234 commented on code in PR #5117:
URL: https://github.com/apache/hadoop/pull/5117#discussion_r1033415579


##
hadoop-tools/hadoop-azure/src/main/java/org/apache/hadoop/fs/azurebfs/services/ReadBufferStreamOperations.java:
##
@@ -0,0 +1,70 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.hadoop.fs.azurebfs.services;
+
+import java.io.IOException;
+
+import org.apache.hadoop.fs.azurebfs.utils.TracingContext;
+import org.apache.hadoop.fs.statistics.impl.IOStatisticsStore;
+
+/**
+ * Interface which is required for read buffer stream
+ * calls.
+ * Extracted from {@code AbfsInputStream} to make testing
+ * easier and to isolate what operations the read buffer
+ * makes of the streams using it.
+ */
+interface ReadBufferStreamOperations {
+
+  /**
+   * Read a block from the store.
+   * @param position position in file
+   * @param b destination buffer.
+   * @param offset offset in buffer
+   * @param length length of read
+   * @param tracingContext trace context
+   * @return count of bytes read.
+   * @throws IOException failure.
+   */
+  int readRemote(long position,
+  byte[] b,
+  int offset,
+  int length,
+  TracingContext tracingContext) throws IOException;
+
+  /**
+   * Is the stream closed?
+   * This must be thread safe as prefetch operations in
+   * different threads probe this before closure.
+   * @return true if the stream has been closed.
+   */
+  boolean isClosed();
+
+  String getStreamID();
+
+  IOStatisticsStore getIOStatistics();
+
+  /**
+   * Get the stream path as a string.
+   * @return path string.
+   */
+  String getPath();
+

Review Comment:
   Additional line, can be removed





> ABFS ReadBufferManager buffer sharing across concurrent HTTP requests
> -
>
> Key: HADOOP-18521
> URL: https://issues.apache.org/jira/browse/HADOOP-18521
> Project: Hadoop Common
>  Issue Type: Bug
>  Components: fs/azure
>Affects Versions: 3.3.2, 3.3.3, 3.3.4
>Reporter: Steve Loughran
>Assignee: Steve Loughran
>Priority: Critical
>  Labels: pull-request-available
>
> AbfsInputStream.close() can trigger the return of buffers used for active 
> prefetch GET requests into the ReadBufferManager free buffer pool.
> A subsequent prefetch by a different stream in the same process may acquire 
> this same buffer. This can lead to risk of corruption of its own prefetched 
> data, data which may then be returned to that other thread.
> On releases without the fix for this (3.3.2+), the bug can be avoided by 
> disabling all prefetching 
> {code}
> fs.azure.readaheadqueue.depth = 0
> {code}



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

-
To unsubscribe, e-mail: common-issues-unsubscr...@hadoop.apache.org
For additional commands, e-mail: common-issues-h...@hadoop.apache.org



[jira] [Commented] (HADOOP-18521) ABFS ReadBufferManager buffer sharing across concurrent HTTP requests

2022-11-28 Thread ASF GitHub Bot (Jira)


[ 
https://issues.apache.org/jira/browse/HADOOP-18521?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17639950#comment-17639950
 ] 

ASF GitHub Bot commented on HADOOP-18521:
-

pranavsaxena-microsoft commented on code in PR #5117:
URL: https://github.com/apache/hadoop/pull/5117#discussion_r1033198624


##
hadoop-tools/hadoop-azure/src/main/java/org/apache/hadoop/fs/azurebfs/services/ReadBufferManager.java:
##
@@ -454,31 +597,86 @@ ReadBuffer getNextBlockToRead() throws 
InterruptedException {
*/
   void doneReading(final ReadBuffer buffer, final ReadBufferStatus result, 
final int bytesActuallyRead) {
 if (LOGGER.isTraceEnabled()) {
-  LOGGER.trace("ReadBufferWorker completed read file {} for offset {} 
outcome {} bytes {}",
-  buffer.getStream().getPath(),  buffer.getOffset(), result, 
bytesActuallyRead);
-}
-synchronized (this) {
-  // If this buffer has already been purged during
-  // close of InputStream then we don't update the lists.
-  if (inProgressList.contains(buffer)) {
-inProgressList.remove(buffer);
-if (result == ReadBufferStatus.AVAILABLE && bytesActuallyRead > 0) {
-  buffer.setStatus(ReadBufferStatus.AVAILABLE);
-  buffer.setLength(bytesActuallyRead);
-} else {
-  freeList.push(buffer.getBufferindex());
-  // buffer will be deleted as per the eviction policy.
+  LOGGER.trace("ReadBufferWorker completed file {} for offset {} bytes {}; 
{}",
+  buffer.getStream().getPath(),  buffer.getOffset(), 
bytesActuallyRead, buffer);
+}
+// decrement counter.
+buffer.prefetchFinished();
+
+try {
+  synchronized (this) {
+// remove from the list
+if (!inProgressList.remove(buffer)) {
+  // this is a sign of inconsistent state, so a major problem, such as
+  // double invocation of this method with the same buffer.
+  String message =
+  String.format("Read completed from an operation not declared as 
in progress %s",
+  buffer);
+  LOGGER.warn(message);
+  if (buffer.hasIndexedBuffer()) {
+// release the buffer (which may raise an exception)
+placeBufferOnFreeList("read not in progress", buffer);
+  }
+  // report the failure
+  throw new IllegalStateException(message);
 }
-// completed list also contains FAILED read buffers
-// for sending exception message to clients.
+
+// should the read buffer be added to the completed list?
+boolean addCompleted = true;
+// flag to indicate buffer should be freed
+boolean shouldFreeBuffer = false;
+// and the reason (for logging)
+String freeBufferReason = "";
+
 buffer.setStatus(result);
 buffer.setTimeStamp(currentTimeMillis());
-completedReadList.add(buffer);
+// did the read return any data?
+if (result == ReadBufferStatus.AVAILABLE
+&& bytesActuallyRead > 0) {
+  // successful read of data; update buffer state.
+  buffer.setLength(bytesActuallyRead);
+} else {
+  // read failed or there was no data; the buffer can be returned to 
the free list.
+  shouldFreeBuffer = true;
+  freeBufferReason = "failed read";
+  // completed list also contains FAILED read buffers
+  // for sending exception message to clients.
+  // NOTE: checks for closed state may update this.
+  addCompleted = result == ReadBufferStatus.READ_FAILED;

Review Comment:
   Should we not add the buffer in completedList. Reason being it will always 
be removed from the list via oldFailedBuffers removal. Kindly suggest if there 
is a reason for adding it. Thanks.





> ABFS ReadBufferManager buffer sharing across concurrent HTTP requests
> -
>
> Key: HADOOP-18521
> URL: https://issues.apache.org/jira/browse/HADOOP-18521
> Project: Hadoop Common
>  Issue Type: Bug
>  Components: fs/azure
>Affects Versions: 3.3.2, 3.3.3, 3.3.4
>Reporter: Steve Loughran
>Assignee: Steve Loughran
>Priority: Critical
>  Labels: pull-request-available
>
> AbfsInputStream.close() can trigger the return of buffers used for active 
> prefetch GET requests into the ReadBufferManager free buffer pool.
> A subsequent prefetch by a different stream in the same process may acquire 
> this same buffer. This can lead to risk of corruption of its own prefetched 
> data, data which may then be returned to that other thread.
> On releases without the fix for this (3.3.2+), the bug can be avoided by 
> disabling all prefetching 
> {code}
> fs.azure.readaheadqueue.depth = 0
> {code}



--
This message

[jira] [Commented] (HADOOP-18521) ABFS ReadBufferManager buffer sharing across concurrent HTTP requests

2022-11-28 Thread ASF GitHub Bot (Jira)


[ 
https://issues.apache.org/jira/browse/HADOOP-18521?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17639905#comment-17639905
 ] 

ASF GitHub Bot commented on HADOOP-18521:
-

pranavsaxena-microsoft commented on code in PR #5117:
URL: https://github.com/apache/hadoop/pull/5117#discussion_r1033198624


##
hadoop-tools/hadoop-azure/src/main/java/org/apache/hadoop/fs/azurebfs/services/ReadBufferManager.java:
##
@@ -454,31 +597,86 @@ ReadBuffer getNextBlockToRead() throws 
InterruptedException {
*/
   void doneReading(final ReadBuffer buffer, final ReadBufferStatus result, 
final int bytesActuallyRead) {
 if (LOGGER.isTraceEnabled()) {
-  LOGGER.trace("ReadBufferWorker completed read file {} for offset {} 
outcome {} bytes {}",
-  buffer.getStream().getPath(),  buffer.getOffset(), result, 
bytesActuallyRead);
-}
-synchronized (this) {
-  // If this buffer has already been purged during
-  // close of InputStream then we don't update the lists.
-  if (inProgressList.contains(buffer)) {
-inProgressList.remove(buffer);
-if (result == ReadBufferStatus.AVAILABLE && bytesActuallyRead > 0) {
-  buffer.setStatus(ReadBufferStatus.AVAILABLE);
-  buffer.setLength(bytesActuallyRead);
-} else {
-  freeList.push(buffer.getBufferindex());
-  // buffer will be deleted as per the eviction policy.
+  LOGGER.trace("ReadBufferWorker completed file {} for offset {} bytes {}; 
{}",
+  buffer.getStream().getPath(),  buffer.getOffset(), 
bytesActuallyRead, buffer);
+}
+// decrement counter.
+buffer.prefetchFinished();
+
+try {
+  synchronized (this) {
+// remove from the list
+if (!inProgressList.remove(buffer)) {
+  // this is a sign of inconsistent state, so a major problem, such as
+  // double invocation of this method with the same buffer.
+  String message =
+  String.format("Read completed from an operation not declared as 
in progress %s",
+  buffer);
+  LOGGER.warn(message);
+  if (buffer.hasIndexedBuffer()) {
+// release the buffer (which may raise an exception)
+placeBufferOnFreeList("read not in progress", buffer);
+  }
+  // report the failure
+  throw new IllegalStateException(message);
 }
-// completed list also contains FAILED read buffers
-// for sending exception message to clients.
+
+// should the read buffer be added to the completed list?
+boolean addCompleted = true;
+// flag to indicate buffer should be freed
+boolean shouldFreeBuffer = false;
+// and the reason (for logging)
+String freeBufferReason = "";
+
 buffer.setStatus(result);
 buffer.setTimeStamp(currentTimeMillis());
-completedReadList.add(buffer);
+// did the read return any data?
+if (result == ReadBufferStatus.AVAILABLE
+&& bytesActuallyRead > 0) {
+  // successful read of data; update buffer state.
+  buffer.setLength(bytesActuallyRead);
+} else {
+  // read failed or there was no data; the buffer can be returned to 
the free list.
+  shouldFreeBuffer = true;
+  freeBufferReason = "failed read";
+  // completed list also contains FAILED read buffers
+  // for sending exception message to clients.
+  // NOTE: checks for closed state may update this.
+  addCompleted = result == ReadBufferStatus.READ_FAILED;

Review Comment:
   Should we not add the buffer in completedList. Reason being it will always 
be removed from the list via oldFailedBuffers removal. Kindly suggest if there 
is a reason for adding it. Thanks.





> ABFS ReadBufferManager buffer sharing across concurrent HTTP requests
> -
>
> Key: HADOOP-18521
> URL: https://issues.apache.org/jira/browse/HADOOP-18521
> Project: Hadoop Common
>  Issue Type: Bug
>  Components: fs/azure
>Affects Versions: 3.3.2, 3.3.3, 3.3.4
>Reporter: Steve Loughran
>Assignee: Steve Loughran
>Priority: Critical
>  Labels: pull-request-available
>
> AbfsInputStream.close() can trigger the return of buffers used for active 
> prefetch GET requests into the ReadBufferManager free buffer pool.
> A subsequent prefetch by a different stream in the same process may acquire 
> this same buffer. This can lead to risk of corruption of its own prefetched 
> data, data which may then be returned to that other thread.
> On releases without the fix for this (3.3.2+), the bug can be avoided by 
> disabling all prefetching 
> {code}
> fs.azure.readaheadqueue.depth = 0
> {code}



--
This message

[jira] [Commented] (HADOOP-18521) ABFS ReadBufferManager buffer sharing across concurrent HTTP requests

2022-11-25 Thread ASF GitHub Bot (Jira)


[ 
https://issues.apache.org/jira/browse/HADOOP-18521?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17638780#comment-17638780
 ] 

ASF GitHub Bot commented on HADOOP-18521:
-

hadoop-yetus commented on PR #5117:
URL: https://github.com/apache/hadoop/pull/5117#issuecomment-1327901575

   :confetti_ball: **+1 overall**
   
   
   
   
   
   
   | Vote | Subsystem | Runtime |  Logfile | Comment |
   |::|--:|:|::|:---:|
   | +0 :ok: |  reexec  |   0m 56s |  |  Docker mode activated.  |
    _ Prechecks _ |
   | +1 :green_heart: |  dupname  |   0m  0s |  |  No case conflicting files 
found.  |
   | +0 :ok: |  codespell  |   0m  1s |  |  codespell was not available.  |
   | +0 :ok: |  detsecrets  |   0m  1s |  |  detect-secrets was not available.  
|
   | +1 :green_heart: |  @author  |   0m  0s |  |  The patch does not contain 
any @author tags.  |
   | +1 :green_heart: |  test4tests  |   0m  0s |  |  The patch appears to 
include 6 new or modified test files.  |
    _ trunk Compile Tests _ |
   | +0 :ok: |  mvndep  |  16m 56s |  |  Maven dependency ordering for branch  |
   | +1 :green_heart: |  mvninstall  |  26m 26s |  |  trunk passed  |
   | +1 :green_heart: |  compile  |  23m 44s |  |  trunk passed with JDK 
Ubuntu-11.0.16+8-post-Ubuntu-0ubuntu120.04  |
   | +1 :green_heart: |  compile  |  21m  1s |  |  trunk passed with JDK 
Private Build-1.8.0_342-8u342-b07-0ubuntu1~20.04-b07  |
   | +1 :green_heart: |  checkstyle  |   4m 17s |  |  trunk passed  |
   | +1 :green_heart: |  mvnsite  |   3m 21s |  |  trunk passed  |
   | +1 :green_heart: |  javadoc  |   2m 37s |  |  trunk passed with JDK 
Ubuntu-11.0.16+8-post-Ubuntu-0ubuntu120.04  |
   | +1 :green_heart: |  javadoc  |   2m  9s |  |  trunk passed with JDK 
Private Build-1.8.0_342-8u342-b07-0ubuntu1~20.04-b07  |
   | +1 :green_heart: |  spotbugs  |   4m 34s |  |  trunk passed  |
   | +1 :green_heart: |  shadedclient  |  21m 50s |  |  branch has no errors 
when building and testing our client artifacts.  |
    _ Patch Compile Tests _ |
   | +0 :ok: |  mvndep  |   0m 29s |  |  Maven dependency ordering for patch  |
   | +1 :green_heart: |  mvninstall  |   1m 39s |  |  the patch passed  |
   | +1 :green_heart: |  compile  |  22m 36s |  |  the patch passed with JDK 
Ubuntu-11.0.16+8-post-Ubuntu-0ubuntu120.04  |
   | +1 :green_heart: |  javac  |  22m 36s |  |  the patch passed  |
   | +1 :green_heart: |  compile  |  20m 55s |  |  the patch passed with JDK 
Private Build-1.8.0_342-8u342-b07-0ubuntu1~20.04-b07  |
   | +1 :green_heart: |  javac  |  20m 55s |  |  the patch passed  |
   | +1 :green_heart: |  blanks  |   0m  0s |  |  The patch has no blanks 
issues.  |
   | -0 :warning: |  checkstyle  |   4m  1s | 
[/results-checkstyle-root.txt](https://ci-hadoop.apache.org/job/hadoop-multibranch/job/PR-5117/6/artifact/out/results-checkstyle-root.txt)
 |  root: The patch generated 38 new + 1 unchanged - 0 fixed = 39 total (was 1) 
 |
   | +1 :green_heart: |  mvnsite  |   3m  7s |  |  the patch passed  |
   | +1 :green_heart: |  javadoc  |   2m 30s |  |  the patch passed with JDK 
Ubuntu-11.0.16+8-post-Ubuntu-0ubuntu120.04  |
   | +1 :green_heart: |  javadoc  |   1m 59s |  |  the patch passed with JDK 
Private Build-1.8.0_342-8u342-b07-0ubuntu1~20.04-b07  |
   | +1 :green_heart: |  spotbugs  |   4m 33s |  |  the patch passed  |
   | +1 :green_heart: |  shadedclient  |  21m 47s |  |  patch has no errors 
when building and testing our client artifacts.  |
    _ Other Tests _ |
   | +1 :green_heart: |  unit  |  18m 42s |  |  hadoop-common in the patch 
passed.  |
   | +1 :green_heart: |  unit  |   2m 43s |  |  hadoop-azure in the patch 
passed.  |
   | +1 :green_heart: |  asflicense  |   1m 24s |  |  The patch does not 
generate ASF License warnings.  |
   |  |   | 239m 28s |  |  |
   
   
   | Subsystem | Report/Notes |
   |--:|:-|
   | Docker | ClientAPI=1.41 ServerAPI=1.41 base: 
https://ci-hadoop.apache.org/job/hadoop-multibranch/job/PR-5117/6/artifact/out/Dockerfile
 |
   | GITHUB PR | https://github.com/apache/hadoop/pull/5117 |
   | Optional Tests | dupname asflicense compile javac javadoc mvninstall 
mvnsite unit shadedclient spotbugs checkstyle codespell detsecrets |
   | uname | Linux 8beba5d39166 4.15.0-191-generic #202-Ubuntu SMP Thu Aug 4 
01:49:29 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux |
   | Build tool | maven |
   | Personality | dev-support/bin/hadoop.sh |
   | git revision | trunk / f72ad51e28eb52321c5be354db1f2cc08771a25d |
   | Default Java | Private Build-1.8.0_342-8u342-b07-0ubuntu1~20.04-b07 |
   | Multi-JDK versions | 
/usr/lib/jvm/java-11-openjdk-amd64:Ubuntu-11.0.16+8-post-Ubuntu-0ubuntu120.04 
/usr/lib/jvm/java-8-openjdk-amd64:Private 
Build-1.8.0_342-8u342-b07-0ubuntu1~20.04-b07 |
   |  Test Results | 
https://ci-hadoop.apache.org/job/hadoop-multibranch/job/PR-5117/6/testReport/ |
   | Max. pr

[jira] [Commented] (HADOOP-18521) ABFS ReadBufferManager buffer sharing across concurrent HTTP requests

2022-11-25 Thread ASF GitHub Bot (Jira)


[ 
https://issues.apache.org/jira/browse/HADOOP-18521?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17638677#comment-17638677
 ] 

ASF GitHub Bot commented on HADOOP-18521:
-

hadoop-yetus commented on PR #5117:
URL: https://github.com/apache/hadoop/pull/5117#issuecomment-1327598664

   :confetti_ball: **+1 overall**
   
   
   
   
   
   
   | Vote | Subsystem | Runtime |  Logfile | Comment |
   |::|--:|:|::|:---:|
   | +0 :ok: |  reexec  |   0m 50s |  |  Docker mode activated.  |
    _ Prechecks _ |
   | +1 :green_heart: |  dupname  |   0m  0s |  |  No case conflicting files 
found.  |
   | +0 :ok: |  codespell  |   0m  1s |  |  codespell was not available.  |
   | +0 :ok: |  detsecrets  |   0m  1s |  |  detect-secrets was not available.  
|
   | +1 :green_heart: |  @author  |   0m  0s |  |  The patch does not contain 
any @author tags.  |
   | +1 :green_heart: |  test4tests  |   0m  0s |  |  The patch appears to 
include 5 new or modified test files.  |
    _ trunk Compile Tests _ |
   | +0 :ok: |  mvndep  |  15m 56s |  |  Maven dependency ordering for branch  |
   | +1 :green_heart: |  mvninstall  |  26m 18s |  |  trunk passed  |
   | +1 :green_heart: |  compile  |  23m 35s |  |  trunk passed with JDK 
Ubuntu-11.0.16+8-post-Ubuntu-0ubuntu120.04  |
   | +1 :green_heart: |  compile  |  20m 56s |  |  trunk passed with JDK 
Private Build-1.8.0_342-8u342-b07-0ubuntu1~20.04-b07  |
   | +1 :green_heart: |  checkstyle  |   4m  7s |  |  trunk passed  |
   | +1 :green_heart: |  mvnsite  |   3m  4s |  |  trunk passed  |
   | +1 :green_heart: |  javadoc  |   2m 43s |  |  trunk passed with JDK 
Ubuntu-11.0.16+8-post-Ubuntu-0ubuntu120.04  |
   | +1 :green_heart: |  javadoc  |   1m 58s |  |  trunk passed with JDK 
Private Build-1.8.0_342-8u342-b07-0ubuntu1~20.04-b07  |
   | +1 :green_heart: |  spotbugs  |   4m 36s |  |  trunk passed  |
   | +1 :green_heart: |  shadedclient  |  21m 58s |  |  branch has no errors 
when building and testing our client artifacts.  |
    _ Patch Compile Tests _ |
   | +0 :ok: |  mvndep  |   0m 31s |  |  Maven dependency ordering for patch  |
   | +1 :green_heart: |  mvninstall  |   1m 42s |  |  the patch passed  |
   | +1 :green_heart: |  compile  |  22m 46s |  |  the patch passed with JDK 
Ubuntu-11.0.16+8-post-Ubuntu-0ubuntu120.04  |
   | +1 :green_heart: |  javac  |  22m 46s |  |  the patch passed  |
   | +1 :green_heart: |  compile  |  21m  1s |  |  the patch passed with JDK 
Private Build-1.8.0_342-8u342-b07-0ubuntu1~20.04-b07  |
   | +1 :green_heart: |  javac  |  21m  1s |  |  the patch passed  |
   | +1 :green_heart: |  blanks  |   0m  0s |  |  The patch has no blanks 
issues.  |
   | -0 :warning: |  checkstyle  |   3m 54s | 
[/results-checkstyle-root.txt](https://ci-hadoop.apache.org/job/hadoop-multibranch/job/PR-5117/5/artifact/out/results-checkstyle-root.txt)
 |  root: The patch generated 37 new + 1 unchanged - 0 fixed = 38 total (was 1) 
 |
   | +1 :green_heart: |  mvnsite  |   2m 58s |  |  the patch passed  |
   | +1 :green_heart: |  javadoc  |   2m 19s |  |  the patch passed with JDK 
Ubuntu-11.0.16+8-post-Ubuntu-0ubuntu120.04  |
   | +1 :green_heart: |  javadoc  |   2m 13s |  |  the patch passed with JDK 
Private Build-1.8.0_342-8u342-b07-0ubuntu1~20.04-b07  |
   | +1 :green_heart: |  spotbugs  |   4m 31s |  |  the patch passed  |
   | +1 :green_heart: |  shadedclient  |  22m  3s |  |  patch has no errors 
when building and testing our client artifacts.  |
    _ Other Tests _ |
   | +1 :green_heart: |  unit  |  18m 36s |  |  hadoop-common in the patch 
passed.  |
   | +1 :green_heart: |  unit  |   2m 45s |  |  hadoop-azure in the patch 
passed.  |
   | +1 :green_heart: |  asflicense  |   1m 22s |  |  The patch does not 
generate ASF License warnings.  |
   |  |   | 237m 48s |  |  |
   
   
   | Subsystem | Report/Notes |
   |--:|:-|
   | Docker | ClientAPI=1.41 ServerAPI=1.41 base: 
https://ci-hadoop.apache.org/job/hadoop-multibranch/job/PR-5117/5/artifact/out/Dockerfile
 |
   | GITHUB PR | https://github.com/apache/hadoop/pull/5117 |
   | Optional Tests | dupname asflicense compile javac javadoc mvninstall 
mvnsite unit shadedclient spotbugs checkstyle codespell detsecrets |
   | uname | Linux d6a7789fd8d3 4.15.0-191-generic #202-Ubuntu SMP Thu Aug 4 
01:49:29 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux |
   | Build tool | maven |
   | Personality | dev-support/bin/hadoop.sh |
   | git revision | trunk / 5415ba36518ee06540d75cc5248d989120e59fa8 |
   | Default Java | Private Build-1.8.0_342-8u342-b07-0ubuntu1~20.04-b07 |
   | Multi-JDK versions | 
/usr/lib/jvm/java-11-openjdk-amd64:Ubuntu-11.0.16+8-post-Ubuntu-0ubuntu120.04 
/usr/lib/jvm/java-8-openjdk-amd64:Private 
Build-1.8.0_342-8u342-b07-0ubuntu1~20.04-b07 |
   |  Test Results | 
https://ci-hadoop.apache.org/job/hadoop-multibranch/job/PR-5117/5/testReport/ |
   | Max. pr

[jira] [Commented] (HADOOP-18521) ABFS ReadBufferManager buffer sharing across concurrent HTTP requests

2022-11-24 Thread ASF GitHub Bot (Jira)


[ 
https://issues.apache.org/jira/browse/HADOOP-18521?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17638300#comment-17638300
 ] 

ASF GitHub Bot commented on HADOOP-18521:
-

steveloughran commented on code in PR #5133:
URL: https://github.com/apache/hadoop/pull/5133#discussion_r1031522202


##
hadoop-tools/hadoop-azure/src/main/java/org/apache/hadoop/fs/azurebfs/services/ReadBufferManager.java:
##
@@ -247,7 +247,7 @@ private synchronized boolean tryEvict() {
 
 // first, try buffers where all bytes have been consumed (approximated as 
first and last bytes consumed)
 for (ReadBuffer buf : completedReadList) {
-  if (buf.isFirstByteConsumed() && buf.isLastByteConsumed()) {
+  if (buf.getStream().isClosed() || (buf.isFirstByteConsumed() && 
buf.isLastByteConsumed())) {

Review Comment:
   this doesn't quite do the right thing as evict() is looking for a completed 
read with an allocated buffer. here it will also find any completed read whose 
buffer was released prematurely.
   
   i'm picking up this change in my pr, but including the check for having the 
buffer, so it will *only* pick up those records whose stream was closed after a 
successful read completed.





> ABFS ReadBufferManager buffer sharing across concurrent HTTP requests
> -
>
> Key: HADOOP-18521
> URL: https://issues.apache.org/jira/browse/HADOOP-18521
> Project: Hadoop Common
>  Issue Type: Bug
>  Components: fs/azure
>Affects Versions: 3.3.2, 3.3.3, 3.3.4
>Reporter: Steve Loughran
>Assignee: Steve Loughran
>Priority: Critical
>  Labels: pull-request-available
>
> AbfsInputStream.close() can trigger the return of buffers used for active 
> prefetch GET requests into the ReadBufferManager free buffer pool.
> A subsequent prefetch by a different stream in the same process may acquire 
> this same buffer. This can lead to risk of corruption of its own prefetched 
> data, data which may then be returned to that other thread.
> On releases without the fix for this (3.3.2+), the bug can be avoided by 
> disabling all prefetching 
> {code}
> fs.azure.readaheadqueue.depth = 0
> {code}



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

-
To unsubscribe, e-mail: common-issues-unsubscr...@hadoop.apache.org
For additional commands, e-mail: common-issues-h...@hadoop.apache.org



[jira] [Commented] (HADOOP-18521) ABFS ReadBufferManager buffer sharing across concurrent HTTP requests

2022-11-16 Thread ASF GitHub Bot (Jira)


[ 
https://issues.apache.org/jira/browse/HADOOP-18521?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17634944#comment-17634944
 ] 

ASF GitHub Bot commented on HADOOP-18521:
-

steveloughran commented on PR #5133:
URL: https://github.com/apache/hadoop/pull/5133#issuecomment-1317390002

   the big read manager changes should be a followup...what's good here is 
something lower risk and easier to backport




> ABFS ReadBufferManager buffer sharing across concurrent HTTP requests
> -
>
> Key: HADOOP-18521
> URL: https://issues.apache.org/jira/browse/HADOOP-18521
> Project: Hadoop Common
>  Issue Type: Bug
>  Components: fs/azure
>Affects Versions: 3.3.2, 3.3.3, 3.3.4
>Reporter: Steve Loughran
>Assignee: Steve Loughran
>Priority: Critical
>  Labels: pull-request-available
>
> AbfsInputStream.close() can trigger the return of buffers used for active 
> prefetch GET requests into the ReadBufferManager free buffer pool.
> A subsequent prefetch by a different stream in the same process may acquire 
> this same buffer. This can lead to risk of corruption of its own prefetched 
> data, data which may then be returned to that other thread.
> On releases without the fix for this (3.3.2+), the bug can be avoided by 
> disabling all prefetching 
> {code}
> fs.azure.readaheadqueue.depth = 0
> {code}



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

-
To unsubscribe, e-mail: common-issues-unsubscr...@hadoop.apache.org
For additional commands, e-mail: common-issues-h...@hadoop.apache.org



[jira] [Commented] (HADOOP-18521) ABFS ReadBufferManager buffer sharing across concurrent HTTP requests

2022-11-15 Thread ASF GitHub Bot (Jira)


[ 
https://issues.apache.org/jira/browse/HADOOP-18521?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17634407#comment-17634407
 ] 

ASF GitHub Bot commented on HADOOP-18521:
-

snvijaya commented on PR #5133:
URL: https://github.com/apache/hadoop/pull/5133#issuecomment-1315456701

   > Having spent the last couple of weeks staring at this code, I think what I 
would like from the module is
   > 
   > * per file system instance
   > * stats reporting to that fs (gauges on queues; actual fetch/hit/miss 
numbers could come via abfs input stream)
   > * demand creation of the buffer pool. Maybe when the last active stream is 
closed it could even free them all, no that at the reference counting problem 
to the mix.
   > * when an abfs input stream is created for vector/random IO, prefetch 
being automatically disabled.
   > * anything we can do to improve testing, especially simulation of heavy 
load from multiple tasks.
   
   Thanks for your inputs @steveloughran . Agree that all these apply for the 
long term transformation on the prefetch handling.  I am going to take a day 
and see what of these I can get into this change as well, but want to 
prioritize a hotfix and remove the buggy bit quickly.




> ABFS ReadBufferManager buffer sharing across concurrent HTTP requests
> -
>
> Key: HADOOP-18521
> URL: https://issues.apache.org/jira/browse/HADOOP-18521
> Project: Hadoop Common
>  Issue Type: Bug
>  Components: fs/azure
>Affects Versions: 3.3.2, 3.3.3, 3.3.4
>Reporter: Steve Loughran
>Assignee: Steve Loughran
>Priority: Critical
>  Labels: pull-request-available
>
> AbfsInputStream.close() can trigger the return of buffers used for active 
> prefetch GET requests into the ReadBufferManager free buffer pool.
> A subsequent prefetch by a different stream in the same process may acquire 
> this same buffer. This can lead to risk of corruption of its own prefetched 
> data, data which may then be returned to that other thread.
> On releases without the fix for this (3.3.2+), the bug can be avoided by 
> disabling all prefetching 
> {code}
> fs.azure.readaheadqueue.depth = 0
> {code}



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

-
To unsubscribe, e-mail: common-issues-unsubscr...@hadoop.apache.org
For additional commands, e-mail: common-issues-h...@hadoop.apache.org



[jira] [Commented] (HADOOP-18521) ABFS ReadBufferManager buffer sharing across concurrent HTTP requests

2022-11-14 Thread ASF GitHub Bot (Jira)


[ 
https://issues.apache.org/jira/browse/HADOOP-18521?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17633912#comment-17633912
 ] 

ASF GitHub Bot commented on HADOOP-18521:
-

steveloughran commented on PR #5117:
URL: https://github.com/apache/hadoop/pull/5117#issuecomment-1313988205

   see also #5134 which is the "disable readahead" patch for 3.3.5




> ABFS ReadBufferManager buffer sharing across concurrent HTTP requests
> -
>
> Key: HADOOP-18521
> URL: https://issues.apache.org/jira/browse/HADOOP-18521
> Project: Hadoop Common
>  Issue Type: Bug
>  Components: fs/azure
>Affects Versions: 3.3.2, 3.3.3, 3.3.4
>Reporter: Steve Loughran
>Assignee: Steve Loughran
>Priority: Critical
>  Labels: pull-request-available
>
> AbfsInputStream.close() can trigger the return of buffers used for active 
> prefetch GET requests into the ReadBufferManager free buffer pool.
> A subsequent prefetch by a different stream in the same process may acquire 
> this same buffer. This can lead to risk of corruption of its own prefetched 
> data, data which may then be returned to that other thread.
> On releases without the fix for this (3.3.2 to 3.3.4), the bug can be avoided 
> by disabling all prefetching 
> {code}
> fs.azure.readaheadqueue.depth = 0
> {code}



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

-
To unsubscribe, e-mail: common-issues-unsubscr...@hadoop.apache.org
For additional commands, e-mail: common-issues-h...@hadoop.apache.org



[jira] [Commented] (HADOOP-18521) ABFS ReadBufferManager buffer sharing across concurrent HTTP requests

2022-11-14 Thread ASF GitHub Bot (Jira)


[ 
https://issues.apache.org/jira/browse/HADOOP-18521?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17633807#comment-17633807
 ] 

ASF GitHub Bot commented on HADOOP-18521:
-

snvijaya commented on PR #5117:
URL: https://github.com/apache/hadoop/pull/5117#issuecomment-1313734822

   Hi @steveloughran, Wanted to get your opinion on below change as a possible 
replacement for this change :
   [https://github.com/apache/hadoop/pull/5133](url)
   
   A ReadBuffer with a valid Buffer assigned to it can be in certain states 
when stream is closed, and with the above change, I am trying to address it as 
below :
   1. Is in QueueReadAheadList - No change, the earlier purge takes care of it
   2. Is in CompletedList - No change again, the earlier purge takes care of it
   3. Is InProgressList but yet to make the network call - If stream is closed, 
stop network call and move the ReadBuffer as a failure into completed list
   4. Is InProgressList , just finished the network call - If stream is closed, 
network call was successful or not, move the ReadBuffer as a failure into 
completed list
   
   Now, when in state 3 or 4, the purge method might not pick it as it might 
have executed first. In that case, to prioritize these ReadBuffers for 
eviction, have added the check for stream is closed in the eviction code as 
well. 
   
   Please let me know if you see value in this fix and I could pursue further 
changes to incorporate validation code at queuing time and when getBlock finds 
a hit in completed list, and will also add related test code.




> ABFS ReadBufferManager buffer sharing across concurrent HTTP requests
> -
>
> Key: HADOOP-18521
> URL: https://issues.apache.org/jira/browse/HADOOP-18521
> Project: Hadoop Common
>  Issue Type: Bug
>  Components: fs/azure
>Affects Versions: 3.3.2, 3.3.3, 3.3.4
>Reporter: Steve Loughran
>Assignee: Steve Loughran
>Priority: Critical
>  Labels: pull-request-available
>
> AbfsInputStream.close() can trigger the return of buffers used for active 
> prefetch GET requests into the ReadBufferManager free buffer pool.
> A subsequent prefetch by a different stream in the same process may acquire 
> this same buffer. This can lead to risk of corruption of its own prefetched 
> data, data which may then be returned to that other thread.
> On releases without the fix for this (3.3.2 to 3.3.4), the bug can be avoided 
> by disabling all prefetching 
> {code}
> fs.azure.readaheadqueue.depth = 0
> {code}



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

-
To unsubscribe, e-mail: common-issues-unsubscr...@hadoop.apache.org
For additional commands, e-mail: common-issues-h...@hadoop.apache.org



[jira] [Commented] (HADOOP-18521) ABFS ReadBufferManager buffer sharing across concurrent HTTP requests

2022-11-11 Thread ASF GitHub Bot (Jira)


[ 
https://issues.apache.org/jira/browse/HADOOP-18521?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17632536#comment-17632536
 ] 

ASF GitHub Bot commented on HADOOP-18521:
-

steveloughran commented on PR #5117:
URL: https://github.com/apache/hadoop/pull/5117#issuecomment-1312096951

   thx for the comments; been away from this on the doc/replication side of 
this "issue" all week.  have been able to replicate the problem with avro 
parsing, though there it always fails at the parser; on csv/text records that's 
not guaranteed




> ABFS ReadBufferManager buffer sharing across concurrent HTTP requests
> -
>
> Key: HADOOP-18521
> URL: https://issues.apache.org/jira/browse/HADOOP-18521
> Project: Hadoop Common
>  Issue Type: Bug
>  Components: fs/azure
>Affects Versions: 3.3.2, 3.3.3, 3.3.4
>Reporter: Steve Loughran
>Assignee: Steve Loughran
>Priority: Critical
>  Labels: pull-request-available
>
> AbfsInputStream.close() can trigger the return of buffers used for active 
> prefetch GET requests into the ReadBufferManager free buffer pool.
> A subsequent prefetch by a different stream in the same process may acquire 
> this same buffer. This can lead to risk of corruption of its own prefetched 
> data, data which may then be returned to that other thread.
> On releases without the fix for this (3.3.2 to 3.3.4), the bug can be avoided 
> by disabling all prefetching 
> {code}
> fs.azure.readaheadqueue.depth
> {code}



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

-
To unsubscribe, e-mail: common-issues-unsubscr...@hadoop.apache.org
For additional commands, e-mail: common-issues-h...@hadoop.apache.org



[jira] [Commented] (HADOOP-18521) ABFS ReadBufferManager buffer sharing across concurrent HTTP requests

2022-11-11 Thread ASF GitHub Bot (Jira)


[ 
https://issues.apache.org/jira/browse/HADOOP-18521?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17632535#comment-17632535
 ] 

ASF GitHub Bot commented on HADOOP-18521:
-

steveloughran commented on code in PR #5117:
URL: https://github.com/apache/hadoop/pull/5117#discussion_r1020503409


##
hadoop-tools/hadoop-azure/src/main/java/org/apache/hadoop/fs/azurebfs/services/ReadBufferManager.java:
##
@@ -454,31 +588,65 @@ ReadBuffer getNextBlockToRead() throws 
InterruptedException {
*/
   void doneReading(final ReadBuffer buffer, final ReadBufferStatus result, 
final int bytesActuallyRead) {
 if (LOGGER.isTraceEnabled()) {
-  LOGGER.trace("ReadBufferWorker completed read file {} for offset {} 
outcome {} bytes {}",
-  buffer.getStream().getPath(),  buffer.getOffset(), result, 
bytesActuallyRead);
-}
-synchronized (this) {
-  // If this buffer has already been purged during
-  // close of InputStream then we don't update the lists.
-  if (inProgressList.contains(buffer)) {
-inProgressList.remove(buffer);
+  LOGGER.trace("ReadBufferWorker completed file {} for offset {} bytes {}; 
{}",
+  buffer.getStream().getPath(),  buffer.getOffset(), 
bytesActuallyRead, buffer);
+}
+// decrement counter.
+buffer.prefetchFinished();
+
+try {
+  synchronized (this) {
+// remove from the list
+if (!inProgressList.remove(buffer)) {
+  // this is a sign of inconsistent state, so a major problem
+  String message =
+  String.format("Read completed from an operation not declared as 
in progress %s",
+  buffer);
+  LOGGER.warn(message);
+  // release the buffer (which may raise an exception)
+  placeBufferOnFreeList("read not in progress", buffer);
+  // report the failure
+  throw new IllegalStateException(message);
+}
+
+boolean shouldFreeBuffer = false;
+String freeBufferReason = "";
 if (result == ReadBufferStatus.AVAILABLE && bytesActuallyRead > 0) {
   buffer.setStatus(ReadBufferStatus.AVAILABLE);
   buffer.setLength(bytesActuallyRead);
 } else {
-  freeList.push(buffer.getBufferindex());
-  // buffer will be deleted as per the eviction policy.
+  // read failed or there was no data, -the buffer can be returned to 
the free list.
+  shouldFreeBuffer = true;
+  freeBufferReason = "failed read";
 }
 // completed list also contains FAILED read buffers
 // for sending exception message to clients.
 buffer.setStatus(result);
 buffer.setTimeStamp(currentTimeMillis());
-completedReadList.add(buffer);
+if (!buffer.isStreamClosed()) {
+  // completed reads are added to the list.
+  LOGGER.trace("Adding buffer to completed list {}", buffer);
+  completedReadList.add(buffer);

Review Comment:
   making some changes. this is a complex bit of code and why I plan to write 
some unit tests to explore the results; i will take what you've done too 
@pranavsaxena-microsoft 





> ABFS ReadBufferManager buffer sharing across concurrent HTTP requests
> -
>
> Key: HADOOP-18521
> URL: https://issues.apache.org/jira/browse/HADOOP-18521
> Project: Hadoop Common
>  Issue Type: Bug
>  Components: fs/azure
>Affects Versions: 3.3.2, 3.3.3, 3.3.4
>Reporter: Steve Loughran
>Assignee: Steve Loughran
>Priority: Critical
>  Labels: pull-request-available
>
> AbfsInputStream.close() can trigger the return of buffers used for active 
> prefetch GET requests into the ReadBufferManager free buffer pool.
> A subsequent prefetch by a different stream in the same process may acquire 
> this same buffer. This can lead to risk of corruption of its own prefetched 
> data, data which may then be returned to that other thread.
> On releases without the fix for this (3.3.2 to 3.3.4), the bug can be avoided 
> by disabling all prefetching 
> {code}
> fs.azure.readaheadqueue.depth
> {code}



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

-
To unsubscribe, e-mail: common-issues-unsubscr...@hadoop.apache.org
For additional commands, e-mail: common-issues-h...@hadoop.apache.org



[jira] [Commented] (HADOOP-18521) ABFS ReadBufferManager buffer sharing across concurrent HTTP requests

2022-11-11 Thread ASF GitHub Bot (Jira)


[ 
https://issues.apache.org/jira/browse/HADOOP-18521?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17632523#comment-17632523
 ] 

ASF GitHub Bot commented on HADOOP-18521:
-

steveloughran commented on code in PR #5117:
URL: https://github.com/apache/hadoop/pull/5117#discussion_r1020491125


##
hadoop-tools/hadoop-azure/src/main/java/org/apache/hadoop/fs/azurebfs/services/ReadBufferManager.java:
##
@@ -454,31 +588,65 @@ ReadBuffer getNextBlockToRead() throws 
InterruptedException {
*/
   void doneReading(final ReadBuffer buffer, final ReadBufferStatus result, 
final int bytesActuallyRead) {
 if (LOGGER.isTraceEnabled()) {
-  LOGGER.trace("ReadBufferWorker completed read file {} for offset {} 
outcome {} bytes {}",
-  buffer.getStream().getPath(),  buffer.getOffset(), result, 
bytesActuallyRead);
-}
-synchronized (this) {
-  // If this buffer has already been purged during
-  // close of InputStream then we don't update the lists.
-  if (inProgressList.contains(buffer)) {
-inProgressList.remove(buffer);
+  LOGGER.trace("ReadBufferWorker completed file {} for offset {} bytes {}; 
{}",
+  buffer.getStream().getPath(),  buffer.getOffset(), 
bytesActuallyRead, buffer);
+}
+// decrement counter.
+buffer.prefetchFinished();
+
+try {
+  synchronized (this) {
+// remove from the list
+if (!inProgressList.remove(buffer)) {
+  // this is a sign of inconsistent state, so a major problem
+  String message =
+  String.format("Read completed from an operation not declared as 
in progress %s",
+  buffer);
+  LOGGER.warn(message);
+  // release the buffer (which may raise an exception)
+  placeBufferOnFreeList("read not in progress", buffer);
+  // report the failure
+  throw new IllegalStateException(message);
+}
+
+boolean shouldFreeBuffer = false;
+String freeBufferReason = "";
 if (result == ReadBufferStatus.AVAILABLE && bytesActuallyRead > 0) {
   buffer.setStatus(ReadBufferStatus.AVAILABLE);
   buffer.setLength(bytesActuallyRead);
 } else {
-  freeList.push(buffer.getBufferindex());
-  // buffer will be deleted as per the eviction policy.
+  // read failed or there was no data, -the buffer can be returned to 
the free list.
+  shouldFreeBuffer = true;
+  freeBufferReason = "failed read";
 }
 // completed list also contains FAILED read buffers
 // for sending exception message to clients.
 buffer.setStatus(result);

Review Comment:
   i've moved that check down. and with the move to an interface for abfs 
interaction, now in a position to create a test to simulate the conditions, 
including "available but empty" and "io error" on normal and prefetch reads





> ABFS ReadBufferManager buffer sharing across concurrent HTTP requests
> -
>
> Key: HADOOP-18521
> URL: https://issues.apache.org/jira/browse/HADOOP-18521
> Project: Hadoop Common
>  Issue Type: Bug
>  Components: fs/azure
>Affects Versions: 3.3.2, 3.3.3, 3.3.4
>Reporter: Steve Loughran
>Assignee: Steve Loughran
>Priority: Critical
>  Labels: pull-request-available
>
> AbfsInputStream.close() can trigger the return of buffers used for active 
> prefetch GET requests into the ReadBufferManager free buffer pool.
> A subsequent prefetch by a different stream in the same process may acquire 
> this same buffer. This can lead to risk of corruption of its own prefetched 
> data, data which may then be returned to that other thread.
> On releases without the fix for this (3.3.2 to 3.3.4), the bug can be avoided 
> by disabling all prefetching 
> {code}
> fs.azure.readaheadqueue.depth
> {code}



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

-
To unsubscribe, e-mail: common-issues-unsubscr...@hadoop.apache.org
For additional commands, e-mail: common-issues-h...@hadoop.apache.org



[jira] [Commented] (HADOOP-18521) ABFS ReadBufferManager buffer sharing across concurrent HTTP requests

2022-11-11 Thread ASF GitHub Bot (Jira)


[ 
https://issues.apache.org/jira/browse/HADOOP-18521?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17632517#comment-17632517
 ] 

ASF GitHub Bot commented on HADOOP-18521:
-

steveloughran commented on code in PR #5117:
URL: https://github.com/apache/hadoop/pull/5117#discussion_r1020487323


##
hadoop-tools/hadoop-azure/src/main/java/org/apache/hadoop/fs/azurebfs/services/ReadBufferManager.java:
##
@@ -302,33 +325,33 @@ private synchronized boolean tryEvict() {
   }
 
   private boolean evict(final ReadBuffer buf) {
-// As failed ReadBuffers (bufferIndx = -1) are saved in completedReadList,
-// avoid adding it to freeList.
-if (buf.getBufferindex() != -1) {
-  freeList.push(buf.getBufferindex());
-}
-
-completedReadList.remove(buf);
 buf.setTracingContext(null);
 if (LOGGER.isTraceEnabled()) {
   LOGGER.trace("Evicting buffer idx {}; was used for file {} offset {} 
length {}",
   buf.getBufferindex(), buf.getStream().getPath(), buf.getOffset(), 
buf.getLength());
 }
+completedReadList.remove(buf);

Review Comment:
   ok. i'd positioned where they were so the invariant "not in use" held.
   maybe the validateReadManagerState() should go in at the end of the eviction





> ABFS ReadBufferManager buffer sharing across concurrent HTTP requests
> -
>
> Key: HADOOP-18521
> URL: https://issues.apache.org/jira/browse/HADOOP-18521
> Project: Hadoop Common
>  Issue Type: Bug
>  Components: fs/azure
>Affects Versions: 3.3.2, 3.3.3, 3.3.4
>Reporter: Steve Loughran
>Assignee: Steve Loughran
>Priority: Critical
>  Labels: pull-request-available
>
> AbfsInputStream.close() can trigger the return of buffers used for active 
> prefetch GET requests into the ReadBufferManager free buffer pool.
> A subsequent prefetch by a different stream in the same process may acquire 
> this same buffer. This can lead to risk of corruption of its own prefetched 
> data, data which may then be returned to that other thread.
> On releases without the fix for this (3.3.2 to 3.3.4), the bug can be avoided 
> by disabling all prefetching 
> {code}
> fs.azure.readaheadqueue.depth
> {code}



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

-
To unsubscribe, e-mail: common-issues-unsubscr...@hadoop.apache.org
For additional commands, e-mail: common-issues-h...@hadoop.apache.org



[jira] [Commented] (HADOOP-18521) ABFS ReadBufferManager buffer sharing across concurrent HTTP requests

2022-11-11 Thread ASF GitHub Bot (Jira)


[ 
https://issues.apache.org/jira/browse/HADOOP-18521?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17632307#comment-17632307
 ] 

ASF GitHub Bot commented on HADOOP-18521:
-

anmolanmol1234 commented on code in PR #5117:
URL: https://github.com/apache/hadoop/pull/5117#discussion_r1020173444


##
hadoop-tools/hadoop-azure/src/main/java/org/apache/hadoop/fs/azurebfs/services/ReadBufferManager.java:
##
@@ -454,31 +588,65 @@ ReadBuffer getNextBlockToRead() throws 
InterruptedException {
*/
   void doneReading(final ReadBuffer buffer, final ReadBufferStatus result, 
final int bytesActuallyRead) {
 if (LOGGER.isTraceEnabled()) {
-  LOGGER.trace("ReadBufferWorker completed read file {} for offset {} 
outcome {} bytes {}",
-  buffer.getStream().getPath(),  buffer.getOffset(), result, 
bytesActuallyRead);
-}
-synchronized (this) {
-  // If this buffer has already been purged during
-  // close of InputStream then we don't update the lists.
-  if (inProgressList.contains(buffer)) {
-inProgressList.remove(buffer);
+  LOGGER.trace("ReadBufferWorker completed file {} for offset {} bytes {}; 
{}",
+  buffer.getStream().getPath(),  buffer.getOffset(), 
bytesActuallyRead, buffer);
+}
+// decrement counter.
+buffer.prefetchFinished();
+
+try {
+  synchronized (this) {
+// remove from the list
+if (!inProgressList.remove(buffer)) {
+  // this is a sign of inconsistent state, so a major problem
+  String message =
+  String.format("Read completed from an operation not declared as 
in progress %s",
+  buffer);
+  LOGGER.warn(message);
+  // release the buffer (which may raise an exception)
+  placeBufferOnFreeList("read not in progress", buffer);
+  // report the failure
+  throw new IllegalStateException(message);
+}
+
+boolean shouldFreeBuffer = false;
+String freeBufferReason = "";
 if (result == ReadBufferStatus.AVAILABLE && bytesActuallyRead > 0) {
   buffer.setStatus(ReadBufferStatus.AVAILABLE);
   buffer.setLength(bytesActuallyRead);
 } else {
-  freeList.push(buffer.getBufferindex());
-  // buffer will be deleted as per the eviction policy.
+  // read failed or there was no data, -the buffer can be returned to 
the free list.
+  shouldFreeBuffer = true;
+  freeBufferReason = "failed read";
 }
 // completed list also contains FAILED read buffers
 // for sending exception message to clients.
 buffer.setStatus(result);
 buffer.setTimeStamp(currentTimeMillis());
-completedReadList.add(buffer);
+if (!buffer.isStreamClosed()) {
+  // completed reads are added to the list.
+  LOGGER.trace("Adding buffer to completed list {}", buffer);
+  completedReadList.add(buffer);

Review Comment:
   Agree with this because the current flow might lead to double addition in 
free list or inconsistency during addition.





> ABFS ReadBufferManager buffer sharing across concurrent HTTP requests
> -
>
> Key: HADOOP-18521
> URL: https://issues.apache.org/jira/browse/HADOOP-18521
> Project: Hadoop Common
>  Issue Type: Bug
>  Components: fs/azure
>Affects Versions: 3.3.2, 3.3.3, 3.3.4
>Reporter: Steve Loughran
>Assignee: Steve Loughran
>Priority: Critical
>  Labels: pull-request-available
>
> AbfsInputStream.close() can trigger the return of buffers used for active 
> prefetch GET requests into the ReadBufferManager free buffer pool.
> A subsequent prefetch by a different stream in the same process may acquire 
> this same buffer. This can lead to risk of corruption of its own prefetched 
> data, data which may then be returned to that other thread.
> On releases without the fix for this (3.3.2 to 3.3.4), the bug can be avoided 
> by disabling all prefetching 
> {code}
> fs.azure.readaheadqueue.depth
> {code}



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

-
To unsubscribe, e-mail: common-issues-unsubscr...@hadoop.apache.org
For additional commands, e-mail: common-issues-h...@hadoop.apache.org



[jira] [Commented] (HADOOP-18521) ABFS ReadBufferManager buffer sharing across concurrent HTTP requests

2022-11-11 Thread ASF GitHub Bot (Jira)


[ 
https://issues.apache.org/jira/browse/HADOOP-18521?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17632301#comment-17632301
 ] 

ASF GitHub Bot commented on HADOOP-18521:
-

anmolanmol1234 commented on code in PR #5117:
URL: https://github.com/apache/hadoop/pull/5117#discussion_r1020171703


##
hadoop-tools/hadoop-azure/src/main/java/org/apache/hadoop/fs/azurebfs/services/ReadBufferManager.java:
##
@@ -302,33 +325,33 @@ private synchronized boolean tryEvict() {
   }
 
   private boolean evict(final ReadBuffer buf) {
-// As failed ReadBuffers (bufferIndx = -1) are saved in completedReadList,
-// avoid adding it to freeList.
-if (buf.getBufferindex() != -1) {
-  freeList.push(buf.getBufferindex());
-}
-
-completedReadList.remove(buf);
 buf.setTracingContext(null);
 if (LOGGER.isTraceEnabled()) {
   LOGGER.trace("Evicting buffer idx {}; was used for file {} offset {} 
length {}",
   buf.getBufferindex(), buf.getStream().getPath(), buf.getOffset(), 
buf.getLength());
 }
+completedReadList.remove(buf);

Review Comment:
   Buffer should be removed from completed list after it has been added to the 
free list. 





> ABFS ReadBufferManager buffer sharing across concurrent HTTP requests
> -
>
> Key: HADOOP-18521
> URL: https://issues.apache.org/jira/browse/HADOOP-18521
> Project: Hadoop Common
>  Issue Type: Bug
>  Components: fs/azure
>Affects Versions: 3.3.2, 3.3.3, 3.3.4
>Reporter: Steve Loughran
>Assignee: Steve Loughran
>Priority: Critical
>  Labels: pull-request-available
>
> AbfsInputStream.close() can trigger the return of buffers used for active 
> prefetch GET requests into the ReadBufferManager free buffer pool.
> A subsequent prefetch by a different stream in the same process may acquire 
> this same buffer. This can lead to risk of corruption of its own prefetched 
> data, data which may then be returned to that other thread.
> On releases without the fix for this (3.3.2 to 3.3.4), the bug can be avoided 
> by disabling all prefetching 
> {code}
> fs.azure.readaheadqueue.depth
> {code}



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

-
To unsubscribe, e-mail: common-issues-unsubscr...@hadoop.apache.org
For additional commands, e-mail: common-issues-h...@hadoop.apache.org



[jira] [Commented] (HADOOP-18521) ABFS ReadBufferManager buffer sharing across concurrent HTTP requests

2022-11-11 Thread ASF GitHub Bot (Jira)


[ 
https://issues.apache.org/jira/browse/HADOOP-18521?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17632293#comment-17632293
 ] 

ASF GitHub Bot commented on HADOOP-18521:
-

anmolanmol1234 commented on PR #5117:
URL: https://github.com/apache/hadoop/pull/5117#issuecomment-1311623500

   The checkstyle errors needs fixing. 




> ABFS ReadBufferManager buffer sharing across concurrent HTTP requests
> -
>
> Key: HADOOP-18521
> URL: https://issues.apache.org/jira/browse/HADOOP-18521
> Project: Hadoop Common
>  Issue Type: Bug
>  Components: fs/azure
>Affects Versions: 3.3.2, 3.3.3, 3.3.4
>Reporter: Steve Loughran
>Assignee: Steve Loughran
>Priority: Critical
>  Labels: pull-request-available
>
> AbfsInputStream.close() can trigger the return of buffers used for active 
> prefetch GET requests into the ReadBufferManager free buffer pool.
> A subsequent prefetch by a different stream in the same process may acquire 
> this same buffer. This can lead to risk of corruption of its own prefetched 
> data, data which may then be returned to that other thread.
> On releases without the fix for this (3.3.2 to 3.3.4), the bug can be avoided 
> by disabling all prefetching 
> {code}
> fs.azure.readaheadqueue.depth
> {code}



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

-
To unsubscribe, e-mail: common-issues-unsubscr...@hadoop.apache.org
For additional commands, e-mail: common-issues-h...@hadoop.apache.org



[jira] [Commented] (HADOOP-18521) ABFS ReadBufferManager buffer sharing across concurrent HTTP requests

2022-11-11 Thread ASF GitHub Bot (Jira)


[ 
https://issues.apache.org/jira/browse/HADOOP-18521?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17632208#comment-17632208
 ] 

ASF GitHub Bot commented on HADOOP-18521:
-

pranavsaxena-microsoft commented on code in PR #5117:
URL: https://github.com/apache/hadoop/pull/5117#discussion_r1020040801


##
hadoop-tools/hadoop-azure/src/main/java/org/apache/hadoop/fs/azurebfs/services/ReadBufferManager.java:
##
@@ -454,31 +588,65 @@ ReadBuffer getNextBlockToRead() throws 
InterruptedException {
*/
   void doneReading(final ReadBuffer buffer, final ReadBufferStatus result, 
final int bytesActuallyRead) {
 if (LOGGER.isTraceEnabled()) {
-  LOGGER.trace("ReadBufferWorker completed read file {} for offset {} 
outcome {} bytes {}",
-  buffer.getStream().getPath(),  buffer.getOffset(), result, 
bytesActuallyRead);
-}
-synchronized (this) {
-  // If this buffer has already been purged during
-  // close of InputStream then we don't update the lists.
-  if (inProgressList.contains(buffer)) {
-inProgressList.remove(buffer);
+  LOGGER.trace("ReadBufferWorker completed file {} for offset {} bytes {}; 
{}",
+  buffer.getStream().getPath(),  buffer.getOffset(), 
bytesActuallyRead, buffer);
+}
+// decrement counter.
+buffer.prefetchFinished();
+
+try {
+  synchronized (this) {
+// remove from the list
+if (!inProgressList.remove(buffer)) {
+  // this is a sign of inconsistent state, so a major problem
+  String message =
+  String.format("Read completed from an operation not declared as 
in progress %s",
+  buffer);
+  LOGGER.warn(message);
+  // release the buffer (which may raise an exception)
+  placeBufferOnFreeList("read not in progress", buffer);
+  // report the failure
+  throw new IllegalStateException(message);
+}
+
+boolean shouldFreeBuffer = false;
+String freeBufferReason = "";
 if (result == ReadBufferStatus.AVAILABLE && bytesActuallyRead > 0) {
   buffer.setStatus(ReadBufferStatus.AVAILABLE);
   buffer.setLength(bytesActuallyRead);
 } else {
-  freeList.push(buffer.getBufferindex());
-  // buffer will be deleted as per the eviction policy.
+  // read failed or there was no data, -the buffer can be returned to 
the free list.
+  shouldFreeBuffer = true;
+  freeBufferReason = "failed read";
 }
 // completed list also contains FAILED read buffers
 // for sending exception message to clients.
 buffer.setStatus(result);
 buffer.setTimeStamp(currentTimeMillis());
-completedReadList.add(buffer);
+if (!buffer.isStreamClosed()) {
+  // completed reads are added to the list.
+  LOGGER.trace("Adding buffer to completed list {}", buffer);
+  completedReadList.add(buffer);

Review Comment:
   It would be better if we do placeBufferOnFreeList before trying to add in 
completedList, since, we would add it in freeList before completeListAddition 
(which can try itself to add in freeList on evict()) -> this will force never 
addition to freeList from completedList.



##
hadoop-tools/hadoop-azure/src/main/java/org/apache/hadoop/fs/azurebfs/services/ReadBufferManager.java:
##
@@ -454,31 +588,65 @@ ReadBuffer getNextBlockToRead() throws 
InterruptedException {
*/
   void doneReading(final ReadBuffer buffer, final ReadBufferStatus result, 
final int bytesActuallyRead) {
 if (LOGGER.isTraceEnabled()) {
-  LOGGER.trace("ReadBufferWorker completed read file {} for offset {} 
outcome {} bytes {}",
-  buffer.getStream().getPath(),  buffer.getOffset(), result, 
bytesActuallyRead);
-}
-synchronized (this) {
-  // If this buffer has already been purged during
-  // close of InputStream then we don't update the lists.
-  if (inProgressList.contains(buffer)) {
-inProgressList.remove(buffer);
+  LOGGER.trace("ReadBufferWorker completed file {} for offset {} bytes {}; 
{}",
+  buffer.getStream().getPath(),  buffer.getOffset(), 
bytesActuallyRead, buffer);
+}
+// decrement counter.
+buffer.prefetchFinished();
+
+try {
+  synchronized (this) {
+// remove from the list
+if (!inProgressList.remove(buffer)) {
+  // this is a sign of inconsistent state, so a major problem
+  String message =
+  String.format("Read completed from an operation not declared as 
in progress %s",
+  buffer);
+  LOGGER.warn(message);
+  // release the buffer (which may raise an exception)
+  placeBufferOnFreeList("read not in progress", buffer);
+  // report the failure
+  throw new IllegalStateException(message);
+}

[jira] [Commented] (HADOOP-18521) ABFS ReadBufferManager buffer sharing across concurrent HTTP requests

2022-11-10 Thread ASF GitHub Bot (Jira)


[ 
https://issues.apache.org/jira/browse/HADOOP-18521?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17632120#comment-17632120
 ] 

ASF GitHub Bot commented on HADOOP-18521:
-

pranavsaxena-microsoft commented on code in PR #5117:
URL: https://github.com/apache/hadoop/pull/5117#discussion_r1019839338


##
hadoop-tools/hadoop-azure/src/main/java/org/apache/hadoop/fs/azurebfs/services/ReadBufferManager.java:
##
@@ -454,31 +588,65 @@ ReadBuffer getNextBlockToRead() throws 
InterruptedException {
*/
   void doneReading(final ReadBuffer buffer, final ReadBufferStatus result, 
final int bytesActuallyRead) {
 if (LOGGER.isTraceEnabled()) {
-  LOGGER.trace("ReadBufferWorker completed read file {} for offset {} 
outcome {} bytes {}",
-  buffer.getStream().getPath(),  buffer.getOffset(), result, 
bytesActuallyRead);
-}
-synchronized (this) {
-  // If this buffer has already been purged during
-  // close of InputStream then we don't update the lists.
-  if (inProgressList.contains(buffer)) {
-inProgressList.remove(buffer);
+  LOGGER.trace("ReadBufferWorker completed file {} for offset {} bytes {}; 
{}",
+  buffer.getStream().getPath(),  buffer.getOffset(), 
bytesActuallyRead, buffer);
+}
+// decrement counter.
+buffer.prefetchFinished();
+
+try {
+  synchronized (this) {
+// remove from the list
+if (!inProgressList.remove(buffer)) {
+  // this is a sign of inconsistent state, so a major problem
+  String message =
+  String.format("Read completed from an operation not declared as 
in progress %s",
+  buffer);
+  LOGGER.warn(message);
+  // release the buffer (which may raise an exception)
+  placeBufferOnFreeList("read not in progress", buffer);
+  // report the failure
+  throw new IllegalStateException(message);
+}
+
+boolean shouldFreeBuffer = false;
+String freeBufferReason = "";
 if (result == ReadBufferStatus.AVAILABLE && bytesActuallyRead > 0) {
   buffer.setStatus(ReadBufferStatus.AVAILABLE);
   buffer.setLength(bytesActuallyRead);
 } else {
-  freeList.push(buffer.getBufferindex());
-  // buffer will be deleted as per the eviction policy.
+  // read failed or there was no data, -the buffer can be returned to 
the free list.
+  shouldFreeBuffer = true;
+  freeBufferReason = "failed read";
 }
 // completed list also contains FAILED read buffers
 // for sending exception message to clients.
 buffer.setStatus(result);
 buffer.setTimeStamp(currentTimeMillis());
-completedReadList.add(buffer);
+if (!buffer.isStreamClosed()) {
+  // completed reads are added to the list.
+  LOGGER.trace("Adding buffer to completed list {}", buffer);
+  completedReadList.add(buffer);

Review Comment:
   Lets not add buffer in completedList in the cases where we are going to add 
in freeList(due to byteRead == 0).
   
   - Got exception:
   
   ```
   2022-11-10 20:48:22,516 TRACE [ABFS-prefetch-7]: services.ReadBufferManager 
(ReadBufferManager.java:doneReading(591)) - ReadBufferWorker completed file 
/testfilefb393e327a88 for offset 4194304 bytes 0; 
org.apache.hadoop.fs.azurebfs.services.ReadBuffer@6777a743{ 
status=READING_IN_PROGRESS, offset=4194304, length=0, requestedLength=4194304, 
bufferindex=0, timeStamp=0, isFirstByteConsumed=false, 
isLastByteConsumed=false, isAnyByteConsumed=false, errException=null, 
stream=9d85521627a8, stream closed=false}
   2022-11-10 20:48:22,516 TRACE [ABFS-prefetch-7]: services.ReadBufferManager 
(ReadBufferManager.java:doneReading(633)) - Adding buffer to completed list 
org.apache.hadoop.fs.azurebfs.services.ReadBuffer@6777a743{ status=AVAILABLE, 
offset=4194304, length=0, requestedLength=4194304, bufferindex=0, 
timeStamp=86052487, isFirstByteConsumed=false, isLastByteConsumed=false, 
isAnyByteConsumed=false, errException=null, stream=9d85521627a8, stream 
closed=false}
   2022-11-10 20:48:22,516 DEBUG [ABFS-prefetch-7]: services.ReadBufferManager 
(ReadBufferManager.java:placeBufferOnFreeList(407)) - Returning buffer index 0 
to free list for 'failed read'; owner 
org.apache.hadoop.fs.azurebfs.services.ReadBuffer@6777a743{ status=AVAILABLE, 
offset=4194304, length=0, requestedLength=4194304, bufferindex=0, 
timeStamp=86052487, isFirstByteConsumed=false, isLastByteConsumed=false, 
isAnyByteConsumed=false, errException=null, stream=9d85521627a8, stream 
closed=false}
   2022-11-10 20:48:22,517 TRACE [ABFS-prefetch-7]: services.ReadBufferWorker 
(ReadBufferWorker.java:run(95)) - Exception received: 
   org.apache.hadoop.fs.PathIOException: `/testfilefb393e327a88': Input/output 
error: Buffer index 0 found in buffer collection completedReadList

[jira] [Commented] (HADOOP-18521) ABFS ReadBufferManager buffer sharing across concurrent HTTP requests

2022-11-09 Thread ASF GitHub Bot (Jira)


[ 
https://issues.apache.org/jira/browse/HADOOP-18521?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17631333#comment-17631333
 ] 

ASF GitHub Bot commented on HADOOP-18521:
-

hadoop-yetus commented on PR #5117:
URL: https://github.com/apache/hadoop/pull/5117#issuecomment-1309518862

   :confetti_ball: **+1 overall**
   
   
   
   
   
   
   | Vote | Subsystem | Runtime |  Logfile | Comment |
   |::|--:|:|::|:---:|
   | +0 :ok: |  reexec  |   0m 47s |  |  Docker mode activated.  |
    _ Prechecks _ |
   | +1 :green_heart: |  dupname  |   0m  0s |  |  No case conflicting files 
found.  |
   | +0 :ok: |  codespell  |   0m  1s |  |  codespell was not available.  |
   | +0 :ok: |  detsecrets  |   0m  1s |  |  detect-secrets was not available.  
|
   | +1 :green_heart: |  @author  |   0m  0s |  |  The patch does not contain 
any @author tags.  |
   | +1 :green_heart: |  test4tests  |   0m  0s |  |  The patch appears to 
include 3 new or modified test files.  |
    _ trunk Compile Tests _ |
   | +0 :ok: |  mvndep  |  16m 25s |  |  Maven dependency ordering for branch  |
   | +1 :green_heart: |  mvninstall  |  26m  8s |  |  trunk passed  |
   | +1 :green_heart: |  compile  |  23m 24s |  |  trunk passed with JDK 
Ubuntu-11.0.16+8-post-Ubuntu-0ubuntu120.04  |
   | +1 :green_heart: |  compile  |  20m 48s |  |  trunk passed with JDK 
Private Build-1.8.0_342-8u342-b07-0ubuntu1~20.04-b07  |
   | +1 :green_heart: |  checkstyle  |   4m 17s |  |  trunk passed  |
   | +1 :green_heart: |  mvnsite  |   3m  2s |  |  trunk passed  |
   | +1 :green_heart: |  javadoc  |   2m 41s |  |  trunk passed with JDK 
Ubuntu-11.0.16+8-post-Ubuntu-0ubuntu120.04  |
   | +1 :green_heart: |  javadoc  |   2m 17s |  |  trunk passed with JDK 
Private Build-1.8.0_342-8u342-b07-0ubuntu1~20.04-b07  |
   | +1 :green_heart: |  spotbugs  |   4m 42s |  |  trunk passed  |
   | +1 :green_heart: |  shadedclient  |  22m 13s |  |  branch has no errors 
when building and testing our client artifacts.  |
    _ Patch Compile Tests _ |
   | +0 :ok: |  mvndep  |   0m 28s |  |  Maven dependency ordering for patch  |
   | +1 :green_heart: |  mvninstall  |   1m 44s |  |  the patch passed  |
   | +1 :green_heart: |  compile  |  22m 41s |  |  the patch passed with JDK 
Ubuntu-11.0.16+8-post-Ubuntu-0ubuntu120.04  |
   | +1 :green_heart: |  javac  |  22m 41s |  |  the patch passed  |
   | +1 :green_heart: |  compile  |  20m 46s |  |  the patch passed with JDK 
Private Build-1.8.0_342-8u342-b07-0ubuntu1~20.04-b07  |
   | +1 :green_heart: |  javac  |  20m 46s |  |  the patch passed  |
   | +1 :green_heart: |  blanks  |   0m  0s |  |  The patch has no blanks 
issues.  |
   | -0 :warning: |  checkstyle  |   3m 57s | 
[/results-checkstyle-root.txt](https://ci-hadoop.apache.org/job/hadoop-multibranch/job/PR-5117/4/artifact/out/results-checkstyle-root.txt)
 |  root: The patch generated 36 new + 1 unchanged - 0 fixed = 37 total (was 1) 
 |
   | +1 :green_heart: |  mvnsite  |   3m 15s |  |  the patch passed  |
   | +1 :green_heart: |  javadoc  |   2m 33s |  |  the patch passed with JDK 
Ubuntu-11.0.16+8-post-Ubuntu-0ubuntu120.04  |
   | +1 :green_heart: |  javadoc  |   2m 17s |  |  the patch passed with JDK 
Private Build-1.8.0_342-8u342-b07-0ubuntu1~20.04-b07  |
   | +1 :green_heart: |  spotbugs  |   4m 37s |  |  the patch passed  |
   | +1 :green_heart: |  shadedclient  |  21m 48s |  |  patch has no errors 
when building and testing our client artifacts.  |
    _ Other Tests _ |
   | +1 :green_heart: |  unit  |  18m 49s |  |  hadoop-common in the patch 
passed.  |
   | +1 :green_heart: |  unit  |   2m 45s |  |  hadoop-azure in the patch 
passed.  |
   | +1 :green_heart: |  asflicense  |   1m 16s |  |  The patch does not 
generate ASF License warnings.  |
   |  |   | 239m  1s |  |  |
   
   
   | Subsystem | Report/Notes |
   |--:|:-|
   | Docker | ClientAPI=1.41 ServerAPI=1.41 base: 
https://ci-hadoop.apache.org/job/hadoop-multibranch/job/PR-5117/4/artifact/out/Dockerfile
 |
   | GITHUB PR | https://github.com/apache/hadoop/pull/5117 |
   | Optional Tests | dupname asflicense compile javac javadoc mvninstall 
mvnsite unit shadedclient spotbugs checkstyle codespell detsecrets |
   | uname | Linux 1cea54f46634 4.15.0-191-generic #202-Ubuntu SMP Thu Aug 4 
01:49:29 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux |
   | Build tool | maven |
   | Personality | dev-support/bin/hadoop.sh |
   | git revision | trunk / 1ee18eeb4922d18168bd1fc8ec4a5c75610447cc |
   | Default Java | Private Build-1.8.0_342-8u342-b07-0ubuntu1~20.04-b07 |
   | Multi-JDK versions | 
/usr/lib/jvm/java-11-openjdk-amd64:Ubuntu-11.0.16+8-post-Ubuntu-0ubuntu120.04 
/usr/lib/jvm/java-8-openjdk-amd64:Private 
Build-1.8.0_342-8u342-b07-0ubuntu1~20.04-b07 |
   |  Test Results | 
https://ci-hadoop.apache.org/job/hadoop-multibranch/job/PR-5117/4/testReport/ |
   | Max. pr

[jira] [Commented] (HADOOP-18521) ABFS ReadBufferManager buffer sharing across concurrent HTTP requests

2022-11-08 Thread ASF GitHub Bot (Jira)


[ 
https://issues.apache.org/jira/browse/HADOOP-18521?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17630800#comment-17630800
 ] 

ASF GitHub Bot commented on HADOOP-18521:
-

pranavsaxena-microsoft commented on code in PR #5117:
URL: https://github.com/apache/hadoop/pull/5117#discussion_r1017458506


##
hadoop-tools/hadoop-azure/src/main/java/org/apache/hadoop/fs/azurebfs/services/ReadBufferManager.java:
##
@@ -534,17 +676,31 @@ void callTryEvict() {
 tryEvict();
   }
 
-
   /**
* Purging the buffers associated with an {@link AbfsInputStream}
* from {@link ReadBufferManager} when stream is closed.
+   * Before HADOOP-18521 this would purge in progress reads, which
+   * would return the active buffer to the free pool while it was
+   * still in use.
* @param stream input stream.
*/
   public synchronized void purgeBuffersForStream(AbfsInputStream stream) {
 LOGGER.debug("Purging stale buffers for AbfsInputStream {} ", stream);
+
+// remove from the queue
+int before = readAheadQueue.size();
 readAheadQueue.removeIf(readBuffer -> readBuffer.getStream() == stream);
-purgeList(stream, completedReadList);
-purgeList(stream, inProgressList);
+int readaheadPurged = readAheadQueue.size() - before;

Review Comment:
   By the thread reaches this line, maybe some more blocks would be added in 
readAheadQueue, this may bloat the metric. Also, before should >= 
readAheadQueue.size() (in case no additional blocks are ahead), this would 
result in negative addition.



##
hadoop-tools/hadoop-azure/src/main/java/org/apache/hadoop/fs/azurebfs/services/ReadBufferManager.java:
##
@@ -454,31 +588,39 @@ ReadBuffer getNextBlockToRead() throws 
InterruptedException {
*/
   void doneReading(final ReadBuffer buffer, final ReadBufferStatus result, 
final int bytesActuallyRead) {
 if (LOGGER.isTraceEnabled()) {
-  LOGGER.trace("ReadBufferWorker completed read file {} for offset {} 
outcome {} bytes {}",
-  buffer.getStream().getPath(),  buffer.getOffset(), result, 
bytesActuallyRead);
-}
-synchronized (this) {
-  // If this buffer has already been purged during
-  // close of InputStream then we don't update the lists.
-  if (inProgressList.contains(buffer)) {
-inProgressList.remove(buffer);
+  LOGGER.trace("ReadBufferWorker completed file {} for offset {} bytes {}",
+  buffer.getStream().getPath(),  buffer.getOffset(), 
bytesActuallyRead);
+}
+try {
+  synchronized (this) {
+checkState(inProgressList.remove(buffer),
+"Read completed from an operation not declared as in progress %s", 
buffer);
+// If this buffer has already been purged during
+// close of InputStream then we don't update the lists.
 if (result == ReadBufferStatus.AVAILABLE && bytesActuallyRead > 0) {
   buffer.setStatus(ReadBufferStatus.AVAILABLE);
   buffer.setLength(bytesActuallyRead);
 } else {
-  freeList.push(buffer.getBufferindex());
-  // buffer will be deleted as per the eviction policy.
+  // there is no data, so it is immediately returned to the free list.
+  placeBufferOnFreeList("failed read", buffer);

Review Comment:
   This may result in IllegalStateException propogating to AbfsInputStream.
   
   This line will add the buffer into freeList, from which this index shall be 
taken by readBuffer b1.
   Now, after sometime, let this buffer from completedList needs to be evicted, 
it would come to 
https://github.com/steveloughran/hadoop/blob/azure/HADOOP-18521-buffer-manager/hadoop-tools/hadoop-azure/src/main/java/org/apache/hadoop/fs/azurebfs/services/ReadBufferManager.java#L408,
 two things can happen:
   
   1. freeList still has this index: it will throw IllegalStateException
   2. freeList doesn't have: it will throw IllegalStateException from 
https://github.com/steveloughran/hadoop/blob/azure/HADOOP-18521-buffer-manager/hadoop-tools/hadoop-azure/src/main/java/org/apache/hadoop/fs/azurebfs/services/ReadBufferManager.java#L411.
 



##
hadoop-tools/hadoop-azure/src/main/java/org/apache/hadoop/fs/azurebfs/services/ReadBufferManager.java:
##
@@ -454,31 +588,39 @@ ReadBuffer getNextBlockToRead() throws 
InterruptedException {
*/
   void doneReading(final ReadBuffer buffer, final ReadBufferStatus result, 
final int bytesActuallyRead) {
 if (LOGGER.isTraceEnabled()) {
-  LOGGER.trace("ReadBufferWorker completed read file {} for offset {} 
outcome {} bytes {}",
-  buffer.getStream().getPath(),  buffer.getOffset(), result, 
bytesActuallyRead);
-}
-synchronized (this) {
-  // If this buffer has already been purged during
-  // close of InputStream then we don't update the lists.
-  if (inProgressList.contains(buffer)) {
-inProgressList.remove(buffer);
+  LO

[jira] [Commented] (HADOOP-18521) ABFS ReadBufferManager buffer sharing across concurrent HTTP requests

2022-11-08 Thread ASF GitHub Bot (Jira)


[ 
https://issues.apache.org/jira/browse/HADOOP-18521?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17630503#comment-17630503
 ] 

ASF GitHub Bot commented on HADOOP-18521:
-

hadoop-yetus commented on PR #5117:
URL: https://github.com/apache/hadoop/pull/5117#issuecomment-1307460345

   :confetti_ball: **+1 overall**
   
   
   
   
   
   
   | Vote | Subsystem | Runtime |  Logfile | Comment |
   |::|--:|:|::|:---:|
   | +0 :ok: |  reexec  |   0m 50s |  |  Docker mode activated.  |
    _ Prechecks _ |
   | +1 :green_heart: |  dupname  |   0m  0s |  |  No case conflicting files 
found.  |
   | +0 :ok: |  codespell  |   0m  1s |  |  codespell was not available.  |
   | +0 :ok: |  detsecrets  |   0m  1s |  |  detect-secrets was not available.  
|
   | +1 :green_heart: |  @author  |   0m  0s |  |  The patch does not contain 
any @author tags.  |
   | +1 :green_heart: |  test4tests  |   0m  0s |  |  The patch appears to 
include 3 new or modified test files.  |
    _ trunk Compile Tests _ |
   | +1 :green_heart: |  mvninstall  |  41m 44s |  |  trunk passed  |
   | +1 :green_heart: |  compile  |   0m 48s |  |  trunk passed with JDK 
Ubuntu-11.0.16+8-post-Ubuntu-0ubuntu120.04  |
   | +1 :green_heart: |  compile  |   0m 43s |  |  trunk passed with JDK 
Private Build-1.8.0_342-8u342-b07-0ubuntu1~20.04-b07  |
   | +1 :green_heart: |  checkstyle  |   0m 48s |  |  trunk passed  |
   | +1 :green_heart: |  mvnsite  |   1m  3s |  |  trunk passed  |
   | +1 :green_heart: |  javadoc  |   0m 48s |  |  trunk passed with JDK 
Ubuntu-11.0.16+8-post-Ubuntu-0ubuntu120.04  |
   | +1 :green_heart: |  javadoc  |   0m 38s |  |  trunk passed with JDK 
Private Build-1.8.0_342-8u342-b07-0ubuntu1~20.04-b07  |
   | +1 :green_heart: |  spotbugs  |   1m 22s |  |  trunk passed  |
   | +1 :green_heart: |  shadedclient  |  23m 54s |  |  branch has no errors 
when building and testing our client artifacts.  |
    _ Patch Compile Tests _ |
   | +1 :green_heart: |  mvninstall  |   0m 34s |  |  the patch passed  |
   | +1 :green_heart: |  compile  |   0m 37s |  |  the patch passed with JDK 
Ubuntu-11.0.16+8-post-Ubuntu-0ubuntu120.04  |
   | +1 :green_heart: |  javac  |   0m 37s |  |  the patch passed  |
   | +1 :green_heart: |  compile  |   0m 31s |  |  the patch passed with JDK 
Private Build-1.8.0_342-8u342-b07-0ubuntu1~20.04-b07  |
   | +1 :green_heart: |  javac  |   0m 31s |  |  the patch passed  |
   | +1 :green_heart: |  blanks  |   0m  0s |  |  The patch has no blanks 
issues.  |
   | -0 :warning: |  checkstyle  |   0m 22s | 
[/results-checkstyle-hadoop-tools_hadoop-azure.txt](https://ci-hadoop.apache.org/job/hadoop-multibranch/job/PR-5117/3/artifact/out/results-checkstyle-hadoop-tools_hadoop-azure.txt)
 |  hadoop-tools/hadoop-azure: The patch generated 22 new + 1 unchanged - 0 
fixed = 23 total (was 1)  |
   | +1 :green_heart: |  mvnsite  |   0m 35s |  |  the patch passed  |
   | +1 :green_heart: |  javadoc  |   0m 28s |  |  the patch passed with JDK 
Ubuntu-11.0.16+8-post-Ubuntu-0ubuntu120.04  |
   | +1 :green_heart: |  javadoc  |   0m 25s |  |  the patch passed with JDK 
Private Build-1.8.0_342-8u342-b07-0ubuntu1~20.04-b07  |
   | +1 :green_heart: |  spotbugs  |   1m  9s |  |  the patch passed  |
   | +1 :green_heart: |  shadedclient  |  23m 15s |  |  patch has no errors 
when building and testing our client artifacts.  |
    _ Other Tests _ |
   | +1 :green_heart: |  unit  |   2m  7s |  |  hadoop-azure in the patch 
passed.  |
   | +1 :green_heart: |  asflicense  |   0m 40s |  |  The patch does not 
generate ASF License warnings.  |
   |  |   | 104m 34s |  |  |
   
   
   | Subsystem | Report/Notes |
   |--:|:-|
   | Docker | ClientAPI=1.41 ServerAPI=1.41 base: 
https://ci-hadoop.apache.org/job/hadoop-multibranch/job/PR-5117/3/artifact/out/Dockerfile
 |
   | GITHUB PR | https://github.com/apache/hadoop/pull/5117 |
   | Optional Tests | dupname asflicense compile javac javadoc mvninstall 
mvnsite unit shadedclient spotbugs checkstyle codespell detsecrets |
   | uname | Linux 1cf2fc9c924a 4.15.0-191-generic #202-Ubuntu SMP Thu Aug 4 
01:49:29 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux |
   | Build tool | maven |
   | Personality | dev-support/bin/hadoop.sh |
   | git revision | trunk / c295fb241de7c160a1cba5b955f29f2f30376520 |
   | Default Java | Private Build-1.8.0_342-8u342-b07-0ubuntu1~20.04-b07 |
   | Multi-JDK versions | 
/usr/lib/jvm/java-11-openjdk-amd64:Ubuntu-11.0.16+8-post-Ubuntu-0ubuntu120.04 
/usr/lib/jvm/java-8-openjdk-amd64:Private 
Build-1.8.0_342-8u342-b07-0ubuntu1~20.04-b07 |
   |  Test Results | 
https://ci-hadoop.apache.org/job/hadoop-multibranch/job/PR-5117/3/testReport/ |
   | Max. process+thread count | 606 (vs. ulimit of 5500) |
   | modules | C: hadoop-tools/hadoop-azure U: hadoop-tools/hadoop-azure |
   | Console output | 
https://ci-hadoop.apache.org/job/hadoop

[jira] [Commented] (HADOOP-18521) ABFS ReadBufferManager buffer sharing across concurrent HTTP requests

2022-11-08 Thread ASF GitHub Bot (Jira)


[ 
https://issues.apache.org/jira/browse/HADOOP-18521?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17630413#comment-17630413
 ] 

ASF GitHub Bot commented on HADOOP-18521:
-

steveloughran commented on PR #5117:
URL: https://github.com/apache/hadoop/pull/5117#issuecomment-1307225146

   going to have to rebase this.
   
   i also intend to have prefetch threads update the input streams with
   * gauge of active prefetches
   * amount of data/duration
   measuring how much data was discarded for a stream would be interesting too, 
but a bit fiddlier
   
   reader thread jsut gets iostats off the stream, casts to IOStatisticsStore 
then uses it as a duration tracker and gauge stats source; straightforward




> ABFS ReadBufferManager buffer sharing across concurrent HTTP requests
> -
>
> Key: HADOOP-18521
> URL: https://issues.apache.org/jira/browse/HADOOP-18521
> Project: Hadoop Common
>  Issue Type: Bug
>  Components: fs/azure
>Affects Versions: 3.3.2, 3.3.3, 3.3.4
>Reporter: Steve Loughran
>Assignee: Steve Loughran
>Priority: Critical
>  Labels: pull-request-available
>
> AbfsInputStream.close() can trigger the return of buffers used for active 
> prefetch GET requests into the ReadBufferManager free buffer pool.
> A subsequent prefetch by a different stream in the same process may acquire 
> this same buffer. This can lead to risk of corruption of its own prefetched 
> data, data which may then be returned to that other thread.
> On releases without the fix for this (3.3.2 to 3.3.4), the bug can be avoided 
> by disabling all prefetching 
> {code}
> fs.azure.readaheadqueue.depth
> {code}



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

-
To unsubscribe, e-mail: common-issues-unsubscr...@hadoop.apache.org
For additional commands, e-mail: common-issues-h...@hadoop.apache.org



[jira] [Commented] (HADOOP-18521) ABFS ReadBufferManager buffer sharing across concurrent HTTP requests

2022-11-07 Thread ASF GitHub Bot (Jira)


[ 
https://issues.apache.org/jira/browse/HADOOP-18521?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17629990#comment-17629990
 ] 

ASF GitHub Bot commented on HADOOP-18521:
-

hadoop-yetus commented on PR #5117:
URL: https://github.com/apache/hadoop/pull/5117#issuecomment-1306093551

   :confetti_ball: **+1 overall**
   
   
   
   
   
   
   | Vote | Subsystem | Runtime |  Logfile | Comment |
   |::|--:|:|::|:---:|
   | +0 :ok: |  reexec  |   0m 52s |  |  Docker mode activated.  |
    _ Prechecks _ |
   | +1 :green_heart: |  dupname  |   0m  0s |  |  No case conflicting files 
found.  |
   | +0 :ok: |  codespell  |   0m  0s |  |  codespell was not available.  |
   | +0 :ok: |  detsecrets  |   0m  0s |  |  detect-secrets was not available.  
|
   | +1 :green_heart: |  @author  |   0m  0s |  |  The patch does not contain 
any @author tags.  |
   | +1 :green_heart: |  test4tests  |   0m  0s |  |  The patch appears to 
include 4 new or modified test files.  |
    _ trunk Compile Tests _ |
   | +1 :green_heart: |  mvninstall  |  42m  0s |  |  trunk passed  |
   | +1 :green_heart: |  compile  |   0m 48s |  |  trunk passed with JDK 
Ubuntu-11.0.16+8-post-Ubuntu-0ubuntu120.04  |
   | +1 :green_heart: |  compile  |   0m 41s |  |  trunk passed with JDK 
Private Build-1.8.0_342-8u342-b07-0ubuntu1~20.04-b07  |
   | +1 :green_heart: |  checkstyle  |   0m 40s |  |  trunk passed  |
   | +1 :green_heart: |  mvnsite  |   0m 47s |  |  trunk passed  |
   | +1 :green_heart: |  javadoc  |   0m 46s |  |  trunk passed with JDK 
Ubuntu-11.0.16+8-post-Ubuntu-0ubuntu120.04  |
   | +1 :green_heart: |  javadoc  |   0m 37s |  |  trunk passed with JDK 
Private Build-1.8.0_342-8u342-b07-0ubuntu1~20.04-b07  |
   | +1 :green_heart: |  spotbugs  |   1m 25s |  |  trunk passed  |
   | +1 :green_heart: |  shadedclient  |  24m  2s |  |  branch has no errors 
when building and testing our client artifacts.  |
    _ Patch Compile Tests _ |
   | +1 :green_heart: |  mvninstall  |   0m 34s |  |  the patch passed  |
   | +1 :green_heart: |  compile  |   0m 37s |  |  the patch passed with JDK 
Ubuntu-11.0.16+8-post-Ubuntu-0ubuntu120.04  |
   | +1 :green_heart: |  javac  |   0m 37s |  |  the patch passed  |
   | +1 :green_heart: |  compile  |   0m 31s |  |  the patch passed with JDK 
Private Build-1.8.0_342-8u342-b07-0ubuntu1~20.04-b07  |
   | +1 :green_heart: |  javac  |   0m 31s |  |  the patch passed  |
   | +1 :green_heart: |  blanks  |   0m  0s |  |  The patch has no blanks 
issues.  |
   | -0 :warning: |  checkstyle  |   0m 21s | 
[/results-checkstyle-hadoop-tools_hadoop-azure.txt](https://ci-hadoop.apache.org/job/hadoop-multibranch/job/PR-5117/2/artifact/out/results-checkstyle-hadoop-tools_hadoop-azure.txt)
 |  hadoop-tools/hadoop-azure: The patch generated 22 new + 3 unchanged - 0 
fixed = 25 total (was 3)  |
   | +1 :green_heart: |  mvnsite  |   0m 34s |  |  the patch passed  |
   | +1 :green_heart: |  javadoc  |   0m 26s |  |  the patch passed with JDK 
Ubuntu-11.0.16+8-post-Ubuntu-0ubuntu120.04  |
   | +1 :green_heart: |  javadoc  |   0m 25s |  |  the patch passed with JDK 
Private Build-1.8.0_342-8u342-b07-0ubuntu1~20.04-b07  |
   | +1 :green_heart: |  spotbugs  |   1m 11s |  |  the patch passed  |
   | +1 :green_heart: |  shadedclient  |  23m 32s |  |  patch has no errors 
when building and testing our client artifacts.  |
    _ Other Tests _ |
   | +1 :green_heart: |  unit  |   2m  7s |  |  hadoop-azure in the patch 
passed.  |
   | +1 :green_heart: |  asflicense  |   0m 38s |  |  The patch does not 
generate ASF License warnings.  |
   |  |   | 104m 39s |  |  |
   
   
   | Subsystem | Report/Notes |
   |--:|:-|
   | Docker | ClientAPI=1.41 ServerAPI=1.41 base: 
https://ci-hadoop.apache.org/job/hadoop-multibranch/job/PR-5117/2/artifact/out/Dockerfile
 |
   | GITHUB PR | https://github.com/apache/hadoop/pull/5117 |
   | Optional Tests | dupname asflicense compile javac javadoc mvninstall 
mvnsite unit shadedclient spotbugs checkstyle codespell detsecrets |
   | uname | Linux d1321bc3e889 4.15.0-191-generic #202-Ubuntu SMP Thu Aug 4 
01:49:29 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux |
   | Build tool | maven |
   | Personality | dev-support/bin/hadoop.sh |
   | git revision | trunk / ddd1a32528a819c8f05eb87624148eb24b324931 |
   | Default Java | Private Build-1.8.0_342-8u342-b07-0ubuntu1~20.04-b07 |
   | Multi-JDK versions | 
/usr/lib/jvm/java-11-openjdk-amd64:Ubuntu-11.0.16+8-post-Ubuntu-0ubuntu120.04 
/usr/lib/jvm/java-8-openjdk-amd64:Private 
Build-1.8.0_342-8u342-b07-0ubuntu1~20.04-b07 |
   |  Test Results | 
https://ci-hadoop.apache.org/job/hadoop-multibranch/job/PR-5117/2/testReport/ |
   | Max. process+thread count | 594 (vs. ulimit of 5500) |
   | modules | C: hadoop-tools/hadoop-azure U: hadoop-tools/hadoop-azure |
   | Console output | 
https://ci-hadoop.apache.org/job/hadoop

[jira] [Commented] (HADOOP-18521) ABFS ReadBufferManager buffer sharing across concurrent HTTP requests

2022-11-07 Thread ASF GitHub Bot (Jira)


[ 
https://issues.apache.org/jira/browse/HADOOP-18521?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17629975#comment-17629975
 ] 

ASF GitHub Bot commented on HADOOP-18521:
-

hadoop-yetus commented on PR #5117:
URL: https://github.com/apache/hadoop/pull/5117#issuecomment-1306078980

   :confetti_ball: **+1 overall**
   
   
   
   
   
   
   | Vote | Subsystem | Runtime |  Logfile | Comment |
   |::|--:|:|::|:---:|
   | +0 :ok: |  reexec  |   2m 50s |  |  Docker mode activated.  |
    _ Prechecks _ |
   | +1 :green_heart: |  dupname  |   0m  0s |  |  No case conflicting files 
found.  |
   | +0 :ok: |  codespell  |   0m  1s |  |  codespell was not available.  |
   | +0 :ok: |  detsecrets  |   0m  1s |  |  detect-secrets was not available.  
|
   | +1 :green_heart: |  @author  |   0m  0s |  |  The patch does not contain 
any @author tags.  |
   | +1 :green_heart: |  test4tests  |   0m  0s |  |  The patch appears to 
include 4 new or modified test files.  |
    _ trunk Compile Tests _ |
   | +1 :green_heart: |  mvninstall  |  39m 34s |  |  trunk passed  |
   | +1 :green_heart: |  compile  |   0m 54s |  |  trunk passed with JDK 
Ubuntu-11.0.16+8-post-Ubuntu-0ubuntu120.04  |
   | +1 :green_heart: |  compile  |   0m 51s |  |  trunk passed with JDK 
Private Build-1.8.0_342-8u342-b07-0ubuntu1~20.04-b07  |
   | +1 :green_heart: |  checkstyle  |   0m 43s |  |  trunk passed  |
   | +1 :green_heart: |  mvnsite  |   0m 53s |  |  trunk passed  |
   | +1 :green_heart: |  javadoc  |   0m 53s |  |  trunk passed with JDK 
Ubuntu-11.0.16+8-post-Ubuntu-0ubuntu120.04  |
   | +1 :green_heart: |  javadoc  |   0m 46s |  |  trunk passed with JDK 
Private Build-1.8.0_342-8u342-b07-0ubuntu1~20.04-b07  |
   | +1 :green_heart: |  spotbugs  |   1m 23s |  |  trunk passed  |
   | +1 :green_heart: |  shadedclient  |  20m 45s |  |  branch has no errors 
when building and testing our client artifacts.  |
    _ Patch Compile Tests _ |
   | +1 :green_heart: |  mvninstall  |   0m 38s |  |  the patch passed  |
   | +1 :green_heart: |  compile  |   0m 38s |  |  the patch passed with JDK 
Ubuntu-11.0.16+8-post-Ubuntu-0ubuntu120.04  |
   | +1 :green_heart: |  javac  |   0m 38s |  |  the patch passed  |
   | +1 :green_heart: |  compile  |   0m 34s |  |  the patch passed with JDK 
Private Build-1.8.0_342-8u342-b07-0ubuntu1~20.04-b07  |
   | +1 :green_heart: |  javac  |   0m 34s |  |  the patch passed  |
   | +1 :green_heart: |  blanks  |   0m  0s |  |  The patch has no blanks 
issues.  |
   | -0 :warning: |  checkstyle  |   0m 25s | 
[/results-checkstyle-hadoop-tools_hadoop-azure.txt](https://ci-hadoop.apache.org/job/hadoop-multibranch/job/PR-5117/1/artifact/out/results-checkstyle-hadoop-tools_hadoop-azure.txt)
 |  hadoop-tools/hadoop-azure: The patch generated 22 new + 3 unchanged - 0 
fixed = 25 total (was 3)  |
   | +1 :green_heart: |  mvnsite  |   0m 37s |  |  the patch passed  |
   | +1 :green_heart: |  javadoc  |   0m 27s |  |  the patch passed with JDK 
Ubuntu-11.0.16+8-post-Ubuntu-0ubuntu120.04  |
   | +1 :green_heart: |  javadoc  |   0m 28s |  |  the patch passed with JDK 
Private Build-1.8.0_342-8u342-b07-0ubuntu1~20.04-b07  |
   | +1 :green_heart: |  spotbugs  |   1m 10s |  |  the patch passed  |
   | +1 :green_heart: |  shadedclient  |  20m 39s |  |  patch has no errors 
when building and testing our client artifacts.  |
    _ Other Tests _ |
   | +1 :green_heart: |  unit  |   2m 15s |  |  hadoop-azure in the patch 
passed.  |
   | +1 :green_heart: |  asflicense  |   0m 43s |  |  The patch does not 
generate ASF License warnings.  |
   |  |   | 100m 14s |  |  |
   
   
   | Subsystem | Report/Notes |
   |--:|:-|
   | Docker | ClientAPI=1.41 ServerAPI=1.41 base: 
https://ci-hadoop.apache.org/job/hadoop-multibranch/job/PR-5117/1/artifact/out/Dockerfile
 |
   | GITHUB PR | https://github.com/apache/hadoop/pull/5117 |
   | Optional Tests | dupname asflicense compile javac javadoc mvninstall 
mvnsite unit shadedclient spotbugs checkstyle codespell detsecrets |
   | uname | Linux f5eb08c3f643 4.15.0-191-generic #202-Ubuntu SMP Thu Aug 4 
01:49:29 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux |
   | Build tool | maven |
   | Personality | dev-support/bin/hadoop.sh |
   | git revision | trunk / 86a8177aedb9f311384bd28038ffdc464c188168 |
   | Default Java | Private Build-1.8.0_342-8u342-b07-0ubuntu1~20.04-b07 |
   | Multi-JDK versions | 
/usr/lib/jvm/java-11-openjdk-amd64:Ubuntu-11.0.16+8-post-Ubuntu-0ubuntu120.04 
/usr/lib/jvm/java-8-openjdk-amd64:Private 
Build-1.8.0_342-8u342-b07-0ubuntu1~20.04-b07 |
   |  Test Results | 
https://ci-hadoop.apache.org/job/hadoop-multibranch/job/PR-5117/1/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

[jira] [Commented] (HADOOP-18521) ABFS ReadBufferManager buffer sharing across concurrent HTTP requests

2022-11-07 Thread ASF GitHub Bot (Jira)


[ 
https://issues.apache.org/jira/browse/HADOOP-18521?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17629937#comment-17629937
 ] 

ASF GitHub Bot commented on HADOOP-18521:
-

steveloughran opened a new pull request, #5117:
URL: https://github.com/apache/hadoop/pull/5117

   
   Addresses the issue by not trying to cancel in-progress reads when a stream
   is closed()...they are allowed to continue and then their data discarded.
   To enable discarding, AbfsInputStreams export their `closed` state in
   which is now AtomicBool internally so reader threads can probe it.
   
   The shared buffers now have owner tracking, which will reject
   * attempts to acquire an owned buffer
   * attempts to return a buffer not owned
   Plus
   * Lots of other invariants added to validate the state
   * useful to string values
   
   Also adds path and stream capability probe for the fix;
   cloudstore "pathcapability" probe can report this.
   Hadoop 3.3.2 added the path capability
   "fs.capability.paths.acls", so two probes can
   determine if abfs is exposed: 
   
   not vulnerable
 !hasPathCability("fs.capability.paths.acls")
 || hasPathCability("fs.azure.capability.prefetch.safe")
   
   vulnerable
 hasPathCability("fs.capability.paths.acls")
 && !hasPathCability("fs.azure.capability.prefetch.safe")
   
   It can also be demanded in an openFile() call.
   That block the code ever working on a version without
   the race condition. Possibly a bit excessive.
   
   ### How was this patch tested?
   
   needs more tests with multi GB csv files to validate the patch.
   Unable to come up with good tests to recreate the failure condition.
   
   
   ### For code changes:
   
   - [X] Does the title or this PR starts with the corresponding JIRA issue id 
(e.g. 'HADOOP-17799. Your PR title ...')?
   - [X] Object storage: have the integration tests been executed and the 
endpoint declared according to the connector-specific documentation?
   - [ ] If adding new dependencies to the code, are these dependencies 
licensed in a way that is compatible for inclusion under [ASF 
2.0](http://www.apache.org/legal/resolved.html#category-a)?
   - [ ] If applicable, have you updated the `LICENSE`, `LICENSE-binary`, 
`NOTICE-binary` files?
   
   




> ABFS ReadBufferManager buffer sharing across concurrent HTTP requests
> -
>
> Key: HADOOP-18521
> URL: https://issues.apache.org/jira/browse/HADOOP-18521
> Project: Hadoop Common
>  Issue Type: Bug
>  Components: fs/azure
>Affects Versions: 3.3.2, 3.3.3, 3.3.4
>Reporter: Steve Loughran
>Assignee: Steve Loughran
>Priority: Critical
>
> AbfsInputStream.close() can trigger the return of buffers used for active 
> prefetch GET requests into the ReadBufferManager free buffer pool.
> A subsequent prefetch by a different stream in the same process may acquire 
> this same buffer. This can lead to risk of corruption of its own prefetched 
> data, data which may then be returned to that other thread.
> On releases without the fix for this (3.3.2 to 3.3.4), the bug can be avoided 
> by disabling all prefetching 
> {code}
> fs.azure.readaheadqueue.depth
> {code}



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

-
To unsubscribe, e-mail: common-issues-unsubscr...@hadoop.apache.org
For additional commands, e-mail: common-issues-h...@hadoop.apache.org



[jira] [Commented] (HADOOP-18521) ABFS ReadBufferManager buffer sharing across concurrent HTTP requests

2022-11-05 Thread Steve Loughran (Jira)


[ 
https://issues.apache.org/jira/browse/HADOOP-18521?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17629339#comment-17629339
 ] 

Steve Loughran commented on HADOOP-18521:
-

This bug can be fixed by deleting one line from 
{{ReadBufferManager.purgeBuffersForStream()}}.

I am not going to provide a test for this as you need a multi GB CSV file and a 
build of spark configured to use your hadoop dist.

The latest build of cloudstore (https://github.com/steveloughran/cloudstore) 
has a command {{mkcsv}} which can create the file; the man page includes the 
spark binding info: 
https://github.com/steveloughran/cloudstore/blob/trunk/src/main/site/mkcsv.md

along with the fix, i am going to include a stream capability which the fs and 
stream can be probed for to declare that the fix is in. this allows for 
programmatic verification of the safety of releases, including with the 
cloudstore pathcapabilities command

> ABFS ReadBufferManager buffer sharing across concurrent HTTP requests
> -
>
> Key: HADOOP-18521
> URL: https://issues.apache.org/jira/browse/HADOOP-18521
> Project: Hadoop Common
>  Issue Type: Bug
>  Components: fs/azure
>Affects Versions: 3.3.2, 3.3.3, 3.3.4
>Reporter: Steve Loughran
>Assignee: Steve Loughran
>Priority: Critical
>
> AbfsInputStream.close() can trigger the return of buffers used for active 
> prefetch GET requests into the ReadBufferManager free buffer pool.
> A subsequent prefetch by a different stream in the same process may acquire 
> this same buffer. This can lead to risk of corruption of its own prefetched 
> data, data which may then be returned to that other thread.
> On releases without the fix for this (3.3.2 to 3.3.4), the bug can be avoided 
> by disabling all prefetching 
> {code}
> fs.azure.readaheadqueue.depth
> {code}



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

-
To unsubscribe, e-mail: common-issues-unsubscr...@hadoop.apache.org
For additional commands, e-mail: common-issues-h...@hadoop.apache.org