[ 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