@InterfaceAudience.Private @InterfaceStability.Evolving public class S3AInputStream extends ObjectInputStream implements org.apache.hadoop.fs.CanSetReadahead, org.apache.hadoop.fs.CanUnbuffer, org.apache.hadoop.fs.StreamCapabilities, org.apache.hadoop.fs.statistics.IOStatisticsSource
toString() must also be considered unstable.| Modifier and Type | Field and Description |
|---|---|
static String |
E_NEGATIVE_READAHEAD_VALUE |
static String |
OPERATION_OPEN |
static String |
OPERATION_REOPEN |
| Constructor and Description |
|---|
S3AInputStream(ObjectReadParameters parameters)
Create the stream.
|
| Modifier and Type | Method and Description |
|---|---|
protected void |
abortInFinalizer()
Brute force stream close; invoked by
LeakReporter. |
int |
available() |
void |
close()
Close the stream.
|
long |
getContentRangeFinish() |
long |
getContentRangeStart() |
long |
getPos() |
long |
getReadahead()
Get the current readahead value.
|
software.amazon.awssdk.core.ResponseInputStream<software.amazon.awssdk.services.s3.model.GetObjectResponse> |
getWrappedStream()
Get the wrapped stream.
|
boolean |
hasCapability(String capability)
Declare the base capabilities implemented by this class and so by
all subclasses.
|
boolean |
isObjectStreamOpen()
Is the inner object stream open?
|
protected boolean |
isStreamOpen()
Probe for stream being open.
|
boolean |
markSupported() |
int |
read() |
int |
read(byte[] buf,
int off,
int len)
This updates the statistics on read operations started and whether
or not the read operation "completed", that is: returned the exact
number of bytes requested.
|
void |
readFully(long position,
byte[] buffer,
int offset,
int length)
Subclass
readFully() operation which only seeks at the start
of the series of operations; seeking back at the end. |
void |
readVectored(List<? extends org.apache.hadoop.fs.FileRange> ranges,
IntFunction<ByteBuffer> allocate)
Pass to
readVectored(List, IntFunction, Consumer)
with the VectoredReadUtils.LOG_BYTE_BUFFER_RELEASED releaser. |
void |
readVectored(List<? extends org.apache.hadoop.fs.FileRange> ranges,
IntFunction<ByteBuffer> allocate,
Consumer<ByteBuffer> release)
Vectored read implementation for S3AInputStream.
|
long |
remainingInCurrentRequest()
Bytes left in the current request.
|
long |
remainingInFile()
Bytes left in stream.
|
boolean |
resetConnection()
Forcibly reset the stream, by aborting the connection.
|
void |
seek(long targetPos) |
boolean |
seekToNewSource(long targetPos) |
void |
setReadahead(Long readahead) |
String |
toString()
String value includes statistics as well as stream state.
|
void |
unbuffer()
Closes the underlying S3 stream, and merges the
ObjectInputStream.streamStatistics
instance associated with the stream. |
static long |
validateReadahead(Long readahead)
from a possibly null Long value, return a valid
readahead.
|
finalize, getBoundedThreadPool, getBucket, getCallbacks, getContentLength, getContext, getInputPolicy, getIOStatistics, getKey, getObjectAttributes, getPathStr, getS3AStreamStatistics, getThreadIOStatistics, getUri, getVectoredIOContext, maxReadSizeForVectorReads, mergeThreadIOStatistics, minSeekForVectorReads, setInputPolicy, streamTyperead, readFully, validatePositionedReadArgsmark, read, reset, skippublic static final String E_NEGATIVE_READAHEAD_VALUE
public static final String OPERATION_OPEN
public static final String OPERATION_REOPEN
public S3AInputStream(ObjectReadParameters parameters)
parameters - creation parameters.protected boolean isStreamOpen()
isStreamOpen in class ObjectInputStreamprotected void abortInFinalizer()
LeakReporter.
All exceptions raised are ignored.abortInFinalizer in class ObjectInputStreampublic long getPos()
throws IOException
getPos in interface org.apache.hadoop.fs.SeekablegetPos in class org.apache.hadoop.fs.FSInputStreamIOExceptionpublic void seek(long targetPos)
throws IOException
seek in interface org.apache.hadoop.fs.Seekableseek in class org.apache.hadoop.fs.FSInputStreamIOExceptionpublic boolean seekToNewSource(long targetPos)
throws IOException
seekToNewSource in interface org.apache.hadoop.fs.SeekableseekToNewSource in class org.apache.hadoop.fs.FSInputStreamIOException@Retries.RetryTranslated public int read() throws IOException
read in class InputStreamIOException@Retries.RetryTranslated public int read(byte[] buf, int off, int len) throws IOException
read in class InputStreamIOException - if there are other problemspublic void close()
throws IOException
close in interface Closeableclose in interface AutoCloseableclose in class ObjectInputStreamIOException - on any problem@InterfaceStability.Unstable
public boolean resetConnection()
throws IOException
read() operation will trigger the opening of a new HTTPS
connection.
This is potentially very inefficient, and should only be invoked
in extreme circumstances. It logs at info for this reason.
Blocks until the abort is completed.IOException - if invoked on a closed stream.public int available()
throws IOException
available in class InputStreamIOException@InterfaceAudience.Private @InterfaceStability.Unstable public long remainingInFile()
@InterfaceAudience.Private @InterfaceStability.Unstable public long remainingInCurrentRequest()
@InterfaceAudience.Private @InterfaceStability.Unstable public long getContentRangeFinish()
@InterfaceAudience.Private @InterfaceStability.Unstable public long getContentRangeStart()
public boolean markSupported()
markSupported in class InputStream@InterfaceStability.Unstable public String toString()
toString in class ObjectInputStream@Retries.RetryTranslated public void readFully(long position, byte[] buffer, int offset, int length) throws IOException
readFully() operation which only seeks at the start
of the series of operations; seeking back at the end.
This is significantly higher performance if multiple read attempts are
needed to fetch the data, as it does not break the HTTP connection.
To maintain thread safety requirements, this operation is synchronized
for the duration of the sequence.
readFully in interface org.apache.hadoop.fs.PositionedReadablereadFully in class org.apache.hadoop.fs.FSInputStreamIOExceptionpublic void readVectored(List<? extends org.apache.hadoop.fs.FileRange> ranges, IntFunction<ByteBuffer> allocate) throws IOException
readVectored(List, IntFunction, Consumer)
with the VectoredReadUtils.LOG_BYTE_BUFFER_RELEASED releaser.readVectored in interface org.apache.hadoop.fs.PositionedReadableranges - the byte ranges to read.allocate - the function to allocate ByteBuffer.IOException - IOE if any.public void readVectored(List<? extends org.apache.hadoop.fs.FileRange> ranges, IntFunction<ByteBuffer> allocate, Consumer<ByteBuffer> release) throws IOException
readVectored in interface org.apache.hadoop.fs.PositionedReadableranges - the byte ranges to read.allocate - the function to allocate ByteBuffer.release - the function to release a ByteBuffer.IOException - IOE if any.public void setReadahead(Long readahead)
setReadahead in interface org.apache.hadoop.fs.CanSetReadaheadpublic long getReadahead()
public static long validateReadahead(@Nullable Long readahead)
readahead - new readaheadIllegalArgumentException - if the range is invalid.public void unbuffer()
ObjectInputStream.streamStatistics
instance associated with the stream.
Also sets the stopVectoredIOOperations flag to true such that
active vectored read operations are terminated. However termination of
old vectored reads are not guaranteed if a new vectored read operation
is initiated after unbuffer is called.unbuffer in interface org.apache.hadoop.fs.CanUnbufferpublic boolean hasCapability(String capability)
ObjectInputStreamSubclasses MUST override this if they add more capabilities, or actually remove any of these.
hasCapability in interface org.apache.hadoop.fs.StreamCapabilitieshasCapability in class ObjectInputStreamcapability - string to query the stream support for.@VisibleForTesting public boolean isObjectStreamOpen()
@VisibleForTesting public software.amazon.awssdk.core.ResponseInputStream<software.amazon.awssdk.services.s3.model.GetObjectResponse> getWrappedStream()
Copyright © 2008–2025 Apache Software Foundation. All rights reserved.