Search in sources :

Example 1 with SubtaskState

use of org.apache.flink.migration.runtime.checkpoint.SubtaskState 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;
}
Also used : SubtaskState(org.apache.flink.migration.runtime.checkpoint.SubtaskState) StreamTaskStateList(org.apache.flink.migration.streaming.runtime.tasks.StreamTaskStateList) StreamTaskState(org.apache.flink.migration.streaming.runtime.tasks.StreamTaskState)

Example 2 with SubtaskState

use of org.apache.flink.migration.runtime.checkpoint.SubtaskState 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);
}
Also used : KvStateSnapshot(org.apache.flink.migration.runtime.state.KvStateSnapshot) KeyGroupsStateHandle(org.apache.flink.runtime.state.KeyGroupsStateHandle) ChainedStateHandle(org.apache.flink.runtime.state.ChainedStateHandle) MigrationStreamStateHandle(org.apache.flink.migration.state.MigrationStreamStateHandle) StreamStateHandle(org.apache.flink.runtime.state.StreamStateHandle) ByteStreamStateHandle(org.apache.flink.runtime.state.memory.ByteStreamStateHandle) MultiStreamStateHandle(org.apache.flink.runtime.state.MultiStreamStateHandle) SubtaskState(org.apache.flink.migration.runtime.checkpoint.SubtaskState) StreamTaskStateList(org.apache.flink.migration.streaming.runtime.tasks.StreamTaskStateList) MigrationKeyGroupStateHandle(org.apache.flink.migration.state.MigrationKeyGroupStateHandle) KeyGroupsStateHandle(org.apache.flink.runtime.state.KeyGroupsStateHandle) ChainedStateHandle(org.apache.flink.runtime.state.ChainedStateHandle) FileStateHandle(org.apache.flink.runtime.state.filesystem.FileStateHandle) AbstractFileStateHandle(org.apache.flink.migration.runtime.state.filesystem.AbstractFileStateHandle) OperatorStateHandle(org.apache.flink.runtime.state.OperatorStateHandle) MigrationStreamStateHandle(org.apache.flink.migration.state.MigrationStreamStateHandle) SerializedStateHandle(org.apache.flink.migration.runtime.state.memory.SerializedStateHandle) StreamStateHandle(org.apache.flink.runtime.state.StreamStateHandle) ByteStreamStateHandle(org.apache.flink.runtime.state.memory.ByteStreamStateHandle) StateHandle(org.apache.flink.migration.runtime.state.StateHandle) MultiStreamStateHandle(org.apache.flink.runtime.state.MultiStreamStateHandle) OperatorStateHandle(org.apache.flink.runtime.state.OperatorStateHandle) StreamTaskState(org.apache.flink.migration.streaming.runtime.tasks.StreamTaskState)

Example 3 with SubtaskState

use of org.apache.flink.migration.runtime.checkpoint.SubtaskState in project flink by apache.

the class SavepointV0Serializer method convertTaskState.

private org.apache.flink.runtime.checkpoint.TaskState convertTaskState(TaskState taskState, ClassLoader userClassLoader, long checkpointID) throws Exception {
    JobVertexID jobVertexID = taskState.getJobVertexID();
    int parallelism = taskState.getParallelism();
    int chainLength = determineOperatorChainLength(taskState, userClassLoader);
    org.apache.flink.runtime.checkpoint.TaskState newTaskState = new org.apache.flink.runtime.checkpoint.TaskState(jobVertexID, parallelism, parallelism, chainLength);
    if (chainLength > 0) {
        Map<Integer, SubtaskState> subtaskStates = taskState.getSubtaskStatesById();
        for (Map.Entry<Integer, SubtaskState> subtaskState : subtaskStates.entrySet()) {
            int parallelInstanceIdx = subtaskState.getKey();
            newTaskState.putState(parallelInstanceIdx, convertSubtaskState(subtaskState.getValue(), parallelInstanceIdx, userClassLoader, checkpointID));
        }
    }
    return newTaskState;
}
Also used : JobVertexID(org.apache.flink.runtime.jobgraph.JobVertexID) SubtaskState(org.apache.flink.migration.runtime.checkpoint.SubtaskState) StreamTaskState(org.apache.flink.migration.streaming.runtime.tasks.StreamTaskState) TaskState(org.apache.flink.migration.runtime.checkpoint.TaskState) HashMap(java.util.HashMap) Map(java.util.Map)

