Java Code Examples for org.apache.flink.runtime.state.StreamStateHandle#discardState()
The following examples show how to use
org.apache.flink.runtime.state.StreamStateHandle#discardState() .
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example 1
Source File: GenericWriteAheadSink.java From Flink-CEPplus with Apache License 2.0 | 6 votes |
/** * Called when a checkpoint barrier arrives. It closes any open streams to the backend * and marks them as pending for committing to the external, third-party storage system. * * @param checkpointId the id of the latest received checkpoint. * @throws IOException in case something went wrong when handling the stream to the backend. */ private void saveHandleInState(final long checkpointId, final long timestamp) throws Exception { //only add handle if a new OperatorState was created since the last snapshot if (out != null) { int subtaskIdx = getRuntimeContext().getIndexOfThisSubtask(); StreamStateHandle handle = out.closeAndGetHandle(); PendingCheckpoint pendingCheckpoint = new PendingCheckpoint( checkpointId, subtaskIdx, timestamp, handle); if (pendingCheckpoints.contains(pendingCheckpoint)) { //we already have a checkpoint stored for that ID that may have been partially written, //so we discard this "alternate version" and use the stored checkpoint handle.discardState(); } else { pendingCheckpoints.add(pendingCheckpoint); } out = null; } }
Example 2
Source File: GenericWriteAheadSink.java From flink with Apache License 2.0 | 6 votes |
/** * Called when a checkpoint barrier arrives. It closes any open streams to the backend * and marks them as pending for committing to the external, third-party storage system. * * @param checkpointId the id of the latest received checkpoint. * @throws IOException in case something went wrong when handling the stream to the backend. */ private void saveHandleInState(final long checkpointId, final long timestamp) throws Exception { //only add handle if a new OperatorState was created since the last snapshot if (out != null) { int subtaskIdx = getRuntimeContext().getIndexOfThisSubtask(); StreamStateHandle handle = out.closeAndGetHandle(); PendingCheckpoint pendingCheckpoint = new PendingCheckpoint( checkpointId, subtaskIdx, timestamp, handle); if (pendingCheckpoints.contains(pendingCheckpoint)) { //we already have a checkpoint stored for that ID that may have been partially written, //so we discard this "alternate version" and use the stored checkpoint handle.discardState(); } else { pendingCheckpoints.add(pendingCheckpoint); } out = null; } }
Example 3
Source File: GenericWriteAheadSink.java From flink with Apache License 2.0 | 6 votes |
/** * Called when a checkpoint barrier arrives. It closes any open streams to the backend * and marks them as pending for committing to the external, third-party storage system. * * @param checkpointId the id of the latest received checkpoint. * @throws IOException in case something went wrong when handling the stream to the backend. */ private void saveHandleInState(final long checkpointId, final long timestamp) throws Exception { //only add handle if a new OperatorState was created since the last snapshot if (out != null) { int subtaskIdx = getRuntimeContext().getIndexOfThisSubtask(); StreamStateHandle handle = out.closeAndGetHandle(); PendingCheckpoint pendingCheckpoint = new PendingCheckpoint( checkpointId, subtaskIdx, timestamp, handle); if (pendingCheckpoints.contains(pendingCheckpoint)) { //we already have a checkpoint stored for that ID that may have been partially written, //so we discard this "alternate version" and use the stored checkpoint handle.discardState(); } else { pendingCheckpoints.add(pendingCheckpoint); } out = null; } }
Example 4
Source File: FsCheckpointStorageTest.java From Flink-CEPplus with Apache License 2.0 | 4 votes |
@Test public void testDirectoriesForExclusiveAndSharedState() throws Exception { final FileSystem fs = LocalFileSystem.getSharedInstance(); final Path checkpointDir = randomTempPath(); final Path sharedStateDir = randomTempPath(); FsCheckpointStorageLocation storageLocation = new FsCheckpointStorageLocation( fs, checkpointDir, sharedStateDir, randomTempPath(), CheckpointStorageLocationReference.getDefault(), FILE_SIZE_THRESHOLD); assertNotEquals(storageLocation.getCheckpointDirectory(), storageLocation.getSharedStateDirectory()); assertEquals(0, fs.listStatus(storageLocation.getCheckpointDirectory()).length); assertEquals(0, fs.listStatus(storageLocation.getSharedStateDirectory()).length); // create exclusive state CheckpointStateOutputStream exclusiveStream = storageLocation.createCheckpointStateOutputStream(CheckpointedStateScope.EXCLUSIVE); exclusiveStream.write(42); exclusiveStream.flush(); StreamStateHandle exclusiveHandle = exclusiveStream.closeAndGetHandle(); assertEquals(1, fs.listStatus(storageLocation.getCheckpointDirectory()).length); assertEquals(0, fs.listStatus(storageLocation.getSharedStateDirectory()).length); // create shared state CheckpointStateOutputStream sharedStream = storageLocation.createCheckpointStateOutputStream(CheckpointedStateScope.SHARED); sharedStream.write(42); sharedStream.flush(); StreamStateHandle sharedHandle = sharedStream.closeAndGetHandle(); assertEquals(1, fs.listStatus(storageLocation.getCheckpointDirectory()).length); assertEquals(1, fs.listStatus(storageLocation.getSharedStateDirectory()).length); // drop state exclusiveHandle.discardState(); sharedHandle.discardState(); }
Example 5
Source File: FsCheckpointStateOutputStreamTest.java From Flink-CEPplus with Apache License 2.0 | 4 votes |
private void runTest(int numBytes, int bufferSize, int threshold, boolean expectFile) throws Exception { FsCheckpointStreamFactory.CheckpointStateOutputStream stream = new FsCheckpointStreamFactory.FsCheckpointStateOutputStream( Path.fromLocalFile(tempDir.newFolder()), FileSystem.getLocalFileSystem(), bufferSize, threshold); Random rnd = new Random(); byte[] original = new byte[numBytes]; byte[] bytes = new byte[original.length]; rnd.nextBytes(original); System.arraycopy(original, 0, bytes, 0, original.length); // the test writes a mixture of writing individual bytes and byte arrays int pos = 0; while (pos < bytes.length) { boolean single = rnd.nextBoolean(); if (single) { stream.write(bytes[pos++]); } else { int num = rnd.nextInt(Math.min(10, bytes.length - pos)); stream.write(bytes, pos, num); pos += num; } } StreamStateHandle handle = stream.closeAndGetHandle(); if (expectFile) { assertTrue(handle instanceof FileStateHandle); } else { assertTrue(handle instanceof ByteStreamStateHandle); } // make sure the writing process did not alter the original byte array assertArrayEquals(original, bytes); try (InputStream inStream = handle.openInputStream()) { byte[] validation = new byte[bytes.length]; DataInputStream dataInputStream = new DataInputStream(inStream); dataInputStream.readFully(validation); assertArrayEquals(bytes, validation); } handle.discardState(); }
Example 6
Source File: FsCheckpointStateOutputStreamTest.java From Flink-CEPplus with Apache License 2.0 | 4 votes |
@Test public void testMixedBelowAndAboveThreshold() throws Exception { final byte[] state1 = new byte[1274673]; final byte[] state2 = new byte[1]; final byte[] state3 = new byte[0]; final byte[] state4 = new byte[177]; final Random rnd = new Random(); rnd.nextBytes(state1); rnd.nextBytes(state2); rnd.nextBytes(state3); rnd.nextBytes(state4); final File directory = tempDir.newFolder(); final Path basePath = Path.fromLocalFile(directory); final Supplier<CheckpointStateOutputStream> factory = () -> new FsCheckpointStateOutputStream(basePath, FileSystem.getLocalFileSystem(), 1024, 15); CheckpointStateOutputStream stream1 = factory.get(); CheckpointStateOutputStream stream2 = factory.get(); CheckpointStateOutputStream stream3 = factory.get(); stream1.write(state1); stream2.write(state2); stream3.write(state3); FileStateHandle handle1 = (FileStateHandle) stream1.closeAndGetHandle(); ByteStreamStateHandle handle2 = (ByteStreamStateHandle) stream2.closeAndGetHandle(); ByteStreamStateHandle handle3 = (ByteStreamStateHandle) stream3.closeAndGetHandle(); // use with try-with-resources StreamStateHandle handle4; try (CheckpointStreamFactory.CheckpointStateOutputStream stream4 = factory.get()) { stream4.write(state4); handle4 = stream4.closeAndGetHandle(); } // close before accessing handle CheckpointStreamFactory.CheckpointStateOutputStream stream5 = factory.get(); stream5.write(state4); stream5.close(); try { stream5.closeAndGetHandle(); fail(); } catch (IOException e) { // uh-huh } validateBytesInStream(handle1.openInputStream(), state1); handle1.discardState(); assertFalse(isDirectoryEmpty(directory)); ensureLocalFileDeleted(handle1.getFilePath()); validateBytesInStream(handle2.openInputStream(), state2); handle2.discardState(); assertFalse(isDirectoryEmpty(directory)); // nothing was written to the stream, so it will return nothing assertNull(handle3); assertFalse(isDirectoryEmpty(directory)); validateBytesInStream(handle4.openInputStream(), state4); handle4.discardState(); assertTrue(isDirectoryEmpty(directory)); }
Example 7
Source File: GenericWriteAheadSink.java From Flink-CEPplus with Apache License 2.0 | 4 votes |
@Override public void notifyCheckpointComplete(long checkpointId) throws Exception { super.notifyCheckpointComplete(checkpointId); synchronized (pendingCheckpoints) { Iterator<PendingCheckpoint> pendingCheckpointIt = pendingCheckpoints.iterator(); while (pendingCheckpointIt.hasNext()) { PendingCheckpoint pendingCheckpoint = pendingCheckpointIt.next(); long pastCheckpointId = pendingCheckpoint.checkpointId; int subtaskId = pendingCheckpoint.subtaskId; long timestamp = pendingCheckpoint.timestamp; StreamStateHandle streamHandle = pendingCheckpoint.stateHandle; if (pastCheckpointId <= checkpointId) { try { if (!committer.isCheckpointCommitted(subtaskId, pastCheckpointId)) { try (FSDataInputStream in = streamHandle.openInputStream()) { boolean success = sendValues( new ReusingMutableToRegularIteratorWrapper<>( new InputViewIterator<>( new DataInputViewStreamWrapper( in), serializer), serializer), pastCheckpointId, timestamp); if (success) { // in case the checkpoint was successfully committed, // discard its state from the backend and mark it for removal // in case it failed, we retry on the next checkpoint committer.commitCheckpoint(subtaskId, pastCheckpointId); streamHandle.discardState(); pendingCheckpointIt.remove(); } } } else { streamHandle.discardState(); pendingCheckpointIt.remove(); } } catch (Exception e) { // we have to break here to prevent a new (later) checkpoint // from being committed before this one LOG.error("Could not commit checkpoint.", e); break; } } } } }
Example 8
Source File: FsCheckpointStorageTest.java From flink with Apache License 2.0 | 4 votes |
@Test public void testDirectoriesForExclusiveAndSharedState() throws Exception { final FileSystem fs = LocalFileSystem.getSharedInstance(); final Path checkpointDir = randomTempPath(); final Path sharedStateDir = randomTempPath(); FsCheckpointStorageLocation storageLocation = new FsCheckpointStorageLocation( fs, checkpointDir, sharedStateDir, randomTempPath(), CheckpointStorageLocationReference.getDefault(), FILE_SIZE_THRESHOLD, WRITE_BUFFER_SIZE); assertNotEquals(storageLocation.getCheckpointDirectory(), storageLocation.getSharedStateDirectory()); assertEquals(0, fs.listStatus(storageLocation.getCheckpointDirectory()).length); assertEquals(0, fs.listStatus(storageLocation.getSharedStateDirectory()).length); // create exclusive state CheckpointStateOutputStream exclusiveStream = storageLocation.createCheckpointStateOutputStream(CheckpointedStateScope.EXCLUSIVE); exclusiveStream.write(42); exclusiveStream.flush(); StreamStateHandle exclusiveHandle = exclusiveStream.closeAndGetHandle(); assertEquals(1, fs.listStatus(storageLocation.getCheckpointDirectory()).length); assertEquals(0, fs.listStatus(storageLocation.getSharedStateDirectory()).length); // create shared state CheckpointStateOutputStream sharedStream = storageLocation.createCheckpointStateOutputStream(CheckpointedStateScope.SHARED); sharedStream.write(42); sharedStream.flush(); StreamStateHandle sharedHandle = sharedStream.closeAndGetHandle(); assertEquals(1, fs.listStatus(storageLocation.getCheckpointDirectory()).length); assertEquals(1, fs.listStatus(storageLocation.getSharedStateDirectory()).length); // drop state exclusiveHandle.discardState(); sharedHandle.discardState(); }
Example 9
Source File: FsCheckpointStateOutputStreamTest.java From flink with Apache License 2.0 | 4 votes |
private void runTest(int numBytes, int bufferSize, int threshold, boolean expectFile) throws Exception { FsCheckpointStreamFactory.CheckpointStateOutputStream stream = new FsCheckpointStreamFactory.FsCheckpointStateOutputStream( Path.fromLocalFile(tempDir.newFolder()), FileSystem.getLocalFileSystem(), bufferSize, threshold); Random rnd = new Random(); byte[] original = new byte[numBytes]; byte[] bytes = new byte[original.length]; rnd.nextBytes(original); System.arraycopy(original, 0, bytes, 0, original.length); // the test writes a mixture of writing individual bytes and byte arrays int pos = 0; while (pos < bytes.length) { boolean single = rnd.nextBoolean(); if (single) { stream.write(bytes[pos++]); } else { int num = rnd.nextBoolean() ? (bytes.length - pos) : rnd.nextInt(bytes.length - pos); stream.write(bytes, pos, num); pos += num; } } StreamStateHandle handle = stream.closeAndGetHandle(); if (expectFile) { assertTrue(handle instanceof FileStateHandle); } else { assertTrue(handle instanceof ByteStreamStateHandle); } // make sure the writing process did not alter the original byte array assertArrayEquals(original, bytes); try (InputStream inStream = handle.openInputStream()) { byte[] validation = new byte[bytes.length]; DataInputStream dataInputStream = new DataInputStream(inStream); dataInputStream.readFully(validation); assertArrayEquals(bytes, validation); } handle.discardState(); }
Example 10
Source File: FsCheckpointStateOutputStreamTest.java From flink with Apache License 2.0 | 4 votes |
@Test public void testMixedBelowAndAboveThreshold() throws Exception { final byte[] state1 = new byte[1274673]; final byte[] state2 = new byte[1]; final byte[] state3 = new byte[0]; final byte[] state4 = new byte[177]; final Random rnd = new Random(); rnd.nextBytes(state1); rnd.nextBytes(state2); rnd.nextBytes(state3); rnd.nextBytes(state4); final File directory = tempDir.newFolder(); final Path basePath = Path.fromLocalFile(directory); final Supplier<CheckpointStateOutputStream> factory = () -> new FsCheckpointStateOutputStream(basePath, FileSystem.getLocalFileSystem(), 1024, 15); CheckpointStateOutputStream stream1 = factory.get(); CheckpointStateOutputStream stream2 = factory.get(); CheckpointStateOutputStream stream3 = factory.get(); stream1.write(state1); stream2.write(state2); stream3.write(state3); FileStateHandle handle1 = (FileStateHandle) stream1.closeAndGetHandle(); ByteStreamStateHandle handle2 = (ByteStreamStateHandle) stream2.closeAndGetHandle(); ByteStreamStateHandle handle3 = (ByteStreamStateHandle) stream3.closeAndGetHandle(); // use with try-with-resources StreamStateHandle handle4; try (CheckpointStreamFactory.CheckpointStateOutputStream stream4 = factory.get()) { stream4.write(state4); handle4 = stream4.closeAndGetHandle(); } // close before accessing handle CheckpointStreamFactory.CheckpointStateOutputStream stream5 = factory.get(); stream5.write(state4); stream5.close(); try { stream5.closeAndGetHandle(); fail(); } catch (IOException e) { // uh-huh } validateBytesInStream(handle1.openInputStream(), state1); handle1.discardState(); assertFalse(isDirectoryEmpty(directory)); ensureLocalFileDeleted(handle1.getFilePath()); validateBytesInStream(handle2.openInputStream(), state2); handle2.discardState(); assertFalse(isDirectoryEmpty(directory)); // nothing was written to the stream, so it will return nothing assertNull(handle3); assertFalse(isDirectoryEmpty(directory)); validateBytesInStream(handle4.openInputStream(), state4); handle4.discardState(); assertTrue(isDirectoryEmpty(directory)); }
Example 11
Source File: GenericWriteAheadSink.java From flink with Apache License 2.0 | 4 votes |
@Override public void notifyCheckpointComplete(long checkpointId) throws Exception { super.notifyCheckpointComplete(checkpointId); synchronized (pendingCheckpoints) { Iterator<PendingCheckpoint> pendingCheckpointIt = pendingCheckpoints.iterator(); while (pendingCheckpointIt.hasNext()) { PendingCheckpoint pendingCheckpoint = pendingCheckpointIt.next(); long pastCheckpointId = pendingCheckpoint.checkpointId; int subtaskId = pendingCheckpoint.subtaskId; long timestamp = pendingCheckpoint.timestamp; StreamStateHandle streamHandle = pendingCheckpoint.stateHandle; if (pastCheckpointId <= checkpointId) { try { if (!committer.isCheckpointCommitted(subtaskId, pastCheckpointId)) { try (FSDataInputStream in = streamHandle.openInputStream()) { boolean success = sendValues( new ReusingMutableToRegularIteratorWrapper<>( new InputViewIterator<>( new DataInputViewStreamWrapper( in), serializer), serializer), pastCheckpointId, timestamp); if (success) { // in case the checkpoint was successfully committed, // discard its state from the backend and mark it for removal // in case it failed, we retry on the next checkpoint committer.commitCheckpoint(subtaskId, pastCheckpointId); streamHandle.discardState(); pendingCheckpointIt.remove(); } } } else { streamHandle.discardState(); pendingCheckpointIt.remove(); } } catch (Exception e) { // we have to break here to prevent a new (later) checkpoint // from being committed before this one LOG.error("Could not commit checkpoint.", e); break; } } } } }
Example 12
Source File: FsCheckpointStorageTest.java From flink with Apache License 2.0 | 4 votes |
@Test public void testDirectoriesForExclusiveAndSharedState() throws Exception { final FileSystem fs = LocalFileSystem.getSharedInstance(); final Path checkpointDir = randomTempPath(); final Path sharedStateDir = randomTempPath(); FsCheckpointStorageLocation storageLocation = new FsCheckpointStorageLocation( fs, checkpointDir, sharedStateDir, randomTempPath(), CheckpointStorageLocationReference.getDefault(), FILE_SIZE_THRESHOLD, WRITE_BUFFER_SIZE); assertNotEquals(storageLocation.getCheckpointDirectory(), storageLocation.getSharedStateDirectory()); assertEquals(0, fs.listStatus(storageLocation.getCheckpointDirectory()).length); assertEquals(0, fs.listStatus(storageLocation.getSharedStateDirectory()).length); // create exclusive state FsCheckpointStateOutputStream exclusiveStream = storageLocation.createCheckpointStateOutputStream(CheckpointedStateScope.EXCLUSIVE); exclusiveStream.write(42); exclusiveStream.flushToFile(); StreamStateHandle exclusiveHandle = exclusiveStream.closeAndGetHandle(); assertEquals(1, fs.listStatus(storageLocation.getCheckpointDirectory()).length); assertEquals(0, fs.listStatus(storageLocation.getSharedStateDirectory()).length); // create shared state FsCheckpointStateOutputStream sharedStream = storageLocation.createCheckpointStateOutputStream(CheckpointedStateScope.SHARED); sharedStream.write(42); sharedStream.flushToFile(); StreamStateHandle sharedHandle = sharedStream.closeAndGetHandle(); assertEquals(1, fs.listStatus(storageLocation.getCheckpointDirectory()).length); assertEquals(1, fs.listStatus(storageLocation.getSharedStateDirectory()).length); // drop state exclusiveHandle.discardState(); sharedHandle.discardState(); }
Example 13
Source File: FsCheckpointStateOutputStreamTest.java From flink with Apache License 2.0 | 4 votes |
private void runTest(int numBytes, int bufferSize, int threshold, boolean expectFile) throws Exception { FsCheckpointStreamFactory.CheckpointStateOutputStream stream = new FsCheckpointStreamFactory.FsCheckpointStateOutputStream( Path.fromLocalFile(tempDir.newFolder()), FileSystem.getLocalFileSystem(), bufferSize, threshold, relativePaths); Random rnd = new Random(); byte[] original = new byte[numBytes]; byte[] bytes = new byte[original.length]; rnd.nextBytes(original); System.arraycopy(original, 0, bytes, 0, original.length); // the test writes a mixture of writing individual bytes and byte arrays int pos = 0; while (pos < bytes.length) { boolean single = rnd.nextBoolean(); if (single) { stream.write(bytes[pos++]); } else { int num = rnd.nextBoolean() ? (bytes.length - pos) : rnd.nextInt(bytes.length - pos); stream.write(bytes, pos, num); pos += num; } } StreamStateHandle handle = stream.closeAndGetHandle(); if (expectFile) { assertTrue(handle instanceof FileStateHandle); } else { assertTrue(handle instanceof ByteStreamStateHandle); } // make sure the writing process did not alter the original byte array assertArrayEquals(original, bytes); try (InputStream inStream = handle.openInputStream()) { byte[] validation = new byte[bytes.length]; DataInputStream dataInputStream = new DataInputStream(inStream); dataInputStream.readFully(validation); assertArrayEquals(bytes, validation); } handle.discardState(); }
Example 14
Source File: FsCheckpointStateOutputStreamTest.java From flink with Apache License 2.0 | 4 votes |
@Test public void testMixedBelowAndAboveThreshold() throws Exception { final byte[] state1 = new byte[1274673]; final byte[] state2 = new byte[1]; final byte[] state3 = new byte[0]; final byte[] state4 = new byte[177]; final Random rnd = new Random(); rnd.nextBytes(state1); rnd.nextBytes(state2); rnd.nextBytes(state3); rnd.nextBytes(state4); final File directory = tempDir.newFolder(); final Path basePath = Path.fromLocalFile(directory); final Supplier<CheckpointStateOutputStream> factory = () -> new FsCheckpointStateOutputStream(basePath, FileSystem.getLocalFileSystem(), 1024, 15, relativePaths); CheckpointStateOutputStream stream1 = factory.get(); CheckpointStateOutputStream stream2 = factory.get(); CheckpointStateOutputStream stream3 = factory.get(); stream1.write(state1); stream2.write(state2); stream3.write(state3); FileStateHandle handle1 = (FileStateHandle) stream1.closeAndGetHandle(); ByteStreamStateHandle handle2 = (ByteStreamStateHandle) stream2.closeAndGetHandle(); ByteStreamStateHandle handle3 = (ByteStreamStateHandle) stream3.closeAndGetHandle(); // use with try-with-resources StreamStateHandle handle4; try (CheckpointStreamFactory.CheckpointStateOutputStream stream4 = factory.get()) { stream4.write(state4); handle4 = stream4.closeAndGetHandle(); } // close before accessing handle CheckpointStreamFactory.CheckpointStateOutputStream stream5 = factory.get(); stream5.write(state4); stream5.close(); try { stream5.closeAndGetHandle(); fail(); } catch (IOException e) { // uh-huh } validateBytesInStream(handle1.openInputStream(), state1); handle1.discardState(); assertFalse(isDirectoryEmpty(directory)); ensureLocalFileDeleted(handle1.getFilePath()); validateBytesInStream(handle2.openInputStream(), state2); handle2.discardState(); assertFalse(isDirectoryEmpty(directory)); // nothing was written to the stream, so it will return nothing assertNull(handle3); assertFalse(isDirectoryEmpty(directory)); validateBytesInStream(handle4.openInputStream(), state4); handle4.discardState(); assertTrue(isDirectoryEmpty(directory)); }
Example 15
Source File: GenericWriteAheadSink.java From flink with Apache License 2.0 | 4 votes |
@Override public void notifyCheckpointComplete(long checkpointId) throws Exception { super.notifyCheckpointComplete(checkpointId); synchronized (pendingCheckpoints) { Iterator<PendingCheckpoint> pendingCheckpointIt = pendingCheckpoints.iterator(); while (pendingCheckpointIt.hasNext()) { PendingCheckpoint pendingCheckpoint = pendingCheckpointIt.next(); long pastCheckpointId = pendingCheckpoint.checkpointId; int subtaskId = pendingCheckpoint.subtaskId; long timestamp = pendingCheckpoint.timestamp; StreamStateHandle streamHandle = pendingCheckpoint.stateHandle; if (pastCheckpointId <= checkpointId) { try { if (!committer.isCheckpointCommitted(subtaskId, pastCheckpointId)) { try (FSDataInputStream in = streamHandle.openInputStream()) { boolean success = sendValues( new ReusingMutableToRegularIteratorWrapper<>( new InputViewIterator<>( new DataInputViewStreamWrapper( in), serializer), serializer), pastCheckpointId, timestamp); if (success) { // in case the checkpoint was successfully committed, // discard its state from the backend and mark it for removal // in case it failed, we retry on the next checkpoint committer.commitCheckpoint(subtaskId, pastCheckpointId); streamHandle.discardState(); pendingCheckpointIt.remove(); } } } else { streamHandle.discardState(); pendingCheckpointIt.remove(); } } catch (Exception e) { // we have to break here to prevent a new (later) checkpoint // from being committed before this one LOG.error("Could not commit checkpoint.", e); break; } } } } }