use of org.apache.flink.migration.streaming.runtime.tasks.StreamTaskStateList in project flink by apache.
the class SavepointV0Serializer method determineOperatorChainLength.
private int determineOperatorChainLength(TaskState taskState, ClassLoader userClassLoader) throws IOException, ClassNotFoundException {
Collection<SubtaskState> subtaskStates = taskState.getStates();
if (subtaskStates == null || subtaskStates.isEmpty()) {
return 0;
}
SubtaskState firstSubtaskState = subtaskStates.iterator().next();
Object toCastTaskStateList = firstSubtaskState.getState().deserializeValue(userClassLoader);
if (toCastTaskStateList instanceof StreamTaskStateList) {
StreamTaskStateList taskStateList = (StreamTaskStateList) toCastTaskStateList;
StreamTaskState[] streamTaskStates = taskStateList.getState(userClassLoader);
return streamTaskStates.length;
}
return 0;
}
use of org.apache.flink.migration.streaming.runtime.tasks.StreamTaskStateList in project flink by apache.
the class SavepointV0Serializer method convertSubtaskState.
private org.apache.flink.runtime.checkpoint.SubtaskState convertSubtaskState(SubtaskState subtaskState, int parallelInstanceIdx, ClassLoader userClassLoader, long checkpointID) throws Exception {
SerializedValue<StateHandle<?>> serializedValue = subtaskState.getState();
StreamTaskStateList stateList = (StreamTaskStateList) serializedValue.deserializeValue(userClassLoader);
StreamTaskState[] streamTaskStates = stateList.getState(userClassLoader);
List<StreamStateHandle> newChainStateList = Arrays.asList(new StreamStateHandle[streamTaskStates.length]);
KeyGroupsStateHandle newKeyedState = null;
for (int chainIdx = 0; chainIdx < streamTaskStates.length; ++chainIdx) {
StreamTaskState streamTaskState = streamTaskStates[chainIdx];
if (streamTaskState == null) {
continue;
}
newChainStateList.set(chainIdx, convertOperatorAndFunctionState(streamTaskState));
HashMap<String, KvStateSnapshot<?, ?, ?, ?>> oldKeyedState = streamTaskState.getKvStates();
if (null != oldKeyedState) {
Preconditions.checkState(null == newKeyedState, "Found more than one keyed state in chain");
newKeyedState = convertKeyedBackendState(oldKeyedState, parallelInstanceIdx, checkpointID);
}
}
ChainedStateHandle<StreamStateHandle> newChainedState = new ChainedStateHandle<>(newChainStateList);
ChainedStateHandle<OperatorStateHandle> nopChain = new ChainedStateHandle<>(Arrays.asList(new OperatorStateHandle[newChainedState.getLength()]));
return new org.apache.flink.runtime.checkpoint.SubtaskState(newChainedState, nopChain, nopChain, newKeyedState, null);
}
use of org.apache.flink.migration.streaming.runtime.tasks.StreamTaskStateList in project flink by apache.
the class MigrationV0ToV1Test method createTaskStatesOld.
private static Collection<org.apache.flink.migration.runtime.checkpoint.TaskState> createTaskStatesOld(int numTaskStates, int numSubtaskStates) throws Exception {
List<org.apache.flink.migration.runtime.checkpoint.TaskState> taskStates = new ArrayList<>(numTaskStates);
for (int i = 0; i < numTaskStates; i++) {
org.apache.flink.migration.runtime.checkpoint.TaskState taskState = new org.apache.flink.migration.runtime.checkpoint.TaskState(new JobVertexID(), numSubtaskStates);
for (int j = 0; j < numSubtaskStates; j++) {
StreamTaskState[] streamTaskStates = new StreamTaskState[2];
for (int k = 0; k < streamTaskStates.length; k++) {
StreamTaskState state = new StreamTaskState();
Tuple4<Integer, Integer, Integer, Integer> testState = new Tuple4<>(0, i, j, k);
if (j % 4 != 0) {
state.setFunctionState(new SerializedStateHandle<Serializable>(testState));
}
testState = new Tuple4<>(1, i, j, k);
state.setOperatorState(new SerializedStateHandle<>(testState));
if ((0 == k) && (i % 3 != 0)) {
HashMap<String, KvStateSnapshot<?, ?, ?, ?>> testKeyedState = new HashMap<>(2);
for (int l = 0; l < 2; ++l) {
String name = "keyed-" + l;
KvStateSnapshot<?, ?, ?, ?> testKeyedSnapshot = new MemValueState.Snapshot<>(IntSerializer.INSTANCE, VoidNamespaceSerializer.INSTANCE, IntSerializer.INSTANCE, new ValueStateDescriptor<>(name, Integer.class, 0), new byte[] { (byte) i, (byte) j });
testKeyedState.put(name, testKeyedSnapshot);
}
state.setKvStates(testKeyedState);
}
streamTaskStates[k] = state;
}
StreamTaskStateList streamTaskStateList = new StreamTaskStateList(streamTaskStates);
org.apache.flink.migration.util.SerializedValue<org.apache.flink.migration.runtime.state.StateHandle<?>> handle = new org.apache.flink.migration.util.SerializedValue<org.apache.flink.migration.runtime.state.StateHandle<?>>(streamTaskStateList);
taskState.putState(j, new org.apache.flink.migration.runtime.checkpoint.SubtaskState(handle, 0, 0));
}
taskStates.add(taskState);
}
return taskStates;
}
Aggregations