/** * Called at {@link #open()} to clean-up the pending handle list. * It iterates over all restored pending handles, checks which ones are already * committed to the outside storage system and removes them from the list. */ private void cleanRestoredHandles() throws Exception { synchronized (pendingCheckpoints) { Iterator<PendingCheckpoint> pendingCheckpointIt = pendingCheckpoints.iterator(); while (pendingCheckpointIt.hasNext()) { PendingCheckpoint pendingCheckpoint = pendingCheckpointIt.next(); if (committer.isCheckpointCommitted(pendingCheckpoint.subtaskId, pendingCheckpoint.checkpointId)) { pendingCheckpoint.stateHandle.discardState(); pendingCheckpointIt.remove(); } } } }
/** * 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; } }
streamHandle.discardState(); pendingCheckpointIt.remove(); streamHandle.discardState(); pendingCheckpointIt.remove();
@Override public void discardState() throws Exception { delegateStateHandle.discardState(); }
@Override public void discardState() throws Exception { delegateStateHandle.discardState(); }
@Override public void discardState() throws Exception { if (snapshotHandle != null) { snapshotHandle.discardState(); } }
@Override public void discardState() throws Exception { delegateStateHandle.discardState(); }
@Override public void discardState() throws Exception { delegate.discardState(); }
@Override public void discardState() throws Exception { wrappedStreamStateHandle.discardState(); }
@Override public void discardState() throws Exception { wrappedStreamStateHandle.discardState(); }
@Override public void discardState() throws Exception { wrappedStreamStateHandle.discardState(); }
@Override public void discardState() throws Exception { stateHandle.discardState(); }
@Override public void discardState() throws Exception { stateHandle.discardState(); }
@Override public void discardState() throws Exception { wrappedStreamStateHandle.discardState(); }
@Override public void discardState() throws Exception { delegateStateHandle.discardState(); }
@Override public void discardState() throws Exception { stateHandle.discardState(); }
@Override public void discardState() throws Exception { stateHandle.discardState(); }
/** * Called at {@link #open()} to clean-up the pending handle list. * It iterates over all restored pending handles, checks which ones are already * committed to the outside storage system and removes them from the list. */ private void cleanRestoredHandles() throws Exception { synchronized (pendingCheckpoints) { Iterator<PendingCheckpoint> pendingCheckpointIt = pendingCheckpoints.iterator(); while (pendingCheckpointIt.hasNext()) { PendingCheckpoint pendingCheckpoint = pendingCheckpointIt.next(); if (committer.isCheckpointCommitted(pendingCheckpoint.subtaskId, pendingCheckpoint.checkpointId)) { pendingCheckpoint.stateHandle.discardState(); pendingCheckpointIt.remove(); } } } }
/** * Called at {@link #open()} to clean-up the pending handle list. * It iterates over all restored pending handles, checks which ones are already * committed to the outside storage system and removes them from the list. */ private void cleanRestoredHandles() throws Exception { synchronized (pendingCheckpoints) { Iterator<PendingCheckpoint> pendingCheckpointIt = pendingCheckpoints.iterator(); while (pendingCheckpointIt.hasNext()) { PendingCheckpoint pendingCheckpoint = pendingCheckpointIt.next(); if (committer.isCheckpointCommitted(pendingCheckpoint.subtaskId, pendingCheckpoint.checkpointId)) { pendingCheckpoint.stateHandle.discardState(); pendingCheckpointIt.remove(); } } } }
@Override public void discardState() throws Exception { Exception collectedEx = null; try { super.discardState(); } catch (Exception e) { collectedEx = e; } try { metaDataState.discardState(); } catch (Exception e) { collectedEx = ExceptionUtils.firstOrSuppressed(e, collectedEx); } if (collectedEx != null) { throw collectedEx; } }