public final class FileBasedStateOutputStream extends CheckpointStateOutputStream
CheckpointStateOutputStream
that writes into a specified file and returns a FileStateHandle
upon closing.
Unlike the FsCheckpointStreamFactory.FsCheckpointStateOutputStream
,
this stream does not have a threshold below which it returns a memory byte stream handle, and
does not create random files, but writes to a specified file.
Constructor and Description |
---|
FileBasedStateOutputStream(FileSystem fileSystem,
Path path) |
Modifier and Type | Method and Description |
---|---|
void |
close()
This method should close the stream, if has not been closed before.
|
FileStateHandle |
closeAndGetHandle()
Closes the stream and gets a state handle that can create an input stream producing the data
written to this stream.
|
void |
flush()
Flushes the stream, writing any data currently buffered in stream implementation to the
proper output stream.
|
long |
getPos()
Gets the position of the stream (non-negative), defined as the number of bytes from the
beginning of the file to the current writing position.
|
boolean |
isClosed() |
void |
sync()
Flushes the data all the way to the persistent non-volatile storage (for example disks).
|
void |
write(byte[] b,
int off,
int len) |
void |
write(int b) |
write
public FileBasedStateOutputStream(FileSystem fileSystem, Path path) throws IOException
IOException
public final void write(int b) throws IOException
write
in class OutputStream
IOException
public final void write(@Nonnull byte[] b, int off, int len) throws IOException
write
in class OutputStream
IOException
public long getPos() throws IOException
FSDataOutputStream
This method must report accurately report the current position of the stream. Various components of the high-availability and recovery logic rely on the accurate
getPos
in class FSDataOutputStream
IOException
- Thrown if an I/O error occurs while obtaining the position from the
stream implementation.public void flush() throws IOException
FSDataOutputStream
A completed flush does not mean that the data is necessarily persistent. Data persistence
can is only assumed after calls to FSDataOutputStream.close()
or FSDataOutputStream.sync()
.
Implementation note: This overrides the method defined in OutputStream
as abstract
to force implementations of the FSDataOutputStream
to implement this method directly.
flush
in interface Flushable
flush
in class FSDataOutputStream
IOException
- Thrown if an I/O error occurs while flushing the stream.public void sync() throws IOException
FSDataOutputStream
sync
in class FSDataOutputStream
IOException
- Thrown if an I/O error occurspublic boolean isClosed()
public void close()
CheckpointStateOutputStream
The above implies that this method is intended to be the "unsuccessful close", such as
when cancelling the stream writing, or when an exception occurs. Closing the stream for the
successful case must go through CheckpointStateOutputStream.closeAndGetHandle()
.
close
in interface Closeable
close
in interface AutoCloseable
close
in class CheckpointStateOutputStream
@Nullable public FileStateHandle closeAndGetHandle() throws IOException
CheckpointStateOutputStream
This closing must be called (also when the caller is not interested in the handle) to
successfully close the stream and retain the produced resource. In contrast, the CheckpointStateOutputStream.close()
method removes the target resource when called.
closeAndGetHandle
in class CheckpointStateOutputStream
IOException
- Thrown, if the stream cannot be closed.Copyright © 2014–2024 The Apache Software Foundation. All rights reserved.