Example 4 with SubtaskState

use of org.apache.flink.migration.runtime.checkpoint.SubtaskState in project flink by apache.

the class SavepointV0Serializer method serializeOld.

@VisibleForTesting
public void serializeOld(SavepointV0 savepoint, DataOutputStream dos) throws IOException {
    dos.writeLong(savepoint.getCheckpointId());
    Collection<org.apache.flink.migration.runtime.checkpoint.TaskState> taskStates = savepoint.getOldTaskStates();
    dos.writeInt(taskStates.size());
    for (org.apache.flink.migration.runtime.checkpoint.TaskState taskState : savepoint.getOldTaskStates()) {
        // Vertex ID
        dos.writeLong(taskState.getJobVertexID().getLowerPart());
        dos.writeLong(taskState.getJobVertexID().getUpperPart());
        // Parallelism
        int parallelism = taskState.getParallelism();
        dos.writeInt(parallelism);
        // Sub task states
        dos.writeInt(taskState.getNumberCollectedStates());
        for (int i = 0; i < parallelism; i++) {
            SubtaskState subtaskState = taskState.getState(i);
            if (subtaskState != null) {
                dos.writeInt(i);
                SerializedValue<?> serializedValue = subtaskState.getState();
                if (serializedValue == null) {
                    // null
                    dos.writeInt(-1);
                } else {
                    byte[] serialized = serializedValue.getByteArray();
                    dos.writeInt(serialized.length);
                    dos.write(serialized, 0, serialized.length);
                }
                dos.writeLong(subtaskState.getStateSize());
                dos.writeLong(subtaskState.getDuration());
            }
        }
        // Key group states
        dos.writeInt(taskState.getNumberCollectedKvStates());
        for (int i = 0; i < parallelism; i++) {
            KeyGroupState keyGroupState = taskState.getKvState(i);
            if (keyGroupState != null) {
                dos.write(i);
                SerializedValue<?> serializedValue = keyGroupState.getKeyGroupState();
                if (serializedValue == null) {
                    // null
                    dos.writeInt(-1);
                } else {
                    byte[] serialized = serializedValue.getByteArray();
                    dos.writeInt(serialized.length);
                    dos.write(serialized, 0, serialized.length);
                }
                dos.writeLong(keyGroupState.getStateSize());
                dos.writeLong(keyGroupState.getDuration());
            }
        }
    }
}
Also used : SubtaskState(org.apache.flink.migration.runtime.checkpoint.SubtaskState) TaskState(org.apache.flink.migration.runtime.checkpoint.TaskState) KeyGroupState(org.apache.flink.migration.runtime.checkpoint.KeyGroupState) StreamTaskState(org.apache.flink.migration.streaming.runtime.tasks.StreamTaskState) TaskState(org.apache.flink.migration.runtime.checkpoint.TaskState) VisibleForTesting(org.apache.flink.annotation.VisibleForTesting)

Example 5 with SubtaskState

use of org.apache.flink.migration.runtime.checkpoint.SubtaskState in project flink by apache.

the class SavepointV0Serializer method deserialize.

