public class DuplicatingCheckpointOutputStream extends CheckpointStreamFactory.CheckpointStateOutputStream
closeAndGetSecondaryHandle()
. In contrast to that, exceptions from interactions with the primary stream
are immediately returned to the user. This class is used to write state for local recovery as a local (secondary)
copy of the (primary) state snapshot that is written to a (slower but highly-available) remote filesystem.Constructor and Description |
---|
DuplicatingCheckpointOutputStream(CheckpointStreamFactory.CheckpointStateOutputStream primaryOutputStream,
CheckpointStreamFactory.CheckpointStateOutputStream secondaryOutputStream) |
DuplicatingCheckpointOutputStream(CheckpointStreamFactory.CheckpointStateOutputStream primaryOutputStream,
CheckpointStreamFactory.CheckpointStateOutputStream secondaryOutputStream,
int bufferSize) |
Modifier and Type | Method and Description |
---|---|
void |
close()
This method should close the stream, if has not been closed before.
|
StreamStateHandle |
closeAndGetHandle()
Closes the stream and gets a state handle that can create an input stream
producing the data written to this stream.
|
StreamStateHandle |
closeAndGetPrimaryHandle()
Returns the state handle from the
primaryOutputStream . |
StreamStateHandle |
closeAndGetSecondaryHandle()
Returns the state handle from the
secondaryOutputStream . |
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.
|
Exception |
getSecondaryStreamException() |
void |
sync()
Flushes the data all the way to the persistent non-volatile storage (for example disks).
|
void |
write(byte[] b) |
void |
write(byte[] b,
int off,
int len) |
void |
write(int b) |
public DuplicatingCheckpointOutputStream(CheckpointStreamFactory.CheckpointStateOutputStream primaryOutputStream, CheckpointStreamFactory.CheckpointStateOutputStream secondaryOutputStream) throws IOException
IOException
public DuplicatingCheckpointOutputStream(CheckpointStreamFactory.CheckpointStateOutputStream primaryOutputStream, CheckpointStreamFactory.CheckpointStateOutputStream secondaryOutputStream, int bufferSize) throws IOException
IOException
public void write(int b) throws IOException
write
in class OutputStream
IOException
public void write(byte[] b) throws IOException
write
in class OutputStream
IOException
public void write(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 void close() throws IOException
CheckpointStreamFactory.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 CheckpointStreamFactory.CheckpointStateOutputStream.closeAndGetHandle()
.
close
in interface Closeable
close
in interface AutoCloseable
close
in class CheckpointStreamFactory.CheckpointStateOutputStream
IOException
- Thrown, if the stream cannot be closed.@Nullable public StreamStateHandle closeAndGetHandle() throws IOException
CheckpointStreamFactory.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 CheckpointStreamFactory.CheckpointStateOutputStream.close()
method removes the target resource when called.
closeAndGetHandle
in class CheckpointStreamFactory.CheckpointStateOutputStream
IOException
- Thrown, if the stream cannot be closed.public StreamStateHandle closeAndGetPrimaryHandle() throws IOException
primaryOutputStream
.IOException
public StreamStateHandle closeAndGetSecondaryHandle() throws IOException
secondaryOutputStream
. Also reports suppressed exceptions from earlier
interactions with that stream.IOException
public Exception getSecondaryStreamException()
Copyright © 2014–2020 The Apache Software Foundation. All rights reserved.