Skip to content

Commit b87ead7

Browse files
authored
[FLINK-32092][tests] Integrate snapshot file-merging with existing IT cases (apache#24789)
1 parent 73a7e1c commit b87ead7

File tree

9 files changed

+38
-9
lines changed

9 files changed

+38
-9
lines changed

flink-runtime/src/main/java/org/apache/flink/runtime/state/OperatorStateRestoreOperation.java

+3-1
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
import org.apache.flink.core.fs.FSDataInputStream;
2525
import org.apache.flink.core.memory.DataInputView;
2626
import org.apache.flink.core.memory.DataInputViewStreamWrapper;
27+
import org.apache.flink.runtime.state.filemerging.EmptyFileMergingOperatorStreamStateHandle;
2728
import org.apache.flink.runtime.state.metainfo.StateMetaInfoSnapshot;
2829
import org.apache.flink.util.Preconditions;
2930

@@ -66,7 +67,8 @@ public Void restore() throws Exception {
6667

6768
for (OperatorStateHandle stateHandle : stateHandles) {
6869

69-
if (stateHandle == null) {
70+
if (stateHandle == null
71+
|| stateHandle instanceof EmptyFileMergingOperatorStreamStateHandle) {
7072
continue;
7173
}
7274

flink-runtime/src/main/java/org/apache/flink/runtime/state/filemerging/SegmentFileStateHandle.java

+2-1
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,8 @@ public Optional<byte[]> asBytesIfInMemory() {
106106

107107
@Override
108108
public PhysicalStateHandleID getStreamStateHandleID() {
109-
return new PhysicalStateHandleID(filePath.toUri().toString());
109+
return new PhysicalStateHandleID(
110+
String.format("%s-%d-%d", filePath.toUri(), startPos, stateSize));
110111
}
111112

112113
public long getStartPos() {

flink-streaming-java/src/main/java/org/apache/flink/streaming/runtime/tasks/StreamTask.java

+6-4
Original file line numberDiff line numberDiff line change
@@ -562,10 +562,12 @@ private CheckpointStorageAccess tryApplyFileMergingCheckpoint(
562562
return checkpointStorageAccess;
563563
}
564564
try {
565-
CheckpointStorageWorkerView mergingCheckpointStorageAccess =
566-
checkpointStorageAccess.toFileMergingStorage(
567-
fileMergingSnapshotManager, environment);
568-
return (CheckpointStorageAccess) mergingCheckpointStorageAccess;
565+
CheckpointStorageAccess mergingCheckpointStorageAccess =
566+
(CheckpointStorageAccess)
567+
checkpointStorageAccess.toFileMergingStorage(
568+
fileMergingSnapshotManager, environment);
569+
mergingCheckpointStorageAccess.initializeBaseLocationsForCheckpoint();
570+
return mergingCheckpointStorageAccess;
569571
} catch (IOException e) {
570572
LOG.warn(
571573
"Initiating FsMergingCheckpointStorageAccess failed "

flink-test-utils-parent/flink-test-utils/src/main/java/org/apache/flink/streaming/util/TestStreamEnvironment.java

+6-1
Original file line numberDiff line numberDiff line change
@@ -122,6 +122,9 @@ private static void randomizeConfiguration(MiniCluster miniCluster, Configuratio
122122
Duration.ofSeconds(2));
123123
randomize(conf, CheckpointingOptions.CLEANER_PARALLEL_MODE, true, false);
124124
randomize(conf, ExecutionOptions.SNAPSHOT_COMPRESSION, true, false);
125+
if (!conf.contains(CheckpointingOptions.FILE_MERGING_ENABLED)) {
126+
randomize(conf, CheckpointingOptions.FILE_MERGING_ENABLED, true);
127+
}
125128
}
126129

127130
randomize(
@@ -134,7 +137,9 @@ private static void randomizeConfiguration(MiniCluster miniCluster, Configuratio
134137
false);
135138

136139
// randomize ITTests for enabling state change log
137-
if (!conf.contains(StateChangelogOptions.ENABLE_STATE_CHANGE_LOG)) {
140+
// TODO: remove the file merging check after FLINK-32085
141+
if (!conf.contains(StateChangelogOptions.ENABLE_STATE_CHANGE_LOG)
142+
&& !conf.get(CheckpointingOptions.FILE_MERGING_ENABLED)) {
138143
if (STATE_CHANGE_LOG_CONFIG.equalsIgnoreCase(STATE_CHANGE_LOG_CONFIG_ON)) {
139144
conf.set(StateChangelogOptions.ENABLE_STATE_CHANGE_LOG, true);
140145
} else if (STATE_CHANGE_LOG_CONFIG.equalsIgnoreCase(STATE_CHANGE_LOG_CONFIG_RAND)) {

flink-tests/src/test/java/org/apache/flink/test/checkpointing/ChangelogRecoveryITCaseBase.java

+5-1
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,7 @@
9393
import java.util.stream.Collectors;
9494
import java.util.stream.Stream;
9595

96+
import static org.apache.flink.configuration.CheckpointingOptions.FILE_MERGING_ENABLED;
9697
import static org.apache.flink.runtime.testutils.CommonTestUtils.getLatestCompletedCheckpointPath;
9798
import static org.apache.flink.shaded.guava31.com.google.common.collect.Iterables.get;
9899
import static org.apache.flink.test.util.TestUtils.loadCheckpointMetadata;
@@ -154,7 +155,10 @@ protected StreamExecutionEnvironment getEnv(
154155
int restartAttempts,
155156
long materializationInterval,
156157
int materializationMaxFailure) {
157-
StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();
158+
Configuration conf = new Configuration();
159+
conf.set(
160+
FILE_MERGING_ENABLED, false); // TODO: remove file merging setting after FLINK-32085
161+
StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment(conf);
158162
env.enableCheckpointing(checkpointInterval).enableChangelogStateBackend(true);
159163
env.getCheckpointConfig().enableUnalignedCheckpoints(false);
160164
env.setStateBackend(stateBackend)

flink-tests/src/test/java/org/apache/flink/test/checkpointing/RestoreUpgradedJobITCase.java

+6-1
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
import org.apache.flink.api.common.state.ListState;
2323
import org.apache.flink.api.common.state.ListStateDescriptor;
2424
import org.apache.flink.api.common.typeinfo.Types;
25+
import org.apache.flink.configuration.CheckpointingOptions;
2526
import org.apache.flink.configuration.Configuration;
2627
import org.apache.flink.configuration.StateRecoveryOptions;
2728
import org.apache.flink.core.execution.JobClient;
@@ -166,7 +167,10 @@ private long calculateExpectedResultBeforeSavepoint() {
166167

167168
@NotNull
168169
private String runOriginalJob() throws Exception {
169-
StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();
170+
Configuration conf = new Configuration();
171+
// TODO: remove this after FLINK-32081
172+
conf.set(CheckpointingOptions.FILE_MERGING_ENABLED, false);
173+
StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment(conf);
170174
env.getCheckpointConfig()
171175
.setExternalizedCheckpointCleanup(
172176
CheckpointConfig.ExternalizedCheckpointCleanup.RETAIN_ON_CANCELLATION);
@@ -215,6 +219,7 @@ private void runUpgradedJob(String snapshotPath) throws Exception {
215219
StreamExecutionEnvironment env;
216220
Configuration conf = new Configuration();
217221
conf.set(StateRecoveryOptions.SAVEPOINT_PATH, snapshotPath);
222+
conf.set(CheckpointingOptions.FILE_MERGING_ENABLED, false);
218223
env = StreamExecutionEnvironment.getExecutionEnvironment(conf);
219224
env.setParallelism(PARALLELISM);
220225
env.addSource(new StringSource(allDataEmittedLatch))

flink-tests/src/test/java/org/apache/flink/test/state/ChangelogCompatibilityITCase.java

+4
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@
4545
import java.util.Optional;
4646

4747
import static org.apache.flink.configuration.CheckpointingOptions.CHECKPOINTS_DIRECTORY;
48+
import static org.apache.flink.configuration.CheckpointingOptions.FILE_MERGING_ENABLED;
4849
import static org.apache.flink.configuration.CheckpointingOptions.SAVEPOINT_DIRECTORY;
4950
import static org.apache.flink.runtime.jobgraph.SavepointRestoreSettings.forPath;
5051
import static org.apache.flink.runtime.testutils.CommonTestUtils.waitForAllTaskRunning;
@@ -135,6 +136,9 @@ private Optional<String> runAndStoreIfAllowed() throws Exception {
135136
}
136137

137138
private StreamExecutionEnvironment initEnvironment() {
139+
Configuration conf = new Configuration();
140+
conf.set(
141+
FILE_MERGING_ENABLED, false); // TODO: remove file merging setting after FLINK-32085
138142
StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();
139143
env.enableChangelogStateBackend(testCase.startWithChangelog);
140144
if (testCase.restoreSource == RestoreSource.CHECKPOINT) {

flink-tests/src/test/java/org/apache/flink/test/state/ChangelogRecoveryCachingITCase.java

+3
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,7 @@
6262
import static org.apache.flink.changelog.fs.FsStateChangelogOptions.PREEMPTIVE_PERSIST_THRESHOLD;
6363
import static org.apache.flink.configuration.CheckpointingOptions.CHECKPOINTS_DIRECTORY;
6464
import static org.apache.flink.configuration.CheckpointingOptions.CHECKPOINT_STORAGE;
65+
import static org.apache.flink.configuration.CheckpointingOptions.FILE_MERGING_ENABLED;
6566
import static org.apache.flink.configuration.CoreOptions.DEFAULT_PARALLELISM;
6667
import static org.apache.flink.configuration.RestartStrategyOptions.RESTART_STRATEGY;
6768
import static org.apache.flink.configuration.StateBackendOptions.STATE_BACKEND;
@@ -187,6 +188,8 @@ private Configuration configureJob(File cpDir) {
187188
1); // prevent file is opened multiple times
188189
conf.set(BUFFER_DEBLOAT_ENABLED, false); // prevent randomization
189190
conf.set(RESTART_STRATEGY, "none"); // not expecting any failures
191+
conf.set(
192+
FILE_MERGING_ENABLED, false); // TODO: remove file merging setting after FLINK-32085
190193

191194
return conf;
192195
}

flink-tests/src/test/java/org/apache/flink/test/state/ChangelogRescalingITCase.java

+3
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,7 @@
7070
import static org.apache.flink.changelog.fs.FsStateChangelogOptions.PREEMPTIVE_PERSIST_THRESHOLD;
7171
import static org.apache.flink.configuration.CheckpointingOptions.CHECKPOINTS_DIRECTORY;
7272
import static org.apache.flink.configuration.CheckpointingOptions.CHECKPOINT_STORAGE;
73+
import static org.apache.flink.configuration.CheckpointingOptions.FILE_MERGING_ENABLED;
7374
import static org.apache.flink.configuration.CheckpointingOptions.FS_SMALL_FILE_THRESHOLD;
7475
import static org.apache.flink.configuration.CoreOptions.DEFAULT_PARALLELISM;
7576
import static org.apache.flink.configuration.PipelineOptions.OBJECT_REUSE;
@@ -232,6 +233,8 @@ private Configuration configureJob(int parallelism, File cpDir) {
232233
conf.set(ALIGNED_CHECKPOINT_TIMEOUT, Duration.ZERO); // prevent randomization
233234
conf.set(BUFFER_DEBLOAT_ENABLED, false); // prevent randomization
234235
conf.set(RESTART_STRATEGY, "none"); // not expecting any failures
236+
conf.set(
237+
FILE_MERGING_ENABLED, false); // TODO: remove file merging setting after FLINK-32085
235238

236239
return conf;
237240
}

0 commit comments

Comments
 (0)