@Override
public SavepointV1 deserialize(DataInputStream dis, ClassLoader userClassLoader) throws IOException {
    long checkpointId = dis.readLong();
    // Task states
    int numTaskStates = dis.readInt();
    List<TaskState> taskStates = new ArrayList<>(numTaskStates);
    for (int i = 0; i < numTaskStates; i++) {
        JobVertexID jobVertexId = new JobVertexID(dis.readLong(), dis.readLong());
        int parallelism = dis.readInt();
        // Add task state
        TaskState taskState = new TaskState(jobVertexId, parallelism);
        taskStates.add(taskState);
        // Sub task states
        int numSubTaskStates = dis.readInt();
        for (int j = 0; j < numSubTaskStates; j++) {
            int subtaskIndex = dis.readInt();
            SerializedValue<StateHandle<?>> serializedValue = readSerializedValueStateHandle(dis);
            long stateSize = dis.readLong();
            long duration = dis.readLong();
            SubtaskState subtaskState = new SubtaskState(serializedValue, stateSize, duration);
            taskState.putState(subtaskIndex, subtaskState);
        }
        // Key group states
        int numKvStates = dis.readInt();
        for (int j = 0; j < numKvStates; j++) {
            int keyGroupIndex = dis.readInt();
            SerializedValue<StateHandle<?>> serializedValue = readSerializedValueStateHandle(dis);
            long stateSize = dis.readLong();
            long duration = dis.readLong();
            KeyGroupState keyGroupState = new KeyGroupState(serializedValue, stateSize, duration);
            taskState.putKvState(keyGroupIndex, keyGroupState);
        }
    }
    try {
        return convertSavepoint(taskStates, userClassLoader, checkpointId);
    } catch (Exception e) {
        throw new IOException(e);
    }
}
Also used : SubtaskState(org.apache.flink.migration.runtime.checkpoint.SubtaskState) JobVertexID(org.apache.flink.runtime.jobgraph.JobVertexID) ArrayList(java.util.ArrayList) MigrationKeyGroupStateHandle(org.apache.flink.migration.state.MigrationKeyGroupStateHandle) KeyGroupsStateHandle(org.apache.flink.runtime.state.KeyGroupsStateHandle) ChainedStateHandle(org.apache.flink.runtime.state.ChainedStateHandle) FileStateHandle(org.apache.flink.runtime.state.filesystem.FileStateHandle) AbstractFileStateHandle(org.apache.flink.migration.runtime.state.filesystem.AbstractFileStateHandle) OperatorStateHandle(org.apache.flink.runtime.state.OperatorStateHandle) MigrationStreamStateHandle(org.apache.flink.migration.state.MigrationStreamStateHandle) SerializedStateHandle(org.apache.flink.migration.runtime.state.memory.SerializedStateHandle) StreamStateHandle(org.apache.flink.runtime.state.StreamStateHandle) ByteStreamStateHandle(org.apache.flink.runtime.state.memory.ByteStreamStateHandle) StateHandle(org.apache.flink.migration.runtime.state.StateHandle) MultiStreamStateHandle(org.apache.flink.runtime.state.MultiStreamStateHandle) KeyGroupState(org.apache.flink.migration.runtime.checkpoint.KeyGroupState) IOException(java.io.IOException) StreamTaskState(org.apache.flink.migration.streaming.runtime.tasks.StreamTaskState) TaskState(org.apache.flink.migration.runtime.checkpoint.TaskState) IOException(java.io.IOException)

Aggregations

SubtaskState (org.apache.flink.migration.runtime.checkpoint.SubtaskState)5 StreamTaskState (org.apache.flink.migration.streaming.runtime.tasks.StreamTaskState)5 TaskState (org.apache.flink.migration.runtime.checkpoint.TaskState)3 KeyGroupState (org.apache.flink.migration.runtime.checkpoint.KeyGroupState)2 StateHandle (org.apache.flink.migration.runtime.state.StateHandle)2 AbstractFileStateHandle (org.apache.flink.migration.runtime.state.filesystem.AbstractFileStateHandle)2 SerializedStateHandle (org.apache.flink.migration.runtime.state.memory.SerializedStateHandle)2 MigrationKeyGroupStateHandle (org.apache.flink.migration.state.MigrationKeyGroupStateHandle)2 MigrationStreamStateHandle (org.apache.flink.migration.state.MigrationStreamStateHandle)2 StreamTaskStateList (org.apache.flink.migration.streaming.runtime.tasks.StreamTaskStateList)2 JobVertexID (org.apache.flink.runtime.jobgraph.JobVertexID)2 ChainedStateHandle (org.apache.flink.runtime.state.ChainedStateHandle)2 KeyGroupsStateHandle (org.apache.flink.runtime.state.KeyGroupsStateHandle)2 MultiStreamStateHandle (org.apache.flink.runtime.state.MultiStreamStateHandle)2 OperatorStateHandle (org.apache.flink.runtime.state.OperatorStateHandle)2 StreamStateHandle (org.apache.flink.runtime.state.StreamStateHandle)2 FileStateHandle (org.apache.flink.runtime.state.filesystem.FileStateHandle)2 ByteStreamStateHandle (org.apache.flink.runtime.state.memory.ByteStreamStateHandle)2 IOException (java.io.IOException)1 ArrayList (java.util.ArrayList)1