use of org.apache.flink.migration.runtime.checkpoint.KeyGroupState 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());
}
}
}
}
use of org.apache.flink.migration.runtime.checkpoint.KeyGroupState 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);
}
}
Aggregations