From 34bda761e9c7d5f5bcdf4ca5cab2d71c76ab3ca7 Mon Sep 17 00:00:00 2001 From: Fabian Hueske Date: Wed, 8 Jul 2026 20:14:01 +0200 Subject: [PATCH 01/32] [FLINK-39785][table] Honor source.sleep-* in TestValues watermark-push-down source Wire the existing source.sleep-after-elements / source.sleep-time options into TestValuesScanTableSourceWithWatermarkPushDown Generated-By: Claude Opus 4.8 (1M context) --- .../factories/TestValuesRuntimeFunctions.java | 18 +++++++++++++- .../factories/TestValuesTableFactory.java | 24 +++++++++++++++---- 2 files changed, 37 insertions(+), 5 deletions(-) diff --git a/flink-table/flink-table-planner/src/test/java/org/apache/flink/table/planner/factories/TestValuesRuntimeFunctions.java b/flink-table/flink-table-planner/src/test/java/org/apache/flink/table/planner/factories/TestValuesRuntimeFunctions.java index df439bd2c9e7f3..851275d4ef804a 100644 --- a/flink-table/flink-table-planner/src/test/java/org/apache/flink/table/planner/factories/TestValuesRuntimeFunctions.java +++ b/flink-table/flink-table-planner/src/test/java/org/apache/flink/table/planner/factories/TestValuesRuntimeFunctions.java @@ -257,15 +257,24 @@ public static class FromElementSourceFunctionWithWatermark private final TerminatingLogic terminating; + /** Sleep for {@link #sleepTimeMillis} after emitting every {@code sleepAfterElements}. */ + private final int sleepAfterElements; + + private final long sleepTimeMillis; + public FromElementSourceFunctionWithWatermark( String tableName, TypeSerializer serializer, Iterable elements, WatermarkStrategy watermarkStrategy, - TerminatingLogic terminating) + TerminatingLogic terminating, + int sleepAfterElements, + long sleepTimeMillis) throws IOException { this.tableName = tableName; this.terminating = terminating; + this.sleepAfterElements = sleepAfterElements; + this.sleepTimeMillis = sleepTimeMillis; ByteArrayOutputStream baos = new ByteArrayOutputStream(); DataOutputViewStreamWrapper wrapper = new DataOutputViewStreamWrapper(baos); @@ -325,6 +334,13 @@ public RelativeClock getInputActivityClock() { generator.onEvent(next, Long.MIN_VALUE, output); generator.onPeriodicEmit(output); } + + // If enabled, throttle emission of values + if (sleepAfterElements > 0 + && sleepTimeMillis > 0 + && numElementsEmitted % sleepAfterElements == 0) { + Thread.sleep(sleepTimeMillis); + } } if (terminating == TerminatingLogic.INFINITE) { diff --git a/flink-table/flink-table-planner/src/test/java/org/apache/flink/table/planner/factories/TestValuesTableFactory.java b/flink-table/flink-table-planner/src/test/java/org/apache/flink/table/planner/factories/TestValuesTableFactory.java index 3387f522232e44..4e260a3e75fc6c 100644 --- a/flink-table/flink-table-planner/src/test/java/org/apache/flink/table/planner/factories/TestValuesTableFactory.java +++ b/flink-table/flink-table-planner/src/test/java/org/apache/flink/table/planner/factories/TestValuesTableFactory.java @@ -716,7 +716,9 @@ public DynamicTableSource createDynamicTableSource(Context context) { partitions, readableMetadata, null, - enableAggregatePushDown); + enableAggregatePushDown, + sleepAfterElements, + sleepTimeMillis); source.setEnableMetadataFilterPushDown(enableMetadataFilterPushDown); return source; } else { @@ -1750,6 +1752,8 @@ private static class TestValuesScanTableSourceWithWatermarkPushDown extends TestValuesScanTableSource implements SupportsWatermarkPushDown, SupportsSourceWatermark { private final String tableName; + private final int sleepAfterElements; + private final long sleepTimeMillis; private WatermarkStrategy watermarkStrategy = WatermarkStrategy.noWatermarks(); @@ -1771,7 +1775,9 @@ private TestValuesScanTableSourceWithWatermarkPushDown( List> allPartitions, Map readableMetadata, @Nullable int[] projectedMetadataFields, - boolean enableAggregatePushDown) { + boolean enableAggregatePushDown, + int sleepAfterElements, + long sleepTimeMillis) { super( producedDataType, changelogMode, @@ -1792,6 +1798,8 @@ private TestValuesScanTableSourceWithWatermarkPushDown( projectedMetadataFields, enableAggregatePushDown); this.tableName = tableName; + this.sleepAfterElements = sleepAfterElements; + this.sleepTimeMillis = sleepTimeMillis; } @Override @@ -1817,7 +1825,13 @@ public ScanRuntimeProvider getScanRuntimeProvider(ScanContext runtimeProviderCon try { return SourceFunctionProvider.of( new TestValuesRuntimeFunctions.FromElementSourceFunctionWithWatermark( - tableName, serializer, values, watermarkStrategy, terminating), + tableName, + serializer, + values, + watermarkStrategy, + terminating, + sleepAfterElements, + sleepTimeMillis), false); } catch (IOException e) { throw new TableException("Fail to init source function", e); @@ -1845,7 +1859,9 @@ public DynamicTableSource copy() { allPartitions, readableMetadata, projectedMetadataFields, - enableAggregatePushDown); + enableAggregatePushDown, + sleepAfterElements, + sleepTimeMillis); newSource.watermarkStrategy = watermarkStrategy; newSource.setEnableMetadataFilterPushDown(enableMetadataFilterPushDown); return newSource; From c6fc527d1e069f9d7cddc14ec6baf66b3ceac830 Mon Sep 17 00:00:00 2001 From: Fabian Hueske Date: Wed, 15 Jul 2026 17:44:42 +0200 Subject: [PATCH 02/32] [FLINK-39785][table] Add input-driven savepoint trigger to restore test framework Lets restore tests take the stop-with-savepoint at a point defined by an input-side signal rather than sink output, so operators that emit nothing at the point of interest can be captured. * RestoreTestBase: extract the trigger into an overridable awaitSavepointReady (default unchanged: waits for sinks to reach their before-restore rows) and retry stop-with-savepoint while the job is not yet fully running. * TestValues watermark-push-down NewSource: add a per-table emission barrier (TestValuesTableFactory#awaitSourceEmitted) completed as rows are emitted. Generated-By: Claude Opus 4.8 (1M context) --- .../factories/TestValuesRuntimeFunctions.java | 62 +++++++++++++++++++ .../factories/TestValuesTableFactory.java | 11 ++++ .../nodes/exec/testutils/RestoreTestBase.java | 48 ++++++++++++-- 3 files changed, 116 insertions(+), 5 deletions(-) diff --git a/flink-table/flink-table-planner/src/test/java/org/apache/flink/table/planner/factories/TestValuesRuntimeFunctions.java b/flink-table/flink-table-planner/src/test/java/org/apache/flink/table/planner/factories/TestValuesRuntimeFunctions.java index 851275d4ef804a..650d55740acc65 100644 --- a/flink-table/flink-table-planner/src/test/java/org/apache/flink/table/planner/factories/TestValuesRuntimeFunctions.java +++ b/flink-table/flink-table-planner/src/test/java/org/apache/flink/table/planner/factories/TestValuesRuntimeFunctions.java @@ -124,6 +124,65 @@ public final class TestValuesRuntimeFunctions { private static final Map>>> localRawResultsObservers = new HashMap<>(); + // [table_name, cumulative number of rows emitted by all subtasks of the source] + private static final Map sourceEmittedCounts = new HashMap<>(); + // [table_name, [pending emission barriers]] + private static final Map> sourceEmissionBarriers = + new HashMap<>(); + + /** A pending {@link #awaitSourceEmitted} request, completed once its target is reached. */ + private static final class SourceEmissionBarrier { + private final int target; + private final CompletableFuture future; + + private SourceEmissionBarrier(int target, CompletableFuture future) { + this.target = target; + this.future = future; + } + } + + /** + * Records that a source emitted a row and completes any barrier whose target row count has been + * reached. Called by the source runtime after every emitted element. + */ + static void notifySourceEmitted(String tableName) { + final List> toComplete = new ArrayList<>(); + synchronized (LOCK) { + final int count = sourceEmittedCounts.merge(tableName, 1, Integer::sum); + final List barriers = sourceEmissionBarriers.get(tableName); + if (barriers != null) { + barriers.removeIf( + barrier -> { + if (count >= barrier.target) { + toComplete.add(barrier.future); + return true; + } + return false; + }); + } + } + // Complete outside the lock; the awaiting thread may re-enter this class. + toComplete.forEach(future -> future.complete(null)); + } + + /** + * Returns a future that completes once source {@code tableName} has emitted at least {@code + * targetCount} rows (cumulative across all subtasks). + */ + static CompletableFuture awaitSourceEmitted(String tableName, int targetCount) { + final CompletableFuture future = new CompletableFuture<>(); + synchronized (LOCK) { + if (sourceEmittedCounts.getOrDefault(tableName, 0) >= targetCount) { + future.complete(null); + } else { + sourceEmissionBarriers + .computeIfAbsent(tableName, n -> new ArrayList<>()) + .add(new SourceEmissionBarrier(targetCount, future)); + } + } + return future; + } + static List getRawResultsAsStrings(String tableName) { return getRawResults(tableName).stream() .map(TestValuesRuntimeFunctions::rowToString) @@ -205,6 +264,8 @@ static void clearResults() { globalRetractResult.clear(); watermarkHistory.clear(); localRawResultsObservers.clear(); + sourceEmittedCounts.clear(); + sourceEmissionBarriers.clear(); } } @@ -334,6 +395,7 @@ public RelativeClock getInputActivityClock() { generator.onEvent(next, Long.MIN_VALUE, output); generator.onPeriodicEmit(output); } + notifySourceEmitted(tableName); // If enabled, throttle emission of values if (sleepAfterElements > 0 diff --git a/flink-table/flink-table-planner/src/test/java/org/apache/flink/table/planner/factories/TestValuesTableFactory.java b/flink-table/flink-table-planner/src/test/java/org/apache/flink/table/planner/factories/TestValuesTableFactory.java index 4e260a3e75fc6c..7049fc1c8c17bc 100644 --- a/flink-table/flink-table-planner/src/test/java/org/apache/flink/table/planner/factories/TestValuesTableFactory.java +++ b/flink-table/flink-table-planner/src/test/java/org/apache/flink/table/planner/factories/TestValuesTableFactory.java @@ -158,6 +158,7 @@ import java.util.Objects; import java.util.Optional; import java.util.Set; +import java.util.concurrent.CompletableFuture; import java.util.concurrent.atomic.AtomicInteger; import java.util.function.BiConsumer; import java.util.function.Function; @@ -309,6 +310,16 @@ public static void registerLocalRawResultsObserver( TestValuesRuntimeFunctions.registerLocalRawResultsObserver(tableName, observer); } + /** + * Returns a future that completes once source {@code tableName} has emitted at least {@code + * targetCount} rows (cumulative across all subtasks). Useful for triggering a savepoint at a + * controlled point when the operator under test produces no output yet. For now only wired for + * the watermark-push-down {@code NewSource} runtime used by restore tests. + */ + public static CompletableFuture awaitSourceEmitted(String tableName, int targetCount) { + return TestValuesRuntimeFunctions.awaitSourceEmitted(tableName, targetCount); + } + public static List getWatermarkOutput(String tableName) { return TestValuesRuntimeFunctions.getWatermarks(tableName); } diff --git a/flink-table/flink-table-planner/src/test/java/org/apache/flink/table/planner/plan/nodes/exec/testutils/RestoreTestBase.java b/flink-table/flink-table-planner/src/test/java/org/apache/flink/table/planner/plan/nodes/exec/testutils/RestoreTestBase.java index f1cdc2ca0bcc23..83f910762dca34 100644 --- a/flink-table/flink-table-planner/src/test/java/org/apache/flink/table/planner/plan/nodes/exec/testutils/RestoreTestBase.java +++ b/flink-table/flink-table-planner/src/test/java/org/apache/flink/table/planner/plan/nodes/exec/testutils/RestoreTestBase.java @@ -76,6 +76,7 @@ import java.util.List; import java.util.Map; import java.util.concurrent.CompletableFuture; +import java.util.concurrent.ExecutionException; import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeoutException; import java.util.stream.Stream; @@ -282,6 +283,21 @@ private void registerSinkObserver( }); } + /** + * Awaits the point during {@link #generateTestSetupFiles} at which the stop-with-savepoint + * should be triggered. The default waits until every sink has produced its "before restore" + * expected rows. + * + *

Override for operators that produce no output at the point of interest or when the test + * logic requires more customized savepoint triggering (e.g., based on processed input). See + * {@link TestValuesTableFactory#awaitSourceEmitted(String, int)}. + */ + protected void awaitSavepointReady( + final TableTestProgram program, final List> futures) + throws Exception { + awaitExpectedResults(program, futures, true); + } + private void awaitExpectedResults( final TableTestProgram program, final List> futures, @@ -379,12 +395,9 @@ public void generateTestSetupFiles(TableTestProgram program) throws Exception { compiledPlan.writeToFile(getPlanPath(program, getLatestMetadata())); final TableResult tableResult = compiledPlan.execute(); - awaitExpectedResults(program, futures, true); + awaitSavepointReady(program, futures); final JobClient jobClient = tableResult.getJobClient().get(); - final String savepoint = - jobClient - .stopWithSavepoint(false, tmpDir.toString(), SavepointFormatType.DEFAULT) - .get(); + final String savepoint = stopWithSavepointWhenRunning(jobClient); CommonTestUtils.waitForJobStatus(jobClient, Collections.singletonList(JobStatus.FINISHED)); final Path savepointPath = Paths.get(new URI(savepoint)); final Path savepointDirPath = @@ -491,6 +504,31 @@ void testRestore(TableTestProgram program, Path planPath, String savepointPath) } } + /** + * Triggers a stop-with-savepoint, retrying while the job is not yet fully running. A savepoint + * gated on source emission (see {@link #awaitSavepointReady}) can be requested before all + * downstream tasks have reached RUNNING, which aborts with "Not all required tasks are + * currently running". Sink-gated triggers never hit this (sink output implies a running + * pipeline), so they succeed on the first attempt. + */ + private String stopWithSavepointWhenRunning(JobClient jobClient) throws Exception { + final long deadline = System.currentTimeMillis() + RESULT_AWAIT_TIMEOUT_MILLIS; + while (true) { + try { + return jobClient + .stopWithSavepoint(false, tmpDir.toString(), SavepointFormatType.DEFAULT) + .get(); + } catch (ExecutionException e) { + final boolean notAllRunning = + e.getMessage() != null && e.getMessage().contains("Not all required tasks"); + if (!notAllRunning || System.currentTimeMillis() >= deadline) { + throw e; + } + Thread.sleep(200); + } + } + } + private Path getPlanPath(TableTestProgram program, ExecNodeMetadata metadata) { return Paths.get( getTestResourceDirectory(program, metadata) + "/plan/" + program.id + ".json"); From a77d210c99675043794aff6f5fe335e23557fa9f Mon Sep 17 00:00:00 2001 From: Fabian Hueske Date: Thu, 9 Jul 2026 12:19:23 +0200 Subject: [PATCH 03/32] [FLINK-39785][table] Add LATERAL SNAPSHOT e2e and restore tests Adds end-to-end coverage for the LATERAL SNAPSHOT processing-time temporal join: * LateralSnapshotJoinSemanticTests: Semantic tests LATERAL SNAPSHOT join * LateralSnapshotJoinITCase: non-deterministic result tests and tests over HEAP and ROCKSDB backends * LateralSnapshotJoinRestoreTest / LateralSnapshotJoinTestPrograms: savepoint restore tests * Configure UTC as local timezone for CommonSemanticTestBase and RestoreTestBase Generated-By: Claude Opus 4.8 (1M context) --- .../LateralSnapshotJoinRestoreTest.java | 67 +++ ...teralSnapshotJoinSemanticTestPrograms.java | 439 ++++++++++++++++ .../LateralSnapshotJoinSemanticTests.java | 43 ++ .../LateralSnapshotJoinTestPrograms.java | 176 +++++++ .../testutils/CommonSemanticTestBase.java | 2 + .../nodes/exec/testutils/RestoreTestBase.java | 2 + .../testutils/RestoreTestCompleteness.java | 6 - .../sql/join/LateralSnapshotJoinITCase.java | 290 +++++++++++ .../plan/lateral-snapshot-join-inner.json | 469 ++++++++++++++++++ .../savepoint/_metadata | Bin 0 -> 19149 bytes .../lateral-snapshot-join-load-phase.json | 468 +++++++++++++++++ .../savepoint/_metadata | Bin 0 -> 18950 bytes 12 files changed, 1956 insertions(+), 6 deletions(-) create mode 100644 flink-table/flink-table-planner/src/test/java/org/apache/flink/table/planner/plan/nodes/exec/stream/LateralSnapshotJoinRestoreTest.java create mode 100644 flink-table/flink-table-planner/src/test/java/org/apache/flink/table/planner/plan/nodes/exec/stream/LateralSnapshotJoinSemanticTestPrograms.java create mode 100644 flink-table/flink-table-planner/src/test/java/org/apache/flink/table/planner/plan/nodes/exec/stream/LateralSnapshotJoinSemanticTests.java create mode 100644 flink-table/flink-table-planner/src/test/java/org/apache/flink/table/planner/plan/nodes/exec/stream/LateralSnapshotJoinTestPrograms.java create mode 100644 flink-table/flink-table-planner/src/test/java/org/apache/flink/table/planner/runtime/stream/sql/join/LateralSnapshotJoinITCase.java create mode 100644 flink-table/flink-table-planner/src/test/resources/restore-tests/stream-exec-lateral-snapshot-join_1/lateral-snapshot-join-inner/plan/lateral-snapshot-join-inner.json create mode 100644 flink-table/flink-table-planner/src/test/resources/restore-tests/stream-exec-lateral-snapshot-join_1/lateral-snapshot-join-inner/savepoint/_metadata create mode 100644 flink-table/flink-table-planner/src/test/resources/restore-tests/stream-exec-lateral-snapshot-join_1/lateral-snapshot-join-load-phase/plan/lateral-snapshot-join-load-phase.json create mode 100644 flink-table/flink-table-planner/src/test/resources/restore-tests/stream-exec-lateral-snapshot-join_1/lateral-snapshot-join-load-phase/savepoint/_metadata diff --git a/flink-table/flink-table-planner/src/test/java/org/apache/flink/table/planner/plan/nodes/exec/stream/LateralSnapshotJoinRestoreTest.java b/flink-table/flink-table-planner/src/test/java/org/apache/flink/table/planner/plan/nodes/exec/stream/LateralSnapshotJoinRestoreTest.java new file mode 100644 index 00000000000000..806ecf72ef3b10 --- /dev/null +++ b/flink-table/flink-table-planner/src/test/java/org/apache/flink/table/planner/plan/nodes/exec/stream/LateralSnapshotJoinRestoreTest.java @@ -0,0 +1,67 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.flink.table.planner.plan.nodes.exec.stream; + +import org.apache.flink.table.planner.factories.TestValuesTableFactory; +import org.apache.flink.table.planner.plan.nodes.exec.testutils.RestoreTestBase; +import org.apache.flink.table.test.program.SourceTestStep; +import org.apache.flink.table.test.program.TableTestProgram; + +import java.util.Arrays; +import java.util.List; +import java.util.concurrent.CompletableFuture; +import java.util.concurrent.TimeUnit; + +/** Restore tests for {@link StreamExecLateralSnapshotJoin}. */ +public class LateralSnapshotJoinRestoreTest extends RestoreTestBase { + + // Bounds the wait for the LOAD-phase savepoint trigger so a stuck source fails fast. + private static final long SAVEPOINT_READY_TIMEOUT_MILLIS = TimeUnit.MINUTES.toMillis(5); + + public LateralSnapshotJoinRestoreTest() { + super(StreamExecLateralSnapshotJoin.class); + } + + @Override + public List programs() { + return Arrays.asList( + LateralSnapshotJoinTestPrograms.LATERAL_SNAPSHOT_JOIN_PHASE_LOAD, + LateralSnapshotJoinTestPrograms.LATERAL_SNAPSHOT_JOIN_PHASE_JOIN); + } + + @Override + protected void awaitSavepointReady(TableTestProgram program, List> futures) + throws Exception { + if (program != LateralSnapshotJoinTestPrograms.LATERAL_SNAPSHOT_JOIN_PHASE_LOAD) { + super.awaitSavepointReady(program, futures); + return; + } + // The operator emits nothing during its LOAD phase, so we can't use the default sink-based + // trigger. Instead, we gate on the number of records emitted by the sources. Once every + // source has emitted its before-restore rows, stop-with-savepoint drains them into keyed + // state before snapshotting. + for (SourceTestStep source : program.getSetupSourceTestSteps()) { + final int count = source.dataBeforeRestore.size(); + if (count > 0) { + TestValuesTableFactory.awaitSourceEmitted(source.name, count) + .get(SAVEPOINT_READY_TIMEOUT_MILLIS, TimeUnit.MILLISECONDS); + } + } + } +} diff --git a/flink-table/flink-table-planner/src/test/java/org/apache/flink/table/planner/plan/nodes/exec/stream/LateralSnapshotJoinSemanticTestPrograms.java b/flink-table/flink-table-planner/src/test/java/org/apache/flink/table/planner/plan/nodes/exec/stream/LateralSnapshotJoinSemanticTestPrograms.java new file mode 100644 index 00000000000000..ca2f3696938cfc --- /dev/null +++ b/flink-table/flink-table-planner/src/test/java/org/apache/flink/table/planner/plan/nodes/exec/stream/LateralSnapshotJoinSemanticTestPrograms.java @@ -0,0 +1,439 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.flink.table.planner.plan.nodes.exec.stream; + +import org.apache.flink.table.test.program.SinkTestStep; +import org.apache.flink.table.test.program.SourceTestStep; +import org.apache.flink.table.test.program.TableTestProgram; +import org.apache.flink.types.Row; +import org.apache.flink.types.RowKind; + +import java.time.LocalDateTime; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; +import java.util.stream.IntStream; + +/** + * Deterministic result {@link TableTestProgram} definitions for the {@code LATERAL SNAPSHOT} + * processing-time temporal join ({@link StreamExecLateralSnapshotJoin}). + * + *

Processing-time semantics make the join non-deterministic in general. To get stable results, + * each build source appends a non-matching "flip-trigger" row at the flip timestamp ({@link + * #FLIP_TRIGGER_TS}) while all real build rows are earlier. With per-record ({@code on-event}) + * watermarks the operator flips to the JOIN phase. Some programs throttle source emission ({@code + * source.sleep-*}) to place probes deterministically around the flip. + */ +public class LateralSnapshotJoinSemanticTestPrograms { + + /** The {@code 'user_time'} condition reached mid-stream by the build-side flip-trigger row. */ + private static final String MID_FLIP = + "load_completed_condition => 'user_time', " + + "load_completed_time => CAST(TIMESTAMP '2020-01-01 00:00:10' AS TIMESTAMP_LTZ(3))"; + + /** A far-future flip condition: the flip happens only at end of all input. */ + private static final String END_FLIP = + "load_completed_condition => 'user_time', " + + "load_completed_time => CAST(TIMESTAMP '2100-01-01 00:00:00' AS TIMESTAMP_LTZ(3))"; + + /** Event time of the flip-trigger row; equal to the {@link #MID_FLIP} timestamp. */ + private static final String FLIP_TRIGGER_TS = "00:00:10"; + + /** A build-side key that never matches any probe row. */ + private static final String FLIP_TRIGGER_KEY = "__flip_trigger__"; + + private static final String[] PROBE_SCHEMA = { + "pk STRING", "pv INT", "pts TIMESTAMP(3)", "WATERMARK FOR pts AS pts" + }; + + private static final String[] BUILD_SCHEMA = { + "bk STRING", "bv INT", "bts TIMESTAMP(3)", "WATERMARK FOR bts AS bts" + }; + + // ------------------------------------------------------------------------------------------ + // Core join semantics + // ------------------------------------------------------------------------------------------ + + public static final TableTestProgram INNER_JOIN = + TableTestProgram.of("lateral-snapshot-inner-join", "LATERAL SNAPSHOT inner join") + // Throttle the probe so the fast build flips first; the probes are then joined + // live in the JOIN phase (the build-side is finalized, so buffered-vs-live does + // not change the result). + .setupTableSource(throttledProbe(defaultProbe(), 40L)) + .setupTableSource(appendBuild(withFlipTrigger(defaultBuild()))) + .setupTableSink( + keyValueSink() + .consumedValues( + "+I[a, 100, a, 10]", + "+I[a, 100, a, 11]", + "+I[b, 200, b, 20]") + .build()) + .runSql( + innerJoin( + "probe.pk, probe.pv, s.bk, s.bv", MID_FLIP, "probe.pk = s.bk")) + .build(); + + public static final TableTestProgram LEFT_JOIN = + TableTestProgram.of("lateral-snapshot-left-join", "LATERAL SNAPSHOT left join") + .setupTableSource(throttledProbe(defaultProbe(), 40L)) + .setupTableSource(appendBuild(withFlipTrigger(defaultBuild()))) + .setupTableSink( + keyValueSink() + .consumedValues( + "+I[a, 100, a, 10]", + "+I[a, 100, a, 11]", + "+I[b, 200, b, 20]", + "+I[c, 300, null, null]") + .build()) + .runSql(leftJoin("probe.pk, probe.pv, s.bk, s.bv", MID_FLIP, "probe.pk = s.bk")) + .build(); + + public static final TableTestProgram SELECT_STAR = + TableTestProgram.of( + "lateral-snapshot-select-star", + "SELECT * materializes the build-side rowtime as a regular TIMESTAMP") + .setupTableSource(probe(List.of(Row.of("a", 100, ts("00:01:00"))))) + .setupTableSource( + appendBuild(withFlipTrigger(List.of(Row.of("a", 10, ts("00:00:01")))))) + .setupTableSink( + SinkTestStep.newBuilder("sink") + .addSchema( + "pk STRING", + "pv INT", + "pts TIMESTAMP(3)", + "bk STRING", + "bv INT", + "bts TIMESTAMP(3)") + .testMaterializedData() + .consumedValues( + "+I[a, 100, 2020-01-01T00:01, a, 10, 2020-01-01T00:00:01]") + .build()) + .runSql( + "INSERT INTO sink SELECT * FROM probe JOIN LATERAL TABLE(SNAPSHOT(" + + "input => TABLE b, " + + MID_FLIP + + ")) AS s ON probe.pk = s.bk") + .build(); + + public static final TableTestProgram COMPOSITE_KEYS = + TableTestProgram.of("lateral-snapshot-composite-keys", "join on composite keys") + .setupTableSource( + probe( + Arrays.asList( + Row.of("a", 10, ts("00:01:00")), + Row.of("a", 11, ts("00:01:01")), + Row.of("z", 10, ts("00:01:01")), + Row.of("b", 20, ts("00:01:02"))))) + .setupTableSource( + appendBuild( + withFlipTrigger( + Arrays.asList( + Row.of("a", 10, ts("00:00:01")), + Row.of("a", 99, ts("00:00:02")), + Row.of("b", 20, ts("00:00:03")))))) + .setupTableSink( + keyValueSink() + .consumedValues("+I[a, 10, a, 10]", "+I[b, 20, b, 20]") + .build()) + .runSql( + innerJoin( + "probe.pk, probe.pv, s.bk, s.bv", + MID_FLIP, + "probe.pk = s.bk AND probe.pv = s.bv")) + .build(); + + public static final TableTestProgram NON_EQUI = + TableTestProgram.of("lateral-snapshot-non-equi", "join with a non-equi condition") + .setupTableSource( + probe( + Arrays.asList( + Row.of("a", 15, ts("00:01:00")), + Row.of("a", 5, ts("00:01:01"))))) + .setupTableSource( + appendBuild( + withFlipTrigger( + Arrays.asList( + Row.of("a", 10, ts("00:00:01")), + Row.of("a", 20, ts("00:00:02")))))) + .setupTableSink( + SinkTestStep.newBuilder("sink") + .addSchema("pk STRING", "pv INT", "bv INT") + .testMaterializedData() + .consumedValues("+I[a, 15, 10]") + .build()) + .runSql( + innerJoin( + "probe.pk, probe.pv, s.bv", + MID_FLIP, + "probe.pk = s.bk AND probe.pv > s.bv")) + .build(); + + public static final TableTestProgram EMPTY_BUILD_INNER = + TableTestProgram.of( + "lateral-snapshot-empty-build-inner", + "inner join over an empty build side yields no rows") + .setupTableSource(probe(defaultProbe())) + .setupTableSource(appendBuild(withFlipTrigger(List.of()))) + .setupTableSink( + SinkTestStep.newBuilder("sink") + .addSchema("pk STRING", "bk STRING") + .testMaterializedData() + .consumedValues(new String[0]) + .build()) + .runSql(innerJoin("probe.pk, s.bk", MID_FLIP, "probe.pk = s.bk")) + .build(); + + public static final TableTestProgram EMPTY_BUILD_LEFT = + TableTestProgram.of( + "lateral-snapshot-empty-build-left", + "left join over an empty build side preserves the probe rows") + .setupTableSource(probe(defaultProbe())) + .setupTableSource(appendBuild(withFlipTrigger(List.of()))) + .setupTableSink( + SinkTestStep.newBuilder("sink") + .addSchema("pk STRING", "bk STRING") + .testMaterializedData() + .consumedValues("+I[a, null]", "+I[b, null]", "+I[c, null]") + .build()) + .runSql(leftJoin("probe.pk, s.bk", MID_FLIP, "probe.pk = s.bk")) + .build(); + + // ------------------------------------------------------------------------------------------ + // Flip timing + // ------------------------------------------------------------------------------------------ + + public static final TableTestProgram FLIP_AT_END = + TableTestProgram.of( + "lateral-snapshot-flip-at-end", + "far-future flip condition: the operator flips only at end-of-input") + .setupTableSource(probe(defaultProbe())) + .setupTableSource(appendBuild(withFlipTrigger(defaultBuild()))) + .setupTableSink( + keyValueSink() + .consumedValues( + "+I[a, 100, a, 10]", + "+I[a, 100, a, 11]", + "+I[b, 200, b, 20]") + .build()) + .runSql( + innerJoin( + "probe.pk, probe.pv, s.bk, s.bv", END_FLIP, "probe.pk = s.bk")) + .build(); + + public static final TableTestProgram DEFAULT_COMPILE_TIME = + TableTestProgram.of( + "lateral-snapshot-default-compile-time", + "default 'compile_time' condition flips at end-of-input for 2020 data") + .setupTableSource(probe(defaultProbe())) + .setupTableSource(appendBuild(withFlipTrigger(defaultBuild()))) + .setupTableSink( + keyValueSink() + .consumedValues( + "+I[a, 100, a, 10]", + "+I[a, 100, a, 11]", + "+I[b, 200, b, 20]") + .build()) + // No options: 'load_completed_condition' defaults to 'compile_time'. + .runSql( + "INSERT INTO sink SELECT probe.pk, probe.pv, s.bk, s.bv " + + "FROM probe JOIN LATERAL TABLE(SNAPSHOT(" + + "input => TABLE b" + + ")) AS s ON probe.pk = s.bk") + .build(); + + public static final TableTestProgram LIVE_JOIN = + TableTestProgram.of( + "lateral-snapshot-live-join", + "probes are joined live per-record in the JOIN phase") + // Fast build flips almost immediately; the throttled probe stream is consumed + // entirely in the JOIN phase (including non-matching keys c). The snapshot is + // static after the flip, so the result is deterministic. + .setupTableSource( + throttledProbe( + Arrays.asList( + Row.of("a", 1, ts("00:00:01")), + Row.of("b", 2, ts("00:00:02")), + Row.of("c", 3, ts("00:00:03")), + Row.of("a", 4, ts("00:00:04")), + Row.of("b", 5, ts("00:00:05")), + Row.of("c", 6, ts("00:00:06"))), + 40L)) + .setupTableSource( + appendBuild( + withFlipTrigger( + Arrays.asList( + Row.of("a", 10, ts("00:00:01")), + Row.of("b", 20, ts("00:00:02")))))) + .setupTableSink( + SinkTestStep.newBuilder("sink") + .addSchema("pv INT", "pk STRING", "bv INT") + .testMaterializedData() + .consumedValues( + "+I[1, a, 10]", + "+I[4, a, 10]", + "+I[2, b, 20]", + "+I[5, b, 20]") + .build()) + .runSql(innerJoin("probe.pv, probe.pk, s.bv", MID_FLIP, "probe.pk = s.bk")) + .build(); + + public static final TableTestProgram BUFFERED_THEN_DRAINED = + TableTestProgram.of( + "lateral-snapshot-buffered-then-drained", + "probes buffered during LOAD are drained against the final version") + // Un-throttled: buffered within a few ms, long before the flip. + .setupTableSource(probe(manyProbes(20))) + // Throttled build flips at ~240 ms, by which time the probe stream is fully + // buffered in LOAD; the flip drains all buffered probes against version 3. + .setupTableSource( + throttledUpsertBuild( + Arrays.asList( + Row.ofKind(RowKind.INSERT, "k", 1, ts("00:00:01")), + Row.ofKind( + RowKind.UPDATE_AFTER, "k", 2, ts("00:00:02")), + Row.ofKind( + RowKind.UPDATE_AFTER, "k", 3, ts("00:00:05")), + Row.ofKind( + RowKind.INSERT, + FLIP_TRIGGER_KEY, + 0, + ts(FLIP_TRIGGER_TS))), + 80L)) + .setupTableSink( + SinkTestStep.newBuilder("sink") + .addSchema("pv INT", "bv INT") + .testMaterializedData() + .consumedValues( + IntStream.rangeClosed(1, 20) + .mapToObj(i -> String.format("+I[%d, 3]", i)) + .toArray(String[]::new)) + .build()) + .runSql(innerJoin("probe.pv, s.bv", MID_FLIP, "probe.pk = s.bk")) + .build(); + + // ------------------------------------------------------------------------------------------ + // Helpers + // ------------------------------------------------------------------------------------------ + + private static String innerJoin(String projection, String flip, String condition) { + return join("JOIN", projection, flip, condition); + } + + private static String leftJoin(String projection, String flip, String condition) { + return join("LEFT JOIN", projection, flip, condition); + } + + private static String join(String joinType, String projection, String flip, String condition) { + return "INSERT INTO sink SELECT " + + projection + + " FROM probe " + + joinType + + " LATERAL TABLE(SNAPSHOT(" + + "input => TABLE b, " + + flip + + ")) AS s ON " + + condition; + } + + private static List defaultProbe() { + return Arrays.asList( + Row.of("a", 100, ts("00:01:00")), + Row.of("b", 200, ts("00:01:01")), + Row.of("c", 300, ts("00:01:02"))); + } + + private static List defaultBuild() { + return Arrays.asList( + Row.of("a", 10, ts("00:00:01")), + Row.of("b", 20, ts("00:00:02")), + Row.of("a", 11, ts("00:00:03"))); + } + + private static List manyProbes(int count) { + return IntStream.rangeClosed(1, count) + .mapToObj(i -> Row.of("k", i, ts(String.format("00:00:%02d", i)))) + .collect(Collectors.toList()); + } + + /** + * Appends a non-matching build row at the {@link #FLIP_TRIGGER_TS} timestamp; its watermark + * flips the operator to the JOIN phase mid-stream (all real build rows are earlier). + */ + private static List withFlipTrigger(List data) { + final List withTrigger = new ArrayList<>(data); + withTrigger.add(Row.of(FLIP_TRIGGER_KEY, 0, ts(FLIP_TRIGGER_TS))); + return withTrigger; + } + + private static SourceTestStep probe(List data) { + return SourceTestStep.newBuilder("probe") + .addSchema(PROBE_SCHEMA) + .producedValues(data.toArray(new Row[0])) + .build(); + } + + private static SourceTestStep throttledProbe(List data, long sleepMillis) { + return SourceTestStep.newBuilder("probe") + .addSchema(PROBE_SCHEMA) + .addOptions(throttleOptions(sleepMillis)) + .producedValues(data.toArray(new Row[0])) + .build(); + } + + private static SourceTestStep appendBuild(List data) { + return SourceTestStep.newBuilder("b") + .addSchema(BUILD_SCHEMA) + .producedValues(data.toArray(new Row[0])) + .build(); + } + + private static SourceTestStep throttledUpsertBuild(List data, long sleepMillis) { + return SourceTestStep.newBuilder("b") + .addSchema( + "bk STRING", + "bv INT", + "bts TIMESTAMP(3)", + "WATERMARK FOR bts AS bts", + "PRIMARY KEY (bk) NOT ENFORCED") + .addOption("changelog-mode", "I,UA,D") + .addOptions(throttleOptions(sleepMillis)) + .producedValues(data.toArray(new Row[0])) + .build(); + } + + private static SinkTestStep.Builder keyValueSink() { + return SinkTestStep.newBuilder("sink") + .addSchema("pk STRING", "pv INT", "bk STRING", "bv INT") + .testMaterializedData(); + } + + private static Map throttleOptions(long sleepMillis) { + final Map options = new HashMap<>(); + options.put("source.sleep-after-elements", "1"); + options.put("source.sleep-time", sleepMillis + "ms"); + return options; + } + + private static LocalDateTime ts(String time) { + return LocalDateTime.parse("2020-01-01T" + time); + } +} diff --git a/flink-table/flink-table-planner/src/test/java/org/apache/flink/table/planner/plan/nodes/exec/stream/LateralSnapshotJoinSemanticTests.java b/flink-table/flink-table-planner/src/test/java/org/apache/flink/table/planner/plan/nodes/exec/stream/LateralSnapshotJoinSemanticTests.java new file mode 100644 index 00000000000000..6536f34a591492 --- /dev/null +++ b/flink-table/flink-table-planner/src/test/java/org/apache/flink/table/planner/plan/nodes/exec/stream/LateralSnapshotJoinSemanticTests.java @@ -0,0 +1,43 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.flink.table.planner.plan.nodes.exec.stream; + +import org.apache.flink.table.planner.plan.nodes.exec.testutils.SemanticTestBase; +import org.apache.flink.table.test.program.TableTestProgram; + +import java.util.List; + +/** Semantic tests for {@link StreamExecLateralSnapshotJoin}. */ +public class LateralSnapshotJoinSemanticTests extends SemanticTestBase { + @Override + public List programs() { + return List.of( + LateralSnapshotJoinSemanticTestPrograms.INNER_JOIN, + LateralSnapshotJoinSemanticTestPrograms.LEFT_JOIN, + LateralSnapshotJoinSemanticTestPrograms.SELECT_STAR, + LateralSnapshotJoinSemanticTestPrograms.COMPOSITE_KEYS, + LateralSnapshotJoinSemanticTestPrograms.NON_EQUI, + LateralSnapshotJoinSemanticTestPrograms.EMPTY_BUILD_INNER, + LateralSnapshotJoinSemanticTestPrograms.EMPTY_BUILD_LEFT, + LateralSnapshotJoinSemanticTestPrograms.FLIP_AT_END, + LateralSnapshotJoinSemanticTestPrograms.DEFAULT_COMPILE_TIME, + LateralSnapshotJoinSemanticTestPrograms.LIVE_JOIN, + LateralSnapshotJoinSemanticTestPrograms.BUFFERED_THEN_DRAINED); + } +} diff --git a/flink-table/flink-table-planner/src/test/java/org/apache/flink/table/planner/plan/nodes/exec/stream/LateralSnapshotJoinTestPrograms.java b/flink-table/flink-table-planner/src/test/java/org/apache/flink/table/planner/plan/nodes/exec/stream/LateralSnapshotJoinTestPrograms.java new file mode 100644 index 00000000000000..b1c58be353bb04 --- /dev/null +++ b/flink-table/flink-table-planner/src/test/java/org/apache/flink/table/planner/plan/nodes/exec/stream/LateralSnapshotJoinTestPrograms.java @@ -0,0 +1,176 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.flink.table.planner.plan.nodes.exec.stream; + +import org.apache.flink.table.test.program.SinkTestStep; +import org.apache.flink.table.test.program.SourceTestStep; +import org.apache.flink.table.test.program.TableTestProgram; +import org.apache.flink.types.Row; + +/** + * {@link TableTestProgram} definitions for testing {@link StreamExecLateralSnapshotJoin}. + * + *

The programs cover a savepoint taken in each of the operator's two phases; the {@code + * 'user_time'} gate is at {@code 00:00:03} in both. + * + *

    + *
  • {@link #LATERAL_SNAPSHOT_JOIN_PHASE_LOAD}: the transition to JOIN is not triggered before + * the savepoint, so the operator is still in LOAD; the savepoint captures the partial build + * multi-set and the buffered probe row. The flip to JOIN phase happens only after restore. + *
  • {@link #LATERAL_SNAPSHOT_JOIN_PHASE_JOIN}: the whole build side is loaded before the + * savepoint (the last build-side row triggers the flip), so the operator has flipped to JOIN + * and its build-side snapshot is materialized and frozen when the stop-with-savepoint fires. + *
+ * + *

Both verify that the build state and the LOAD/JOIN phase (union operator state) survive the + * savepoint: after restore the "after restore" probe rows join the restored snapshot. + */ +public class LateralSnapshotJoinTestPrograms { + + static final String[] PROBE_SCHEMA = { + "pk STRING", + "pv INT", + "pts_str STRING", + "pts AS TO_TIMESTAMP(pts_str)", + "WATERMARK FOR pts AS pts" + }; + + static final String[] BUILD_SCHEMA = { + "bk STRING", + "bv INT", + "bts_str STRING", + "bts AS TO_TIMESTAMP(bts_str)", + "WATERMARK FOR bts AS bts" + }; + + static final String[] SINK_SCHEMA = {"pk STRING", "pv INT", "bk STRING", "bv INT"}; + + // Two rows for key 'a' exercise the per-key multi-set; the last row's watermark (00:00:03) + // reaches the gate and flips the operator to JOIN. + static final Row[] BUILD_BEFORE_DATA = { + Row.of("a", 10, "2020-01-01 00:00:01"), + Row.of("b", 20, "2020-01-01 00:00:02"), + Row.of("a", 11, "2020-01-01 00:00:03") + }; + + static final Row[] PROBE_BEFORE_DATA = { + Row.of("a", 100, "2020-01-01 00:00:06"), Row.of("b", 200, "2020-01-01 00:00:07") + }; + + // 'a' matches the restored snapshot; 'c' has no match. + static final Row[] PROBE_AFTER_DATA = { + Row.of("a", 101, "2020-01-01 00:00:10"), Row.of("c", 300, "2020-01-01 00:00:11") + }; + + // LOAD-phase restore scenario: none of these build rows reaches the 00:00:03 gate, so the + // operator is still in LOAD when the savepoint is taken. The number of rows is the count the + // savepoint trigger waits for (see LateralSnapshotJoinRestoreTest#awaitSavepointReady). + static final Row[] LOAD_BUILD_BEFORE_DATA = { + Row.of("a", 10, "2020-01-01 00:00:01"), Row.of("a", 11, "2020-01-01 00:00:02") + }; + + // The gate row (00:00:03) arrives only after restore and flips the operator to JOIN, draining + // the probe rows buffered before the savepoint. + static final Row[] LOAD_BUILD_AFTER_DATA = {Row.of("a", 12, "2020-01-01 00:00:03")}; + + // Buffered during LOAD (LOAD emits nothing), so it survives the savepoint in probe state. + static final Row[] LOAD_PROBE_BEFORE_DATA = {Row.of("a", 100, "2020-01-01 00:00:06")}; + + static final Row[] LOAD_PROBE_AFTER_DATA = {Row.of("a", 101, "2020-01-01 00:00:10")}; + + private static final String SNAPSHOT_BUILD = + "LATERAL TABLE(SNAPSHOT(" + + "input => TABLE b, " + + "load_completed_condition => 'user_time', " + + "load_completed_time => CAST(TIMESTAMP '2020-01-01 00:00:03' AS TIMESTAMP_LTZ(3))" + + ")) AS s ON probe.pk = s.bk"; + + // Restore taken while the operator is in LOAD phase: the savepoint captures the partial build + // multi-set and the buffered probe row, the LOAD phase is recorded in union operator state, and + // nothing has been emitted yet. After restore the 00:00:03 build row completes the load, flips + // to JOIN, and the buffered + after-restore probe rows join the full snapshot {10, 11, 12} for + // key 'a'. + public static final TableTestProgram LATERAL_SNAPSHOT_JOIN_PHASE_LOAD = + TableTestProgram.of( + "lateral-snapshot-join-load-phase", + "validates a LATERAL SNAPSHOT inner join restored from a LOAD-phase savepoint") + .setupTableSource( + SourceTestStep.newBuilder("probe") + .addSchema(PROBE_SCHEMA) + .producedBeforeRestore(LOAD_PROBE_BEFORE_DATA) + .producedAfterRestore(LOAD_PROBE_AFTER_DATA) + .build()) + .setupTableSource( + SourceTestStep.newBuilder("b") + .addSchema(BUILD_SCHEMA) + .producedBeforeRestore(LOAD_BUILD_BEFORE_DATA) + .producedAfterRestore(LOAD_BUILD_AFTER_DATA) + .build()) + .setupTableSink( + SinkTestStep.newBuilder("sink") + .addSchema(SINK_SCHEMA) + // Empty before restore: LOAD phase emits nothing before the + // savepoint. The explicit String[] picks the String overload + // and marks this a SINK_WITH_RESTORE_DATA step. + .consumedBeforeRestore(new String[0]) + .consumedAfterRestore( + "+I[a, 100, a, 10]", + "+I[a, 100, a, 11]", + "+I[a, 100, a, 12]", + "+I[a, 101, a, 10]", + "+I[a, 101, a, 11]", + "+I[a, 101, a, 12]") + .build()) + .runSql( + "INSERT INTO sink SELECT probe.pk, probe.pv, s.bk, s.bv " + + "FROM probe JOIN " + + SNAPSHOT_BUILD) + .build(); + + // Restore taken while the operator is in JOIN phase + public static final TableTestProgram LATERAL_SNAPSHOT_JOIN_PHASE_JOIN = + TableTestProgram.of( + "lateral-snapshot-join-inner", + "validates a LATERAL SNAPSHOT inner join across a restore") + .setupTableSource( + SourceTestStep.newBuilder("probe") + .addSchema(PROBE_SCHEMA) + .producedBeforeRestore(PROBE_BEFORE_DATA) + .producedAfterRestore(PROBE_AFTER_DATA) + .build()) + .setupTableSource( + SourceTestStep.newBuilder("b") + .addSchema(BUILD_SCHEMA) + .producedBeforeRestore(BUILD_BEFORE_DATA) + .build()) + .setupTableSink( + SinkTestStep.newBuilder("sink") + .addSchema(SINK_SCHEMA) + .consumedBeforeRestore( + "+I[a, 100, a, 10]", + "+I[a, 100, a, 11]", + "+I[b, 200, b, 20]") + .consumedAfterRestore("+I[a, 101, a, 10]", "+I[a, 101, a, 11]") + .build()) + .runSql( + "INSERT INTO sink SELECT probe.pk, probe.pv, s.bk, s.bv " + + "FROM probe JOIN " + + SNAPSHOT_BUILD) + .build(); +} diff --git a/flink-table/flink-table-planner/src/test/java/org/apache/flink/table/planner/plan/nodes/exec/testutils/CommonSemanticTestBase.java b/flink-table/flink-table-planner/src/test/java/org/apache/flink/table/planner/plan/nodes/exec/testutils/CommonSemanticTestBase.java index f406cd972e394a..2a4d9e67d36d7e 100644 --- a/flink-table/flink-table-planner/src/test/java/org/apache/flink/table/planner/plan/nodes/exec/testutils/CommonSemanticTestBase.java +++ b/flink-table/flink-table-planner/src/test/java/org/apache/flink/table/planner/plan/nodes/exec/testutils/CommonSemanticTestBase.java @@ -22,6 +22,7 @@ import org.apache.flink.table.api.TableConfig; import org.apache.flink.table.api.TableEnvironment; import org.apache.flink.table.api.config.OptimizerConfigOptions; +import org.apache.flink.table.api.config.TableConfigOptions; import org.apache.flink.table.planner.factories.TestValuesModelFactory; import org.apache.flink.table.planner.factories.TestValuesTableFactory; import org.apache.flink.table.test.program.ConfigOptionTestStep; @@ -192,6 +193,7 @@ protected void applyDefaultEnvironmentOptions(TableConfig config) { config.set( OptimizerConfigOptions.TABLE_OPTIMIZER_NONDETERMINISTIC_UPDATE_STRATEGY, OptimizerConfigOptions.NonDeterministicUpdateStrategy.TRY_RESOLVE); + config.set(TableConfigOptions.LOCAL_TIME_ZONE, "UTC"); } private Map createSourceOptions(SourceTestStep sourceTestStep, String id) { diff --git a/flink-table/flink-table-planner/src/test/java/org/apache/flink/table/planner/plan/nodes/exec/testutils/RestoreTestBase.java b/flink-table/flink-table-planner/src/test/java/org/apache/flink/table/planner/plan/nodes/exec/testutils/RestoreTestBase.java index 83f910762dca34..dc61bbe030ba97 100644 --- a/flink-table/flink-table-planner/src/test/java/org/apache/flink/table/planner/plan/nodes/exec/testutils/RestoreTestBase.java +++ b/flink-table/flink-table-planner/src/test/java/org/apache/flink/table/planner/plan/nodes/exec/testutils/RestoreTestBase.java @@ -352,6 +352,7 @@ public void generateTestSetupFiles(TableTestProgram program) throws Exception { .set( TableConfigOptions.PLAN_COMPILE_CATALOG_OBJECTS, TableConfigOptions.CatalogPlanCompilation.SCHEMA); + tEnv.getConfig().set(TableConfigOptions.LOCAL_TIME_ZONE, "UTC"); for (SourceTestStep sourceTestStep : program.getSetupSourceTestSteps()) { final String id = TestValuesTableFactory.registerData(sourceTestStep.dataBeforeRestore); @@ -427,6 +428,7 @@ void testRestore(TableTestProgram program, Path planPath, String savepointPath) .set( TableConfigOptions.PLAN_RESTORE_CATALOG_OBJECTS, TableConfigOptions.CatalogPlanRestore.IDENTIFIER); + tEnv.getConfig().set(TableConfigOptions.LOCAL_TIME_ZONE, "UTC"); program.getSetupConfigOptionTestSteps().forEach(s -> s.apply(tEnv)); diff --git a/flink-table/flink-table-planner/src/test/java/org/apache/flink/table/planner/plan/nodes/exec/testutils/RestoreTestCompleteness.java b/flink-table/flink-table-planner/src/test/java/org/apache/flink/table/planner/plan/nodes/exec/testutils/RestoreTestCompleteness.java index 29d9f0db3b9c0e..ea183bf3dbad39 100644 --- a/flink-table/flink-table-planner/src/test/java/org/apache/flink/table/planner/plan/nodes/exec/testutils/RestoreTestCompleteness.java +++ b/flink-table/flink-table-planner/src/test/java/org/apache/flink/table/planner/plan/nodes/exec/testutils/RestoreTestCompleteness.java @@ -19,7 +19,6 @@ package org.apache.flink.table.planner.plan.nodes.exec.testutils; import org.apache.flink.table.planner.plan.nodes.exec.ExecNode; -import org.apache.flink.table.planner.plan.nodes.exec.stream.StreamExecLateralSnapshotJoin; import org.apache.flink.table.planner.plan.nodes.exec.stream.StreamExecPythonAsyncCalc; import org.apache.flink.table.planner.plan.nodes.exec.stream.StreamExecPythonCalc; import org.apache.flink.table.planner.plan.nodes.exec.stream.StreamExecPythonCorrelate; @@ -50,11 +49,6 @@ public class RestoreTestCompleteness { private static final Set>> SKIP_EXEC_NODES = new HashSet>>() { { - // TODO: FLINK-39781 - the LATERAL SNAPSHOT runtime operator is still a stub, - // so a restore test cannot generate a savepoint yet. Remove this entry and - // add LateralSnapshotJoinRestoreTest once the operator is implemented. - add(StreamExecLateralSnapshotJoin.class); - /** Ignoring python based exec nodes temporarily. */ add(StreamExecPythonCalc.class); add(StreamExecPythonCorrelate.class); diff --git a/flink-table/flink-table-planner/src/test/java/org/apache/flink/table/planner/runtime/stream/sql/join/LateralSnapshotJoinITCase.java b/flink-table/flink-table-planner/src/test/java/org/apache/flink/table/planner/runtime/stream/sql/join/LateralSnapshotJoinITCase.java new file mode 100644 index 00000000000000..4972d4cb28c84e --- /dev/null +++ b/flink-table/flink-table-planner/src/test/java/org/apache/flink/table/planner/runtime/stream/sql/join/LateralSnapshotJoinITCase.java @@ -0,0 +1,290 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.flink.table.planner.runtime.stream.sql.join; + +import org.apache.flink.table.api.DataTypes; +import org.apache.flink.table.api.Schema; +import org.apache.flink.table.api.TableDescriptor; +import org.apache.flink.table.planner.factories.TestValuesTableFactory; +import org.apache.flink.table.planner.runtime.utils.StreamingWithStateTestBase; +import org.apache.flink.testutils.junit.extensions.parameterized.ParameterizedTestExtension; +import org.apache.flink.testutils.junit.extensions.parameterized.Parameters; +import org.apache.flink.types.Row; +import org.apache.flink.types.RowKind; +import org.apache.flink.util.CollectionUtil; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.TestTemplate; +import org.junit.jupiter.api.extension.ExtendWith; + +import java.time.LocalDateTime; +import java.time.ZoneId; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collection; +import java.util.Comparator; +import java.util.List; +import java.util.stream.Collectors; +import java.util.stream.IntStream; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.assertj.core.api.AssertionsForInterfaceTypes.assertThatList; + +/** + * Result tests for the {@code LATERAL SNAPSHOT} processing-time temporal join that are + * non-deterministic or benefit from dual-backend (HEAP/ROCKSDB) coverage. Deterministic, + * backend-agnostic cases live in {@code LateralSnapshotJoinSemanticTests}; time-driven behavior + * (idle-timeout flip, state-TTL eviction) in {@code LateralSnapshotJoinOperatorTest}. + * + *

To stabilize results, each build source appends a non-matching "flip-trigger" row at {@link + * #MID_FLIP} (after all real rows); its per-record watermark flips the operator to the JOIN phase. + */ +@ExtendWith(ParameterizedTestExtension.class) +public class LateralSnapshotJoinITCase extends StreamingWithStateTestBase { + + /** The {@code 'user_time'} condition reached mid-stream by the build-side flip-trigger row. */ + private static final String MID_FLIP = + "load_completed_condition => 'user_time', " + + "load_completed_time => CAST(TIMESTAMP '2020-01-01 00:00:10' AS TIMESTAMP_LTZ(3))"; + + /** Event time of the flip-trigger row; equal to the {@link #MID_FLIP} timestamp. */ + private static final String FLIP_TRIGGER_TS = "00:00:10"; + + /** A build-side key that never matches any probe row. */ + private static final String FLIP_TRIGGER_KEY = "__flip_trigger__"; + + public LateralSnapshotJoinITCase(StateBackendMode state) { + super(state); + } + + @BeforeEach + @Override + public void before() { + super.before(); + env().setParallelism(1); + tEnv().getConfig().setLocalTimeZone(ZoneId.of("UTC")); + } + + @Parameters(name = "StateBackend={0}") + public static Collection parameters() { + return Arrays.asList( + new Object[][] { + {StreamingWithStateTestBase.HEAP_BACKEND()}, + {StreamingWithStateTestBase.ROCKSDB_BACKEND()} + }); + } + + // ------------------------------------------------------------------------------------------ + // Build-side changelog consolidation (all changes have rowtime < the flip ts) + // ------------------------------------------------------------------------------------------ + + @TestTemplate + void testRetractingBuildChangelog() { + createProbe( + Arrays.asList(Row.of("a", 100, ts("00:01:00")), Row.of("b", 200, ts("00:01:01")))); + // Key a is updated 10 -> 11; key b is inserted then deleted. + createChangelogBuild( + Arrays.asList( + Row.ofKind(RowKind.INSERT, "a", 10, ts("00:00:01")), + Row.ofKind(RowKind.INSERT, "b", 20, ts("00:00:03")), + Row.ofKind(RowKind.UPDATE_BEFORE, "a", 10, ts("00:00:01")), + Row.ofKind(RowKind.UPDATE_AFTER, "a", 11, ts("00:00:02")), + Row.ofKind(RowKind.DELETE, "b", 20, ts("00:00:03")))); + + final List actual = + collect( + "SELECT probe.pk, s.bv FROM probe JOIN LATERAL TABLE(SNAPSHOT(" + + "input => TABLE b, " + + MID_FLIP + + ")) AS s ON probe.pk = s.bk"); + + assertThatList(actual).containsExactlyInAnyOrder(Row.of("a", 11)); + } + + @TestTemplate + void testUpsertBuildSource() { + createProbe( + Arrays.asList(Row.of("a", 100, ts("00:01:00")), Row.of("b", 200, ts("00:01:01")))); + // Upsert source (I,UA,D with PK): a is upserted 10 -> 11, b is deleted. + createUpsertBuild( + Arrays.asList( + Row.ofKind(RowKind.INSERT, "a", 10, ts("00:00:01")), + Row.ofKind(RowKind.UPDATE_AFTER, "a", 11, ts("00:00:02")), + Row.ofKind(RowKind.INSERT, "b", 20, ts("00:00:03")), + Row.ofKind(RowKind.DELETE, "b", 20, ts("00:00:04")))); + + final List actual = + collect( + "SELECT probe.pk, s.bv FROM probe JOIN LATERAL TABLE(SNAPSHOT(" + + "input => TABLE b, " + + MID_FLIP + + ")) AS s ON probe.pk = s.bk"); + + assertThatList(actual).containsExactlyInAnyOrder(Row.of("a", 11)); + } + + // ------------------------------------------------------------------------------------------ + // Non-deterministic behavior (asserted with tolerant checks) + // ------------------------------------------------------------------------------------------ + + @TestTemplate + void testProbesObserveProgressiveBuildVersions() { + // Throttled build applies v2, v3, v4 progressively after the flip while a throttled probe + // stream spans the progression. Observed versions are non-decreasing; the first probe sees + // v1 and the last sees v4. Exact per-probe versions are not asserted (source timing and + // post-flip visibility latency are not precise enough across environments). + final int probeCount = 8; + final List probes = + IntStream.range(0, probeCount) + .mapToObj(i -> Row.of("k", i, ts(String.format("00:00:%02d", i)))) + .toList(); + createProbe(probes, 200L); // last probe at ~1400 ms, well past the last post-flip update + createUpsertBuild( + Arrays.asList( + Row.ofKind(RowKind.INSERT, "k", 1, ts("00:00:01")), + Row.ofKind(RowKind.INSERT, FLIP_TRIGGER_KEY, 0, ts(FLIP_TRIGGER_TS)), + Row.ofKind(RowKind.UPDATE_AFTER, "k", 2, ts("00:00:20")), + Row.ofKind(RowKind.UPDATE_AFTER, "k", 3, ts("00:00:30")), + Row.ofKind(RowKind.UPDATE_AFTER, "k", 4, ts("00:00:40"))), + 50L); + + final List byProbeId = + sortedByProbeId( + collect( + "SELECT probe.pv, s.bv FROM probe JOIN LATERAL TABLE(SNAPSHOT(" + + "input => TABLE b, " + + MID_FLIP + + ")) AS s ON probe.pk = s.bk")); + + assertThat(byProbeId).hasSize(probeCount); + assertMonotonicVersions(byProbeId); + assertThat((Integer) byProbeId.get(0).getField(1)).isEqualTo(1); + assertThat((Integer) byProbeId.get(probeCount - 1).getField(1)).isEqualTo(4); + } + + // ------------------------------------------------------------------------------------------ + // Helpers + // ------------------------------------------------------------------------------------------ + + private List collect(String query) { + return CollectionUtil.iteratorToList(tEnv().executeSql(query).collect()); + } + + /** + * Appends a non-matching build row at the {@link #MID_FLIP} timestamp; its watermark flips the + * operator to the JOIN phase mid-stream (all real build rows are earlier). + */ + private List withFlipTrigger(List data) { + final List withTrigger = new ArrayList<>(data); + withTrigger.add(Row.of(FLIP_TRIGGER_KEY, 0, ts(FLIP_TRIGGER_TS))); + return withTrigger; + } + + private void createProbe(List data) { + createProbe(data, 0L); + } + + private void createProbe(List data, long sleepMillis) { + final String id = TestValuesTableFactory.registerData(data); + final Schema schema = + Schema.newBuilder() + .column("pk", DataTypes.STRING()) + .column("pv", DataTypes.INT()) + .column("pts", DataTypes.TIMESTAMP(3)) + .watermark("pts", "pts") + .build(); + tEnv().createTable("probe", valuesDescriptor(schema, id, sleepMillis).build()); + } + + private void createChangelogBuild(List data) { + final String id = TestValuesTableFactory.registerData(withFlipTrigger(data)); + final Schema schema = + Schema.newBuilder() + .column("bk", DataTypes.STRING()) + .column("bv", DataTypes.INT()) + .column("bts", DataTypes.TIMESTAMP(3)) + .watermark("bts", "bts") + .build(); + tEnv().createTable( + "b", + valuesDescriptor(schema, id, 0L) + .option("changelog-mode", "I,UB,UA,D") + .build()); + } + + private void createUpsertBuild(List data) { + createUpsertBuild(withFlipTrigger(data), 0L); + } + + private void createUpsertBuild(List data, long sleepMillis) { + final String id = TestValuesTableFactory.registerData(data); + final Schema schema = + Schema.newBuilder() + .column("bk", DataTypes.STRING().notNull()) + .column("bv", DataTypes.INT()) + .column("bts", DataTypes.TIMESTAMP(3)) + .watermark("bts", "bts") + .primaryKey("bk") + .build(); + tEnv().createTable( + "b", + valuesDescriptor(schema, id, sleepMillis) + .option("changelog-mode", "I,UA,D") + .build()); + } + + private static TableDescriptor.Builder valuesDescriptor( + Schema schema, String id, long sleepMillis) { + final TableDescriptor.Builder descriptor = + TableDescriptor.forConnector("values") + .schema(schema) + .option("bounded", "false") + .option("disable-lookup", "true") + .option("enable-watermark-push-down", "true") + .option("scan.watermark.emit.strategy", "on-event") + .option("data-id", id); + if (sleepMillis > 0) { + descriptor + .option("source.sleep-after-elements", "1") + .option("source.sleep-time", sleepMillis + "ms"); + } + return descriptor; + } + + /** Sorts join results (pv, bv) by the probe id pv, i.e. into probe processing order. */ + private static List sortedByProbeId(List results) { + return results.stream() + .sorted(Comparator.comparingInt(r -> r.getFieldAs(0))) + .collect(Collectors.toList()); + } + + /** Asserts the build version (field 1) is non-decreasing across the probe-ordered results. */ + private static void assertMonotonicVersions(List byProbeId) { + int previous = Integer.MIN_VALUE; + for (Row r : byProbeId) { + final int version = r.getFieldAs(1); + assertThat(version).isGreaterThanOrEqualTo(previous); + previous = version; + } + } + + private static LocalDateTime ts(String time) { + return LocalDateTime.parse("2020-01-01T" + time); + } +} diff --git a/flink-table/flink-table-planner/src/test/resources/restore-tests/stream-exec-lateral-snapshot-join_1/lateral-snapshot-join-inner/plan/lateral-snapshot-join-inner.json b/flink-table/flink-table-planner/src/test/resources/restore-tests/stream-exec-lateral-snapshot-join_1/lateral-snapshot-join-inner/plan/lateral-snapshot-join-inner.json new file mode 100644 index 00000000000000..eea074a15352b3 --- /dev/null +++ b/flink-table/flink-table-planner/src/test/resources/restore-tests/stream-exec-lateral-snapshot-join_1/lateral-snapshot-join-inner/plan/lateral-snapshot-join-inner.json @@ -0,0 +1,469 @@ +{ + "flinkVersion" : "2.4", + "nodes" : [ { + "id" : 1, + "type" : "stream-exec-table-source-scan_2", + "scanTableSource" : { + "table" : { + "identifier" : "`default_catalog`.`default_database`.`probe`", + "resolvedTable" : { + "schema" : { + "columns" : [ { + "name" : "pk", + "dataType" : "VARCHAR(2147483647)" + }, { + "name" : "pv", + "dataType" : "INT" + }, { + "name" : "pts_str", + "dataType" : "VARCHAR(2147483647)" + }, { + "name" : "pts", + "kind" : "COMPUTED", + "expression" : { + "rexNode" : { + "kind" : "CALL", + "internalName" : "$TO_TIMESTAMP$1", + "operands" : [ { + "kind" : "INPUT_REF", + "inputIndex" : 2, + "type" : "VARCHAR(2147483647)" + } ], + "type" : "TIMESTAMP(3)" + }, + "serializableString" : "TO_TIMESTAMP(`pts_str`)" + } + } ], + "watermarkSpecs" : [ { + "rowtimeAttribute" : "pts", + "expression" : { + "rexNode" : { + "kind" : "INPUT_REF", + "inputIndex" : 3, + "type" : "TIMESTAMP(3)" + }, + "serializableString" : "`pts`" + } + } ] + } + } + }, + "abilities" : [ { + "type" : "WatermarkPushDown", + "watermarkExpr" : { + "kind" : "CALL", + "internalName" : "$TO_TIMESTAMP$1", + "operands" : [ { + "kind" : "INPUT_REF", + "inputIndex" : 2, + "type" : "VARCHAR(2147483647)" + } ], + "type" : "TIMESTAMP(3)" + }, + "rowtimeExpr" : { + "kind" : "CALL", + "syntax" : "SPECIAL", + "internalName" : "$REINTERPRET$1", + "operands" : [ { + "kind" : "CALL", + "internalName" : "$TO_TIMESTAMP$1", + "operands" : [ { + "kind" : "INPUT_REF", + "inputIndex" : 2, + "type" : "VARCHAR(2147483647)" + } ], + "type" : "TIMESTAMP(3)" + } ], + "type" : { + "type" : "TIMESTAMP_WITHOUT_TIME_ZONE", + "precision" : 3, + "kind" : "ROWTIME" + } + }, + "idleTimeoutMillis" : -1, + "producedType" : "ROW<`pk` VARCHAR(2147483647), `pv` INT, `pts_str` VARCHAR(2147483647)> NOT NULL", + "watermarkParams" : { + "emitStrategy" : "ON_EVENT", + "alignGroupName" : null, + "alignMaxDrift" : "PT0S", + "alignUpdateInterval" : "PT1S", + "sourceIdleTimeout" : -1 + } + } ] + }, + "outputType" : "ROW<`pk` VARCHAR(2147483647), `pv` INT, `pts_str` VARCHAR(2147483647)>", + "description" : "TableSourceScan(table=[[default_catalog, default_database, probe, watermark=[TO_TIMESTAMP(pts_str)], watermarkEmitStrategy=[on-event]]], fields=[pk, pv, pts_str])" + }, { + "id" : 2, + "type" : "stream-exec-calc_1", + "projection" : [ { + "kind" : "INPUT_REF", + "inputIndex" : 0, + "type" : "VARCHAR(2147483647)" + }, { + "kind" : "INPUT_REF", + "inputIndex" : 1, + "type" : "INT" + } ], + "condition" : null, + "inputProperties" : [ { + "requiredDistribution" : { + "type" : "UNKNOWN" + }, + "damBehavior" : "PIPELINED", + "priority" : 0 + } ], + "outputType" : "ROW<`pk` VARCHAR(2147483647), `pv` INT>", + "description" : "Calc(select=[pk, pv])" + }, { + "id" : 3, + "type" : "stream-exec-exchange_1", + "inputProperties" : [ { + "requiredDistribution" : { + "type" : "HASH", + "keys" : [ 0 ] + }, + "damBehavior" : "PIPELINED", + "priority" : 0 + } ], + "outputType" : "ROW<`pk` VARCHAR(2147483647), `pv` INT>", + "description" : "Exchange(distribution=[hash[pk]])" + }, { + "id" : 4, + "type" : "stream-exec-table-source-scan_2", + "scanTableSource" : { + "table" : { + "identifier" : "`default_catalog`.`default_database`.`b`", + "resolvedTable" : { + "schema" : { + "columns" : [ { + "name" : "bk", + "dataType" : "VARCHAR(2147483647)" + }, { + "name" : "bv", + "dataType" : "INT" + }, { + "name" : "bts_str", + "dataType" : "VARCHAR(2147483647)" + }, { + "name" : "bts", + "kind" : "COMPUTED", + "expression" : { + "rexNode" : { + "kind" : "CALL", + "internalName" : "$TO_TIMESTAMP$1", + "operands" : [ { + "kind" : "INPUT_REF", + "inputIndex" : 2, + "type" : "VARCHAR(2147483647)" + } ], + "type" : "TIMESTAMP(3)" + }, + "serializableString" : "TO_TIMESTAMP(`bts_str`)" + } + } ], + "watermarkSpecs" : [ { + "rowtimeAttribute" : "bts", + "expression" : { + "rexNode" : { + "kind" : "INPUT_REF", + "inputIndex" : 3, + "type" : "TIMESTAMP(3)" + }, + "serializableString" : "`bts`" + } + } ] + } + } + }, + "abilities" : [ { + "type" : "WatermarkPushDown", + "watermarkExpr" : { + "kind" : "CALL", + "internalName" : "$TO_TIMESTAMP$1", + "operands" : [ { + "kind" : "INPUT_REF", + "inputIndex" : 2, + "type" : "VARCHAR(2147483647)" + } ], + "type" : "TIMESTAMP(3)" + }, + "rowtimeExpr" : { + "kind" : "CALL", + "syntax" : "SPECIAL", + "internalName" : "$REINTERPRET$1", + "operands" : [ { + "kind" : "CALL", + "internalName" : "$TO_TIMESTAMP$1", + "operands" : [ { + "kind" : "INPUT_REF", + "inputIndex" : 2, + "type" : "VARCHAR(2147483647)" + } ], + "type" : "TIMESTAMP(3)" + } ], + "type" : { + "type" : "TIMESTAMP_WITHOUT_TIME_ZONE", + "precision" : 3, + "kind" : "ROWTIME" + } + }, + "idleTimeoutMillis" : -1, + "producedType" : "ROW<`bk` VARCHAR(2147483647), `bv` INT, `bts_str` VARCHAR(2147483647)> NOT NULL", + "watermarkParams" : { + "emitStrategy" : "ON_EVENT", + "alignGroupName" : null, + "alignMaxDrift" : "PT0S", + "alignUpdateInterval" : "PT1S", + "sourceIdleTimeout" : -1 + } + } ] + }, + "outputType" : "ROW<`bk` VARCHAR(2147483647), `bv` INT, `bts_str` VARCHAR(2147483647)>", + "description" : "TableSourceScan(table=[[default_catalog, default_database, b, watermark=[TO_TIMESTAMP(bts_str)], watermarkEmitStrategy=[on-event]]], fields=[bk, bv, bts_str])" + }, { + "id" : 5, + "type" : "stream-exec-calc_1", + "projection" : [ { + "kind" : "INPUT_REF", + "inputIndex" : 0, + "type" : "VARCHAR(2147483647)" + }, { + "kind" : "INPUT_REF", + "inputIndex" : 1, + "type" : "INT" + }, { + "kind" : "CALL", + "syntax" : "SPECIAL", + "internalName" : "$REINTERPRET$1", + "operands" : [ { + "kind" : "CALL", + "internalName" : "$TO_TIMESTAMP$1", + "operands" : [ { + "kind" : "INPUT_REF", + "inputIndex" : 2, + "type" : "VARCHAR(2147483647)" + } ], + "type" : "TIMESTAMP(3)" + } ], + "type" : { + "type" : "TIMESTAMP_WITHOUT_TIME_ZONE", + "precision" : 3, + "kind" : "ROWTIME" + } + } ], + "condition" : null, + "inputProperties" : [ { + "requiredDistribution" : { + "type" : "UNKNOWN" + }, + "damBehavior" : "PIPELINED", + "priority" : 0 + } ], + "outputType" : { + "type" : "ROW", + "fields" : [ { + "name" : "bk", + "fieldType" : "VARCHAR(2147483647)" + }, { + "name" : "bv", + "fieldType" : "INT" + }, { + "name" : "bts", + "fieldType" : { + "type" : "TIMESTAMP_WITHOUT_TIME_ZONE", + "precision" : 3, + "kind" : "ROWTIME" + } + } ] + }, + "description" : "Calc(select=[bk, bv, Reinterpret(TO_TIMESTAMP(bts_str)) AS bts])" + }, { + "id" : 6, + "type" : "stream-exec-exchange_1", + "inputProperties" : [ { + "requiredDistribution" : { + "type" : "HASH", + "keys" : [ 0 ] + }, + "damBehavior" : "PIPELINED", + "priority" : 0 + } ], + "outputType" : { + "type" : "ROW", + "fields" : [ { + "name" : "bk", + "fieldType" : "VARCHAR(2147483647)" + }, { + "name" : "bv", + "fieldType" : "INT" + }, { + "name" : "bts", + "fieldType" : { + "type" : "TIMESTAMP_WITHOUT_TIME_ZONE", + "precision" : 3, + "kind" : "ROWTIME" + } + } ] + }, + "description" : "Exchange(distribution=[hash[bk]])" + }, { + "id" : 7, + "type" : "stream-exec-lateral-snapshot-join_1", + "joinSpec" : { + "joinType" : "INNER", + "leftKeys" : [ 0 ], + "rightKeys" : [ 0 ], + "filterNulls" : [ true ], + "nonEquiCondition" : null + }, + "rightTimeAttributeIndex" : 2, + "loadCompletedCondition" : "user_time", + "loadCompletedTime" : 1577836803000, + "inputProperties" : [ { + "requiredDistribution" : { + "type" : "UNKNOWN" + }, + "damBehavior" : "PIPELINED", + "priority" : 0 + }, { + "requiredDistribution" : { + "type" : "UNKNOWN" + }, + "damBehavior" : "PIPELINED", + "priority" : 0 + } ], + "outputType" : "ROW<`pk` VARCHAR(2147483647), `pv` INT, `bk` VARCHAR(2147483647), `bv` INT, `bts` TIMESTAMP(3)>", + "description" : "LateralSnapshotJoin(joinType=[InnerJoin], where=[(pk = bk)], select=[pk, pv, bk, bv, bts], loadCompletedCondition=[user_time], loadCompletedTime=[1577836803000])" + }, { + "id" : 8, + "type" : "stream-exec-calc_1", + "projection" : [ { + "kind" : "INPUT_REF", + "inputIndex" : 0, + "type" : "VARCHAR(2147483647)" + }, { + "kind" : "INPUT_REF", + "inputIndex" : 1, + "type" : "INT" + }, { + "kind" : "INPUT_REF", + "inputIndex" : 2, + "type" : "VARCHAR(2147483647)" + }, { + "kind" : "INPUT_REF", + "inputIndex" : 3, + "type" : "INT" + } ], + "condition" : null, + "inputProperties" : [ { + "requiredDistribution" : { + "type" : "UNKNOWN" + }, + "damBehavior" : "PIPELINED", + "priority" : 0 + } ], + "outputType" : "ROW<`pk` VARCHAR(2147483647), `pv` INT, `bk` VARCHAR(2147483647), `bv` INT>", + "description" : "Calc(select=[pk, pv, bk, bv])" + }, { + "id" : 9, + "type" : "stream-exec-sink_2", + "configuration" : { + "table.exec.sink.keyed-shuffle" : "AUTO", + "table.exec.sink.not-null-enforcer" : "ERROR", + "table.exec.sink.rowtime-inserter" : "ENABLED", + "table.exec.sink.type-length-enforcer" : "IGNORE", + "table.exec.sink.upsert-materialize" : "AUTO" + }, + "dynamicTableSink" : { + "table" : { + "identifier" : "`default_catalog`.`default_database`.`sink`", + "resolvedTable" : { + "schema" : { + "columns" : [ { + "name" : "pk", + "dataType" : "VARCHAR(2147483647)" + }, { + "name" : "pv", + "dataType" : "INT" + }, { + "name" : "bk", + "dataType" : "VARCHAR(2147483647)" + }, { + "name" : "bv", + "dataType" : "INT" + } ] + } + } + } + }, + "inputChangelogMode" : [ "INSERT" ], + "upsertMaterializeStrategy" : "VALUE", + "inputProperties" : [ { + "requiredDistribution" : { + "type" : "UNKNOWN" + }, + "damBehavior" : "PIPELINED", + "priority" : 0 + } ], + "outputType" : "ROW<`pk` VARCHAR(2147483647), `pv` INT, `bk` VARCHAR(2147483647), `bv` INT>", + "description" : "Sink(table=[default_catalog.default_database.sink], fields=[pk, pv, bk, bv])" + } ], + "edges" : [ { + "source" : 1, + "target" : 2, + "shuffle" : { + "type" : "FORWARD" + }, + "shuffleMode" : "PIPELINED" + }, { + "source" : 2, + "target" : 3, + "shuffle" : { + "type" : "FORWARD" + }, + "shuffleMode" : "PIPELINED" + }, { + "source" : 4, + "target" : 5, + "shuffle" : { + "type" : "FORWARD" + }, + "shuffleMode" : "PIPELINED" + }, { + "source" : 5, + "target" : 6, + "shuffle" : { + "type" : "FORWARD" + }, + "shuffleMode" : "PIPELINED" + }, { + "source" : 3, + "target" : 7, + "shuffle" : { + "type" : "FORWARD" + }, + "shuffleMode" : "PIPELINED" + }, { + "source" : 6, + "target" : 7, + "shuffle" : { + "type" : "FORWARD" + }, + "shuffleMode" : "PIPELINED" + }, { + "source" : 7, + "target" : 8, + "shuffle" : { + "type" : "FORWARD" + }, + "shuffleMode" : "PIPELINED" + }, { + "source" : 8, + "target" : 9, + "shuffle" : { + "type" : "FORWARD" + }, + "shuffleMode" : "PIPELINED" + } ] +} \ No newline at end of file diff --git a/flink-table/flink-table-planner/src/test/resources/restore-tests/stream-exec-lateral-snapshot-join_1/lateral-snapshot-join-inner/savepoint/_metadata b/flink-table/flink-table-planner/src/test/resources/restore-tests/stream-exec-lateral-snapshot-join_1/lateral-snapshot-join-inner/savepoint/_metadata new file mode 100644 index 0000000000000000000000000000000000000000..ea9e93db4c1e8b7483a49fb3ecae269359be01c1 GIT binary patch literal 19149 zcmeGkZEV}d_4E7(}e^i9`EDbyLa#I-M#nj5@%*8gisg!@Z-{7XfxV8#){l@=rrmIdtIT_Dq;}eNkGBFjOfLJ#=DJwHHTVc6bo-T<%by{N!B2Oz-NfXLEtzD?_RZS38 zIzF%Qio}XpUJ+PPxX3F5tx;Ktt*EoI2CzM7$KP>px~{&DHmM5w(h4=<8dUnIz>7t7 zoYmMIe1G`*)dN3Yd^zt%t|Z!7!f9rbs-fQG99v@eJ{w;n8>OCc$W@XWThE~M2#lVHc_4tV1Qt>G!#feJ&aB-hR};4 z^kPUW7$Yx}Y?K+DuhbN@zZE^w>H}XPlq^(CTq}Vdl)?;bt3AQpije3mq zjI0V8Ag-Z3(-x%Dg*l$n0Bi4AK`LsB7skQYTyvpD(gsM{Ap&Y2iTP|( zkE}k~#x%JsaOR}A|Jm#pKDziwzzqzHYjneW)!SfWo&J|UxDvTI`pY9YQ^giN28!)! z6oYp2GrY3f-wuRMMA#r|zC{Pnp8c%y}+Dh8t! zu&)&-g-Mc06NLIs{THaAi_6>!yxA(?fG;sgEb^@-rb)a3?;E1+-Y{Of47_erqH8^- zMC$-E$l0EVu^CtoCCVP@^s5W3BSpVMe^vy(N_E#UmG-4WqMR zq*vW>HgXD@#-<70VaEG_8J!IyR&%c+Jvy<;#VYtm@gIIz{k3Q+=FRV|dOZHWW8Q5xc?){n z;+saA`Q2xe*Q|2`aA;tI4C8nNOxF=&?mqXQGk+eAeC1OjzKS9j_-X%X)a}o!B<}5hA9(HhCp~|uz4^xT)9-%nRVZEuhrm3;f~6G< zt%fc2I2e|v!>7?_!g*0op;RM@nuD|#_=U@l?$=)WeE(0&?6+@Xqgx%Ci5#)3yU^Yi z0F_x#ir`#EPS@deH;+eyLs5UIz)`_s$xj6%p%TRw!U2loLs5?N4-G{Ezz(iKKoZR3 zD>lMtLpuiYO_M1wmXiYZR`JXl6iV34XVEA%f0}&=b$QU^El`_n?Q#XWU6U1+#@$Mr zolM*CL)yqXkiq>2(6RM69UDj9@ITUax zu)!2q_gTGE3=M(1(;yWp2E$ZvmUaX{q@~t$ zLUJs%4bP;zF^*YQ>#mNQce>HGLRAop6cLxkKysnp$Kp@K#|P=GI@M^PAptG#&aqPN|U01bpE!;qzQJ`fg=}TGcmetUl=fHzh z)!1^S*#pX*KwByb&k5M|vhJ%GY|nGA4wLvV-hY0C>!QJXD3>@92lw9-nf$3l?pS&< zm&Y;rsdOq16QBnich=ZLn3~4SN<0~{TU8ghzk$OdhHRPbJRP6!JE7?~vjW4mx`EXh ztXUT`utK~=HsCF^2d!oAn3ScNhL{;>{Yv!Jn0<3e{4HR}3z>ujFrMXdY|fnU&WI*iW`W+$JKnE*M-L zUF$jv27QftS8hxew_nFA5sU9N?-rVkOluTJ&Vs?_P{m!?shkA^oM2j$|KIv87&b<< z@6@F^U!+)#I&U6Sv6JeX$iXoX`)*{vukMWW-59cLC)Sz=ZmH8r-J9D{U^ohl`$mCb z*~z*;l{?vunHPJl^CG3f**pDt;04B3O%o|N5Gg1Z9FpkgzL~rRia#Y!^bZU$4#%r- zI)A3seSze|XZekD{b1dAO9>pDPt8pLR-u{_;chb_-hZ8>AiUEmJO(-B?5KiIV(8R zmk}rV@E?B6NYlab5C2*j94WBfbQLU22fc9)(hZXux*VMCv1h>0#?ZEWHu8|jsFjo?>U43 literal 0 HcmV?d00001 diff --git a/flink-table/flink-table-planner/src/test/resources/restore-tests/stream-exec-lateral-snapshot-join_1/lateral-snapshot-join-load-phase/plan/lateral-snapshot-join-load-phase.json b/flink-table/flink-table-planner/src/test/resources/restore-tests/stream-exec-lateral-snapshot-join_1/lateral-snapshot-join-load-phase/plan/lateral-snapshot-join-load-phase.json new file mode 100644 index 00000000000000..d6799f7ab90571 --- /dev/null +++ b/flink-table/flink-table-planner/src/test/resources/restore-tests/stream-exec-lateral-snapshot-join_1/lateral-snapshot-join-load-phase/plan/lateral-snapshot-join-load-phase.json @@ -0,0 +1,468 @@ +{ + "flinkVersion" : "2.4", + "nodes" : [ { + "id" : 1, + "type" : "stream-exec-table-source-scan_2", + "scanTableSource" : { + "table" : { + "identifier" : "`default_catalog`.`default_database`.`probe`", + "resolvedTable" : { + "schema" : { + "columns" : [ { + "name" : "pk", + "dataType" : "VARCHAR(2147483647)" + }, { + "name" : "pv", + "dataType" : "INT" + }, { + "name" : "pts_str", + "dataType" : "VARCHAR(2147483647)" + }, { + "name" : "pts", + "kind" : "COMPUTED", + "expression" : { + "rexNode" : { + "kind" : "CALL", + "internalName" : "$TO_TIMESTAMP$1", + "operands" : [ { + "kind" : "INPUT_REF", + "inputIndex" : 2, + "type" : "VARCHAR(2147483647)" + } ], + "type" : "TIMESTAMP(3)" + }, + "serializableString" : "TO_TIMESTAMP(`pts_str`)" + } + } ], + "watermarkSpecs" : [ { + "rowtimeAttribute" : "pts", + "expression" : { + "rexNode" : { + "kind" : "INPUT_REF", + "inputIndex" : 3, + "type" : "TIMESTAMP(3)" + }, + "serializableString" : "`pts`" + } + } ] + } + } + }, + "abilities" : [ { + "type" : "WatermarkPushDown", + "watermarkExpr" : { + "kind" : "CALL", + "internalName" : "$TO_TIMESTAMP$1", + "operands" : [ { + "kind" : "INPUT_REF", + "inputIndex" : 2, + "type" : "VARCHAR(2147483647)" + } ], + "type" : "TIMESTAMP(3)" + }, + "rowtimeExpr" : { + "kind" : "CALL", + "syntax" : "SPECIAL", + "internalName" : "$REINTERPRET$1", + "operands" : [ { + "kind" : "CALL", + "internalName" : "$TO_TIMESTAMP$1", + "operands" : [ { + "kind" : "INPUT_REF", + "inputIndex" : 2, + "type" : "VARCHAR(2147483647)" + } ], + "type" : "TIMESTAMP(3)" + } ], + "type" : { + "type" : "TIMESTAMP_WITHOUT_TIME_ZONE", + "precision" : 3, + "kind" : "ROWTIME" + } + }, + "idleTimeoutMillis" : -1, + "producedType" : "ROW<`pk` VARCHAR(2147483647), `pv` INT, `pts_str` VARCHAR(2147483647)> NOT NULL", + "watermarkParams" : { + "emitStrategy" : "ON_EVENT", + "alignGroupName" : null, + "alignMaxDrift" : "PT0S", + "alignUpdateInterval" : "PT1S", + "sourceIdleTimeout" : -1 + } + } ] + }, + "outputType" : "ROW<`pk` VARCHAR(2147483647), `pv` INT, `pts_str` VARCHAR(2147483647)>", + "description" : "TableSourceScan(table=[[default_catalog, default_database, probe, watermark=[TO_TIMESTAMP(pts_str)], watermarkEmitStrategy=[on-event]]], fields=[pk, pv, pts_str])" + }, { + "id" : 2, + "type" : "stream-exec-calc_1", + "projection" : [ { + "kind" : "INPUT_REF", + "inputIndex" : 0, + "type" : "VARCHAR(2147483647)" + }, { + "kind" : "INPUT_REF", + "inputIndex" : 1, + "type" : "INT" + } ], + "condition" : null, + "inputProperties" : [ { + "requiredDistribution" : { + "type" : "UNKNOWN" + }, + "damBehavior" : "PIPELINED", + "priority" : 0 + } ], + "outputType" : "ROW<`pk` VARCHAR(2147483647), `pv` INT>", + "description" : "Calc(select=[pk, pv])" + }, { + "id" : 3, + "type" : "stream-exec-exchange_1", + "inputProperties" : [ { + "requiredDistribution" : { + "type" : "HASH", + "keys" : [ 0 ] + }, + "damBehavior" : "PIPELINED", + "priority" : 0 + } ], + "outputType" : "ROW<`pk` VARCHAR(2147483647), `pv` INT>", + "description" : "Exchange(distribution=[hash[pk]])" + }, { + "id" : 4, + "type" : "stream-exec-table-source-scan_2", + "scanTableSource" : { + "table" : { + "identifier" : "`default_catalog`.`default_database`.`b`", + "resolvedTable" : { + "schema" : { + "columns" : [ { + "name" : "bk", + "dataType" : "VARCHAR(2147483647)" + }, { + "name" : "bv", + "dataType" : "INT" + }, { + "name" : "bts_str", + "dataType" : "VARCHAR(2147483647)" + }, { + "name" : "bts", + "kind" : "COMPUTED", + "expression" : { + "rexNode" : { + "kind" : "CALL", + "internalName" : "$TO_TIMESTAMP$1", + "operands" : [ { + "kind" : "INPUT_REF", + "inputIndex" : 2, + "type" : "VARCHAR(2147483647)" + } ], + "type" : "TIMESTAMP(3)" + }, + "serializableString" : "TO_TIMESTAMP(`bts_str`)" + } + } ], + "watermarkSpecs" : [ { + "rowtimeAttribute" : "bts", + "expression" : { + "rexNode" : { + "kind" : "INPUT_REF", + "inputIndex" : 3, + "type" : "TIMESTAMP(3)" + }, + "serializableString" : "`bts`" + } + } ] + } + } + }, + "abilities" : [ { + "type" : "WatermarkPushDown", + "watermarkExpr" : { + "kind" : "CALL", + "internalName" : "$TO_TIMESTAMP$1", + "operands" : [ { + "kind" : "INPUT_REF", + "inputIndex" : 2, + "type" : "VARCHAR(2147483647)" + } ], + "type" : "TIMESTAMP(3)" + }, + "rowtimeExpr" : { + "kind" : "CALL", + "syntax" : "SPECIAL", + "internalName" : "$REINTERPRET$1", + "operands" : [ { + "kind" : "CALL", + "internalName" : "$TO_TIMESTAMP$1", + "operands" : [ { + "kind" : "INPUT_REF", + "inputIndex" : 2, + "type" : "VARCHAR(2147483647)" + } ], + "type" : "TIMESTAMP(3)" + } ], + "type" : { + "type" : "TIMESTAMP_WITHOUT_TIME_ZONE", + "precision" : 3, + "kind" : "ROWTIME" + } + }, + "idleTimeoutMillis" : -1, + "producedType" : "ROW<`bk` VARCHAR(2147483647), `bv` INT, `bts_str` VARCHAR(2147483647)> NOT NULL", + "watermarkParams" : { + "emitStrategy" : "ON_EVENT", + "alignGroupName" : null, + "alignMaxDrift" : "PT0S", + "alignUpdateInterval" : "PT1S", + "sourceIdleTimeout" : -1 + } + } ] + }, + "outputType" : "ROW<`bk` VARCHAR(2147483647), `bv` INT, `bts_str` VARCHAR(2147483647)>", + "description" : "TableSourceScan(table=[[default_catalog, default_database, b, watermark=[TO_TIMESTAMP(bts_str)], watermarkEmitStrategy=[on-event]]], fields=[bk, bv, bts_str])" + }, { + "id" : 5, + "type" : "stream-exec-calc_1", + "projection" : [ { + "kind" : "INPUT_REF", + "inputIndex" : 0, + "type" : "VARCHAR(2147483647)" + }, { + "kind" : "INPUT_REF", + "inputIndex" : 1, + "type" : "INT" + }, { + "kind" : "CALL", + "syntax" : "SPECIAL", + "internalName" : "$REINTERPRET$1", + "operands" : [ { + "kind" : "CALL", + "internalName" : "$TO_TIMESTAMP$1", + "operands" : [ { + "kind" : "INPUT_REF", + "inputIndex" : 2, + "type" : "VARCHAR(2147483647)" + } ], + "type" : "TIMESTAMP(3)" + } ], + "type" : { + "type" : "TIMESTAMP_WITHOUT_TIME_ZONE", + "precision" : 3, + "kind" : "ROWTIME" + } + } ], + "condition" : null, + "inputProperties" : [ { + "requiredDistribution" : { + "type" : "UNKNOWN" + }, + "damBehavior" : "PIPELINED", + "priority" : 0 + } ], + "outputType" : { + "type" : "ROW", + "fields" : [ { + "name" : "bk", + "fieldType" : "VARCHAR(2147483647)" + }, { + "name" : "bv", + "fieldType" : "INT" + }, { + "name" : "bts", + "fieldType" : { + "type" : "TIMESTAMP_WITHOUT_TIME_ZONE", + "precision" : 3, + "kind" : "ROWTIME" + } + } ] + }, + "description" : "Calc(select=[bk, bv, Reinterpret(TO_TIMESTAMP(bts_str)) AS bts])" + }, { + "id" : 6, + "type" : "stream-exec-exchange_1", + "inputProperties" : [ { + "requiredDistribution" : { + "type" : "HASH", + "keys" : [ 0 ] + }, + "damBehavior" : "PIPELINED", + "priority" : 0 + } ], + "outputType" : { + "type" : "ROW", + "fields" : [ { + "name" : "bk", + "fieldType" : "VARCHAR(2147483647)" + }, { + "name" : "bv", + "fieldType" : "INT" + }, { + "name" : "bts", + "fieldType" : { + "type" : "TIMESTAMP_WITHOUT_TIME_ZONE", + "precision" : 3, + "kind" : "ROWTIME" + } + } ] + }, + "description" : "Exchange(distribution=[hash[bk]])" + }, { + "id" : 7, + "type" : "stream-exec-lateral-snapshot-join_1", + "joinSpec" : { + "joinType" : "INNER", + "leftKeys" : [ 0 ], + "rightKeys" : [ 0 ], + "filterNulls" : [ true ], + "nonEquiCondition" : null + }, + "rightTimeAttributeIndex" : 2, + "loadCompletedCondition" : "user_time", + "loadCompletedTime" : 1577836803000, + "inputProperties" : [ { + "requiredDistribution" : { + "type" : "UNKNOWN" + }, + "damBehavior" : "PIPELINED", + "priority" : 0 + }, { + "requiredDistribution" : { + "type" : "UNKNOWN" + }, + "damBehavior" : "PIPELINED", + "priority" : 0 + } ], + "outputType" : "ROW<`pk` VARCHAR(2147483647), `pv` INT, `bk` VARCHAR(2147483647), `bv` INT, `bts` TIMESTAMP(3)>", + "description" : "LateralSnapshotJoin(joinType=[InnerJoin], where=[(pk = bk)], select=[pk, pv, bk, bv, bts], loadCompletedCondition=[user_time], loadCompletedTime=[1577836803000])" + }, { + "id" : 8, + "type" : "stream-exec-calc_1", + "projection" : [ { + "kind" : "INPUT_REF", + "inputIndex" : 0, + "type" : "VARCHAR(2147483647)" + }, { + "kind" : "INPUT_REF", + "inputIndex" : 1, + "type" : "INT" + }, { + "kind" : "INPUT_REF", + "inputIndex" : 2, + "type" : "VARCHAR(2147483647)" + }, { + "kind" : "INPUT_REF", + "inputIndex" : 3, + "type" : "INT" + } ], + "condition" : null, + "inputProperties" : [ { + "requiredDistribution" : { + "type" : "UNKNOWN" + }, + "damBehavior" : "PIPELINED", + "priority" : 0 + } ], + "outputType" : "ROW<`pk` VARCHAR(2147483647), `pv` INT, `bk` VARCHAR(2147483647), `bv` INT>", + "description" : "Calc(select=[pk, pv, bk, bv])" + }, { + "id" : 9, + "type" : "stream-exec-sink_2", + "configuration" : { + "table.exec.sink.keyed-shuffle" : "AUTO", + "table.exec.sink.not-null-enforcer" : "ERROR", + "table.exec.sink.rowtime-inserter" : "ENABLED", + "table.exec.sink.type-length-enforcer" : "IGNORE", + "table.exec.sink.upsert-materialize" : "AUTO" + }, + "dynamicTableSink" : { + "table" : { + "identifier" : "`default_catalog`.`default_database`.`sink`", + "resolvedTable" : { + "schema" : { + "columns" : [ { + "name" : "pk", + "dataType" : "VARCHAR(2147483647)" + }, { + "name" : "pv", + "dataType" : "INT" + }, { + "name" : "bk", + "dataType" : "VARCHAR(2147483647)" + }, { + "name" : "bv", + "dataType" : "INT" + } ] + } + } + } + }, + "inputChangelogMode" : [ "INSERT" ], + "inputProperties" : [ { + "requiredDistribution" : { + "type" : "UNKNOWN" + }, + "damBehavior" : "PIPELINED", + "priority" : 0 + } ], + "outputType" : "ROW<`pk` VARCHAR(2147483647), `pv` INT, `bk` VARCHAR(2147483647), `bv` INT>", + "description" : "Sink(table=[default_catalog.default_database.sink], fields=[pk, pv, bk, bv])" + } ], + "edges" : [ { + "source" : 1, + "target" : 2, + "shuffle" : { + "type" : "FORWARD" + }, + "shuffleMode" : "PIPELINED" + }, { + "source" : 2, + "target" : 3, + "shuffle" : { + "type" : "FORWARD" + }, + "shuffleMode" : "PIPELINED" + }, { + "source" : 4, + "target" : 5, + "shuffle" : { + "type" : "FORWARD" + }, + "shuffleMode" : "PIPELINED" + }, { + "source" : 5, + "target" : 6, + "shuffle" : { + "type" : "FORWARD" + }, + "shuffleMode" : "PIPELINED" + }, { + "source" : 3, + "target" : 7, + "shuffle" : { + "type" : "FORWARD" + }, + "shuffleMode" : "PIPELINED" + }, { + "source" : 6, + "target" : 7, + "shuffle" : { + "type" : "FORWARD" + }, + "shuffleMode" : "PIPELINED" + }, { + "source" : 7, + "target" : 8, + "shuffle" : { + "type" : "FORWARD" + }, + "shuffleMode" : "PIPELINED" + }, { + "source" : 8, + "target" : 9, + "shuffle" : { + "type" : "FORWARD" + }, + "shuffleMode" : "PIPELINED" + } ] +} \ No newline at end of file diff --git a/flink-table/flink-table-planner/src/test/resources/restore-tests/stream-exec-lateral-snapshot-join_1/lateral-snapshot-join-load-phase/savepoint/_metadata b/flink-table/flink-table-planner/src/test/resources/restore-tests/stream-exec-lateral-snapshot-join_1/lateral-snapshot-join-load-phase/savepoint/_metadata new file mode 100644 index 0000000000000000000000000000000000000000..cf486d2151fa84b48929cea6fd21571dbba2f8a1 GIT binary patch literal 18950 zcmeGkZHya7b^MXbm-Vi* zyLK*-2p3WHLkLi$78M~Nts?kAkSY*Tg;4*10#g5!R{cYfK>VRW&=r6PpZJfXYHyb>S`hs~5K0kTw z_cK-h2VYH>-aqj2H}PML!b^Guy|f=n`?bZqxBY_aB;2Nn&yr_CG350yu6Y>?qMXnh12MQcp3Ubj> zAv)#>heBabU<_jq4u!EN5{%*!_JwgE971Rx#TUrlxihrS4m6U^#HV7p^i)2Zi{;|^ z$wW3cl{hk;OQciz6Y0q~8q8*riCi-yuGJen8B0#b^V#@RB9=_d#HS$DiB3xL9D^&E zn~krc!v&Hz~UUM zC545UvN^M&BG**<6wvUXR*3R1Ga(5A3>gfiGCD1mr6OPA zwN3$Fe>`x&_nTYa8`P-h79gcgyF;H2pb2=-5w!HmnUD5sU>ux^cAG}HSxg_^T}{X_ zS;iOX{93&7+VBtmh=1%tjs$WmF!h042)QrN>FtL81iPY}!4sqKK1ye_K^tHW7chR2 zD4fh!bf(^E;_0j^^Wq%kX%Qv`rNBe*O-G!5yB8}!S7+rMpwS&ioy79QJeF6mX9D#J zM4VIS7b(C z!a41Gzk}j1(%N#Nrsa)lc?UI6d$g3#wv5Q?i)~Dm$~;$J6!$)refZy(zTkHP1Jf3r zuwD%|*;uFlwfC<_E{*^C2rX2xM304PJDSy?-(-%+JO6R*`bSrui~#c`(1scossv_< z34E$rE)e;N8_y1JdFJomX@WO;s5Qk>wEWhs(yXwSRi_C;L#O@=)X>Fct^;qj3pn6Q zN)nTNYfEVnZ@~M8XuC6v*DV9D+mh&5k0sGO!3=VCCt@rn)&ojGV*#<5QQN37runf} z`D`;I-Rj;J1r262t-)?I)Absx3!4?ouvKEqN}Otgk1IUGN#(L6nlzXKRtN*jhG~Uw z`PBmRe#CjDs%tBZRN1i=#^RBSw!&yDjLfPUXHyfj6-K&jFm+potuQjS!f0g?ZBq}a zX`^-T(z2zn6~@M#viIn)&o-Nh4J+jOsNA-~*s{Re%yFq#{cNGV42y z`h9stOMCra`+jlrlYzh0{`B(I**8D`0#v6^mUJ+?lNdaV;9xX-h{wU9IvYNXJ`>Ih zdX7givOEir_Y7IO_NBe*b6*_(Ss6cli#nSc(CWx(?qLVo-3FjC55@pm$|&hLwC-ME z5+o$z_j(Eu67d9rA+IOGaej}#5D0k#kuWZJqkx_la0IV#$37Tc=*BO+VLAmqVy%L; zGdQybI|}t~nG7kdKkGvXZMo2+ZBScX%u)qLU6o{op`*&w$C$BThqO_2G((3Epi`%5 zIyQ;i$I}VgGvnE4yqD?;tG`Efte$V@+7z%Ua6eLDy%+Ups1WjcBVkX}3sFD;E`U8z zTp;jo%;yh8{XQH4zxU@vpd~Eobp7h3f3hBWWBVtY@i@2R5;E;k9X)qy^rJ0>DlZg0 znzS?~p92j(5`Qc{X~cfz9?Qg$>qIQ0v68h=|5}^)?d%+ZD4(WGZxP}~ESHG_y=7gO z?aj2knTl0F-CeYl_}iwEzLTZFNKJcj4&o*i6_+cmaX-!k+EkGV$J2nrMuc9VyLhz* zOf72f-iw}F7rWI%xx|S$1ihZfzX*2XiP_X{*Sv`O3+BDQZB96jCZ+8YLak9%9eJEmY)I~I?M?=@=+t*(_d ziX(f&U~!b-HoP%1>D*}JnY4w~0Rj{+yo^yh&W7@Jj9 z@W3%ZUcP9PL_h7!=2bBK$$8EGzyjlNM1iB{bM3(kS~+^!+ts9<<>Bmh)4ig~1eXCS zoZ04?rstfRY2;NkaX41qI2G4h)4lC=y0e2C_xl5}W!nda-y)_QPaVKxAP zi2)-pkv#j`tEYe9f93d_zw>Xb-FO=cQ@Si^l?+8L(q$gk8eNrmDyZ7&Zh&xZR_P8#OLkUSMK$gKZXN>y~_4hu)1r9|wXv z4}9GaAzQx&{A02v0yX9ds;8@1mg$ODNw!1z#NhT~=BpjSnl0>!v=xC!_ z{T>JvS>6#b1h<)}%|VE1H*2WqSbI}ey*A@L3Mb~;AOS7F$vD*kh_O%t(HI+d7+CE-dMV}wT Date: Mon, 20 Jul 2026 16:08:32 +0200 Subject: [PATCH 04/32] [FLINK-40158][table-planner] Support LATERAL SNAPSHOT join in batch mode (#28763) In batch, all input is bounded and append-only, so the processing-time LATERAL SNAPSHOT join degenerates to a regular join of the probe side against the (final) build side; the SNAPSHOT-specific arguments are dropped. BatchPhysicalLateralSnapshotJoinRule converts the logical snapshot join into a shuffle hash join that builds the (smaller) SNAPSHOT side, mirroring StreamPhysicalLateralSnapshotJoinRule. Generated-By: Claude Opus 4.8 (1M context) --- .../LogicalJoinToLateralSnapshotJoinRule.java | 38 ++-- .../BatchPhysicalLateralSnapshotJoinRule.java | 108 ++++++++++ .../plan/rules/FlinkBatchRuleSets.scala | 12 +- .../sql/join/LateralSnapshotJoinTest.java | 189 +++++++++++++++++ ...LateralSnapshotJoinBatchSemanticTests.java | 42 ++++ .../LateralSnapshotJoinTestPrograms.java | 129 ++++++++++++ .../sql/join/LateralSnapshotJoinTest.xml | 191 ++++++++++++++++++ 7 files changed, 691 insertions(+), 18 deletions(-) create mode 100644 flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/plan/rules/physical/batch/BatchPhysicalLateralSnapshotJoinRule.java create mode 100644 flink-table/flink-table-planner/src/test/java/org/apache/flink/table/planner/plan/batch/sql/join/LateralSnapshotJoinTest.java create mode 100644 flink-table/flink-table-planner/src/test/java/org/apache/flink/table/planner/plan/nodes/exec/batch/LateralSnapshotJoinBatchSemanticTests.java create mode 100644 flink-table/flink-table-planner/src/test/java/org/apache/flink/table/planner/plan/nodes/exec/batch/LateralSnapshotJoinTestPrograms.java create mode 100644 flink-table/flink-table-planner/src/test/resources/org/apache/flink/table/planner/plan/batch/sql/join/LateralSnapshotJoinTest.xml diff --git a/flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/plan/rules/logical/LogicalJoinToLateralSnapshotJoinRule.java b/flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/plan/rules/logical/LogicalJoinToLateralSnapshotJoinRule.java index f76154803a49ca..c4b1012df9729a 100644 --- a/flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/plan/rules/logical/LogicalJoinToLateralSnapshotJoinRule.java +++ b/flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/plan/rules/logical/LogicalJoinToLateralSnapshotJoinRule.java @@ -28,6 +28,7 @@ import org.apache.flink.table.planner.plan.nodes.logical.FlinkLogicalTableFunctionScan; import org.apache.flink.table.planner.plan.utils.FlinkRexUtil; import org.apache.flink.table.planner.plan.utils.LateralSnapshotJoinUtil; +import org.apache.flink.table.planner.utils.ShortcutUtils; import org.apache.flink.table.types.inference.strategies.LateralSnapshotTypeStrategy; import org.apache.calcite.plan.RelOptRuleCall; @@ -123,22 +124,27 @@ public void onMatch(RelOptRuleCall call) { "Could not resolve the TABLE input of the SNAPSHOT scan on the build side of " + "a LATERAL SNAPSHOT join. This is a bug, please file an issue."); } - // The build-side input must declare exactly one watermark, otherwise the operator cannot - // determine when the LOAD phase is complete. - final long rowtimeCount = - rawTableInput.getRowType().getFieldList().stream() - .filter(f -> FlinkTypeFactory.isRowtimeIndicatorType(f.getType())) - .count(); - if (rowtimeCount == 0) { - throw new ValidationException( - "LATERAL SNAPSHOT requires a watermark on the build-side input."); - } - if (rowtimeCount > 1) { - throw new ValidationException( - String.format( - "The build-side input of a LATERAL SNAPSHOT join must not have more than one " - + "row-time attribute, but found %d.", - rowtimeCount)); + // The build-side row-time attribute drives the streaming operator's LOAD phase. In batch + // all input is bounded and the join degrades to a regular join (see + // BatchPhysicalLateralSnapshotJoinRule), so no watermark is required. + if (!ShortcutUtils.unwrapContext(join).isBatchMode()) { + // The build-side input must declare exactly one watermark, otherwise the operator + // cannot determine when the LOAD phase is complete. + final long rowtimeCount = + rawTableInput.getRowType().getFieldList().stream() + .filter(f -> FlinkTypeFactory.isRowtimeIndicatorType(f.getType())) + .count(); + if (rowtimeCount == 0) { + throw new ValidationException( + "LATERAL SNAPSHOT requires a watermark on the build-side input."); + } + if (rowtimeCount > 1) { + throw new ValidationException( + String.format( + "The build-side input of a LATERAL SNAPSHOT join must not have more than one " + + "row-time attribute, but found %d.", + rowtimeCount)); + } } // Replace the SNAPSHOT TableFunctionScan with its input, preserving any FlinkLogicalCalc diff --git a/flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/plan/rules/physical/batch/BatchPhysicalLateralSnapshotJoinRule.java b/flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/plan/rules/physical/batch/BatchPhysicalLateralSnapshotJoinRule.java new file mode 100644 index 00000000000000..9338ffb8feb86a --- /dev/null +++ b/flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/plan/rules/physical/batch/BatchPhysicalLateralSnapshotJoinRule.java @@ -0,0 +1,108 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.flink.table.planner.plan.rules.physical.batch; + +import org.apache.flink.table.planner.plan.nodes.FlinkConventions; +import org.apache.flink.table.planner.plan.nodes.logical.FlinkLogicalLateralSnapshotJoin; +import org.apache.flink.table.planner.plan.nodes.physical.batch.BatchPhysicalHashJoin; +import org.apache.flink.table.planner.plan.rules.logical.LogicalJoinToLateralSnapshotJoinRule; +import org.apache.flink.table.planner.plan.rules.physical.stream.StreamPhysicalLateralSnapshotJoinRule; +import org.apache.flink.table.planner.plan.trait.FlinkRelDistribution; + +import org.apache.calcite.plan.RelOptRule; +import org.apache.calcite.plan.RelTraitSet; +import org.apache.calcite.rel.RelNode; +import org.apache.calcite.rel.convert.ConverterRule; +import org.apache.calcite.rel.core.JoinInfo; +import org.apache.calcite.util.ImmutableIntList; + +/** + * Converts a {@link FlinkLogicalLateralSnapshotJoin} (created by {@link + * LogicalJoinToLateralSnapshotJoinRule}) into a regular batch {@link BatchPhysicalHashJoin} for + * batch execution. + * + *

In batch all input is bounded and append-only (batch rejects or in the future materializes + * non-insert-only sources up front), so the processing-time {@code LATERAL SNAPSHOT} join + * degenerates to a regular join of the probe side against the (final) build side; the + * SNAPSHOT-specific arguments are irrelevant and dropped. This rule mirrors the streaming {@link + * StreamPhysicalLateralSnapshotJoinRule}, which converts the same logical node to a dedicated + * stream operator. + * + *

The SNAPSHOT input is the build (right) side of the LATERAL join and is the dimension-like + * side, expected to be smaller than the probe (left) side. The join is therefore emitted as a + * shuffle hash join that builds on the right input. + */ +public class BatchPhysicalLateralSnapshotJoinRule extends ConverterRule { + + public static final BatchPhysicalLateralSnapshotJoinRule INSTANCE = + new BatchPhysicalLateralSnapshotJoinRule( + Config.INSTANCE.withConversion( + FlinkLogicalLateralSnapshotJoin.class, + FlinkConventions.LOGICAL(), + FlinkConventions.BATCH_PHYSICAL(), + "BatchPhysicalLateralSnapshotJoinRule")); + + private BatchPhysicalLateralSnapshotJoinRule(Config config) { + super(config); + } + + @Override + public RelNode convert(RelNode rel) { + final FlinkLogicalLateralSnapshotJoin join = (FlinkLogicalLateralSnapshotJoin) rel; + final RelTraitSet providedTraitSet = + rel.getTraitSet().replace(FlinkConventions.BATCH_PHYSICAL()); + + // Both inputs are hash-partitioned on their join keys (shuffle hash join). + final JoinInfo joinInfo = join.analyzeCondition(); + final RelNode newLeft = convertInput(join.getLeft(), joinInfo.leftKeys); + final RelNode newRight = convertInput(join.getRight(), joinInfo.rightKeys); + + return new BatchPhysicalHashJoin( + join.getCluster(), + providedTraitSet, + newLeft, + newRight, + join.getCondition(), + join.getJoinType(), + // leftIsBuild = false: build the right (SNAPSHOT) side, the smaller dimension side. + false, + // isBroadcast = false: shuffle hash join. + false, + // tryDistinctBuildRow = false: only relevant for semi/anti joins. + false, + // withJobStrategyHint = false: not driven by a user join hint. + false); + } + + /** + * Converts a join input to the batch-physical convention and requires it to be hash-partitioned + * on the given join {@code keys} (or a singleton distribution if there are none). + */ + private static RelNode convertInput(RelNode input, ImmutableIntList keys) { + final FlinkRelDistribution distribution = + keys.isEmpty() + ? FlinkRelDistribution.SINGLETON() + : FlinkRelDistribution.hash(keys.toIntArray(), true); + final RelTraitSet requiredTraitSet = + input.getTraitSet() + .replace(FlinkConventions.BATCH_PHYSICAL()) + .replace(distribution); + return RelOptRule.convert(input, requiredTraitSet); + } +} diff --git a/flink-table/flink-table-planner/src/main/scala/org/apache/flink/table/planner/plan/rules/FlinkBatchRuleSets.scala b/flink-table/flink-table-planner/src/main/scala/org/apache/flink/table/planner/plan/rules/FlinkBatchRuleSets.scala index 3fb057bc08d3eb..26553f24ddcd04 100644 --- a/flink-table/flink-table-planner/src/main/scala/org/apache/flink/table/planner/plan/rules/FlinkBatchRuleSets.scala +++ b/flink-table/flink-table-planner/src/main/scala/org/apache/flink/table/planner/plan/rules/FlinkBatchRuleSets.scala @@ -18,7 +18,6 @@ package org.apache.flink.table.planner.plan.rules import org.apache.flink.table.planner.plan.nodes.logical._ -import org.apache.flink.table.planner.plan.rules.FlinkStreamRuleSets.SIMPLIFY_COALESCE_RULES import org.apache.flink.table.planner.plan.rules.logical._ import org.apache.flink.table.planner.plan.rules.physical.FlinkExpandConversionRule import org.apache.flink.table.planner.plan.rules.physical.batch._ @@ -419,7 +418,13 @@ object FlinkBatchRuleSets { // Avoid having async calls in multiple projections in a single calc. AsyncCalcSplitRule.ONE_PER_CALC_SPLIT, // remove output of rank number when it is not used by successor calc - RedundantRankNumberColumnRemoveRule.INSTANCE + RedundantRankNumberColumnRemoveRule.INSTANCE, + // Rewrites a join over a LATERAL SNAPSHOT table function call into a dedicated + // FlinkLogicalLateralSnapshotJoin + LogicalJoinToLateralSnapshotJoinRule.INSTANCE, + // Rejects SNAPSHOT scans that survived the rewrite above, i.e. SNAPSHOT calls used outside a + // LATERAL context. Must run after LogicalJoinToLateralSnapshotJoinRule. + ForbidSnapshotOutsideLateralRule.INSTANCE ) /** RuleSet to do physical optimize for batch */ @@ -460,6 +465,9 @@ object FlinkBatchRuleSets { BatchPhysicalPythonWindowAggregateRule.INSTANCE, // window tvf BatchPhysicalWindowTableFunctionRule.INSTANCE, + // Converts a LATERAL SNAPSHOT join into a (shuffle hash) batch join with the SNAPSHOT input as + // build side + BatchPhysicalLateralSnapshotJoinRule.INSTANCE, // join BatchPhysicalHashJoinRule.INSTANCE, BatchPhysicalSortMergeJoinRule.INSTANCE, diff --git a/flink-table/flink-table-planner/src/test/java/org/apache/flink/table/planner/plan/batch/sql/join/LateralSnapshotJoinTest.java b/flink-table/flink-table-planner/src/test/java/org/apache/flink/table/planner/plan/batch/sql/join/LateralSnapshotJoinTest.java new file mode 100644 index 00000000000000..50416c1560f3e3 --- /dev/null +++ b/flink-table/flink-table-planner/src/test/java/org/apache/flink/table/planner/plan/batch/sql/join/LateralSnapshotJoinTest.java @@ -0,0 +1,189 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.flink.table.planner.plan.batch.sql.join; + +import org.apache.flink.table.api.TableConfig; +import org.apache.flink.table.api.ValidationException; +import org.apache.flink.table.planner.plan.rules.physical.batch.BatchPhysicalLateralSnapshotJoinRule; +import org.apache.flink.table.planner.utils.BatchTableTestUtil; +import org.apache.flink.table.planner.utils.TableTestBase; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +import static org.assertj.core.api.Assertions.assertThatThrownBy; + +/** + * Plan tests for {@code LATERAL SNAPSHOT} joins in batch mode. + * + *

In batch all input is bounded and append-only, so the processing-time {@code LATERAL SNAPSHOT} + * join degenerates to a regular join of the probe side against the (final) build side. {@link + * BatchPhysicalLateralSnapshotJoinRule} performs this translation and the SNAPSHOT-specific + * arguments are dropped. + */ +public class LateralSnapshotJoinTest extends TableTestBase { + + private BatchTableTestUtil util; + + @BeforeEach + void setup() { + util = batchTestUtil(TableConfig.getDefault()); + + util.tableEnv() + .executeSql( + "CREATE TABLE probe (" + + " pk STRING," + + " pv INT," + + " pts TIMESTAMP(3)," + + " WATERMARK FOR pts AS pts" + + ") WITH ('connector' = 'values', 'bounded' = 'true')"); + + util.tableEnv() + .executeSql( + "CREATE TABLE b (" + + " bk STRING," + + " bv INT," + + " bts TIMESTAMP(3)," + + " WATERMARK FOR bts AS bts" + + ") WITH ('connector' = 'values', 'bounded' = 'true')"); + } + + // ------------------------------------------------------------------------------------------ + // Translation to a regular join + // ------------------------------------------------------------------------------------------ + + @Test + void testInnerJoin() { + util.verifyRelPlan( + "SELECT * FROM probe JOIN LATERAL TABLE(SNAPSHOT(" + + "input => TABLE b, " + + "load_completed_condition => 'user_time', " + + "load_completed_time => CAST(TIMESTAMP '2026-07-01 00:00:00' AS TIMESTAMP_LTZ(3))" + + ")) AS s " + + "ON probe.pk = s.bk"); + } + + @Test + void testLeftJoin() { + util.verifyRelPlan( + "SELECT * FROM probe LEFT JOIN LATERAL TABLE(SNAPSHOT(" + + "input => TABLE b, " + + "load_completed_condition => 'user_time', " + + "load_completed_time => CAST(TIMESTAMP '2026-07-01 00:00:00' AS TIMESTAMP_LTZ(3))" + + ")) AS s " + + "ON probe.pk = s.bk"); + } + + @Test + void testInnerJoinWithCompositeKeys() { + util.verifyRelPlan( + "SELECT * FROM probe JOIN LATERAL TABLE(SNAPSHOT(" + + "input => TABLE b, " + + "load_completed_condition => 'user_time', " + + "load_completed_time => CAST(TIMESTAMP '2026-07-01 00:00:00' AS TIMESTAMP_LTZ(3))" + + ")) AS s " + + "ON probe.pk = s.bk AND probe.pv = s.bv"); + } + + @Test + void testInnerJoinWithNonEquiCondition() { + util.verifyRelPlan( + "SELECT * FROM probe JOIN LATERAL TABLE(SNAPSHOT(" + + "input => TABLE b, " + + "load_completed_condition => 'user_time', " + + "load_completed_time => CAST(TIMESTAMP '2026-07-01 00:00:00' AS TIMESTAMP_LTZ(3))" + + ")) AS s " + + "ON probe.pk = s.bk AND probe.pv > s.bv"); + } + + @Test + void testInnerJoinWithoutBuildTimeColumn() { + util.verifyRelPlan( + "SELECT probe.pk, probe.pv, s.bv FROM probe JOIN LATERAL TABLE(SNAPSHOT(" + + "input => TABLE b, " + + "load_completed_condition => 'user_time', " + + "load_completed_time => CAST(TIMESTAMP '2026-07-01 00:00:00' AS TIMESTAMP_LTZ(3))" + + ")) AS s " + + "ON probe.pk = s.bk"); + } + + @Test + void testBuildSideWithProctime() { + // A PROCTIME() build column is a time-attribute indicator in batch; the rule materializes + // it (into a PROCTIME_MATERIALIZE call) when degrading to a regular join. + util.tableEnv() + .executeSql( + "CREATE TABLE b_proctime (" + + " bk STRING," + + " bv INT," + + " pt AS PROCTIME()" + + ") WITH ('connector' = 'values', 'bounded' = 'true')"); + util.verifyRelPlan( + "SELECT probe.pk, s.bk, s.bv, s.pt FROM probe JOIN LATERAL TABLE(SNAPSHOT(" + + "input => TABLE b_proctime)) AS s " + + "ON probe.pk = s.bk"); + } + + @Test + void testBuildSideWithoutWatermark() { + // A watermark on the build side is required in streaming (drives the LOAD phase) but not in + // batch, where the build side is already final. + util.tableEnv() + .executeSql( + "CREATE TABLE b_no_wm (" + + " bk STRING," + + " bv INT," + + " bts TIMESTAMP(3)" + + ") WITH ('connector' = 'values', 'bounded' = 'true')"); + util.verifyRelPlan( + "SELECT * FROM probe JOIN LATERAL TABLE(SNAPSHOT(input => TABLE b_no_wm)) AS s " + + "ON probe.pk = s.bk"); + } + + // ------------------------------------------------------------------------------------------ + // Validation: rejection paths + // ------------------------------------------------------------------------------------------ + + @Test + void testRejectMissingEqualityPredicate() { + final String sql = + "SELECT * FROM probe JOIN LATERAL TABLE(SNAPSHOT(" + + "input => TABLE b, " + + "load_completed_condition => 'user_time', " + + "load_completed_time => CAST(TIMESTAMP '2026-07-01 00:00:00' AS TIMESTAMP_LTZ(3))" + + ")) AS s " + + "ON probe.pv > s.bv"; + assertThatThrownBy(() -> util.verifyExecPlan(sql)) + .isInstanceOf(ValidationException.class) + .hasMessageContaining( + "LATERAL SNAPSHOT join requires at least one equality predicate."); + } + + @Test + void testRejectSnapshotOutsideLateral() { + // SNAPSHOT used outside a LATERAL context is not rewritten into a join; + // ForbidSnapshotOutsideLateralRule rejects the surviving SNAPSHOT scan with a clear + // message. + assertThatThrownBy(() -> util.verifyExecPlan("SELECT * FROM SNAPSHOT(input => TABLE b)")) + .isInstanceOf(ValidationException.class) + .hasMessageContaining( + "The SNAPSHOT function can only be used as the build side " + + "(right-hand side) of a LATERAL join"); + } +} diff --git a/flink-table/flink-table-planner/src/test/java/org/apache/flink/table/planner/plan/nodes/exec/batch/LateralSnapshotJoinBatchSemanticTests.java b/flink-table/flink-table-planner/src/test/java/org/apache/flink/table/planner/plan/nodes/exec/batch/LateralSnapshotJoinBatchSemanticTests.java new file mode 100644 index 00000000000000..87725a60a26ca9 --- /dev/null +++ b/flink-table/flink-table-planner/src/test/java/org/apache/flink/table/planner/plan/nodes/exec/batch/LateralSnapshotJoinBatchSemanticTests.java @@ -0,0 +1,42 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.flink.table.planner.plan.nodes.exec.batch; + +import org.apache.flink.table.planner.plan.nodes.exec.testutils.BatchSemanticTestBase; +import org.apache.flink.table.planner.plan.rules.physical.batch.BatchPhysicalLateralSnapshotJoinRule; +import org.apache.flink.table.test.program.TableTestProgram; + +import java.util.List; + +/** + * Semantic tests for {@code LATERAL SNAPSHOT} joins in batch mode. {@link + * BatchPhysicalLateralSnapshotJoinRule} degrades the join to a regular join of the probe side + * against the (final) build side. + */ +public class LateralSnapshotJoinBatchSemanticTests extends BatchSemanticTestBase { + + @Override + public List programs() { + return List.of( + LateralSnapshotJoinTestPrograms.INNER_JOIN, + LateralSnapshotJoinTestPrograms.LEFT_JOIN, + LateralSnapshotJoinTestPrograms.INNER_JOIN_WITH_NON_EQUI_CONDITION, + LateralSnapshotJoinTestPrograms.SNAPSHOT_ARGUMENTS_IGNORED); + } +} diff --git a/flink-table/flink-table-planner/src/test/java/org/apache/flink/table/planner/plan/nodes/exec/batch/LateralSnapshotJoinTestPrograms.java b/flink-table/flink-table-planner/src/test/java/org/apache/flink/table/planner/plan/nodes/exec/batch/LateralSnapshotJoinTestPrograms.java new file mode 100644 index 00000000000000..8b8be2119520f2 --- /dev/null +++ b/flink-table/flink-table-planner/src/test/java/org/apache/flink/table/planner/plan/nodes/exec/batch/LateralSnapshotJoinTestPrograms.java @@ -0,0 +1,129 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.flink.table.planner.plan.nodes.exec.batch; + +import org.apache.flink.table.test.program.SinkTestStep; +import org.apache.flink.table.test.program.SourceTestStep; +import org.apache.flink.table.test.program.TableTestProgram; +import org.apache.flink.types.Row; + +/** + * {@link TableTestProgram} definitions for semantically testing {@code LATERAL SNAPSHOT} joins in + * batch mode, where the join degenerates to a regular join of the probe side against the (final) + * build side. + */ +public class LateralSnapshotJoinTestPrograms { + + private static SourceTestStep probe() { + return SourceTestStep.newBuilder("probe") + .addSchema("pk STRING", "pv INT") + .producedValues(Row.of("a", 1), Row.of("b", 2), Row.of("c", 3)) + .build(); + } + + private static SourceTestStep build() { + // The key "a" appears twice: the batch join runs against the final (complete) build side, + // so both "a" rows participate. + return SourceTestStep.newBuilder("b") + .addSchema("bk STRING", "bv INT") + .producedValues(Row.of("a", 10), Row.of("a", 11), Row.of("b", 20)) + .build(); + } + + public static final TableTestProgram INNER_JOIN = + TableTestProgram.of( + "lateral-snapshot-join-inner", + "batch LATERAL SNAPSHOT inner join degrades to a regular join") + .setupTableSource(probe()) + .setupTableSource(build()) + .setupTableSink( + SinkTestStep.newBuilder("sink") + .addSchema("pk STRING", "pv INT", "bk STRING", "bv INT") + .consumedValues( + Row.of("a", 1, "a", 10), + Row.of("a", 1, "a", 11), + Row.of("b", 2, "b", 20)) + .build()) + .runSql( + "INSERT INTO sink SELECT pk, pv, bk, bv FROM probe JOIN LATERAL " + + "TABLE(SNAPSHOT(input => TABLE b)) AS s ON probe.pk = s.bk") + .build(); + + public static final TableTestProgram LEFT_JOIN = + TableTestProgram.of( + "lateral-snapshot-join-left", + "batch LATERAL SNAPSHOT left join null-pads unmatched probe rows") + .setupTableSource(probe()) + .setupTableSource(build()) + .setupTableSink( + SinkTestStep.newBuilder("sink") + .addSchema("pk STRING", "pv INT", "bk STRING", "bv INT") + .consumedValues( + Row.of("a", 1, "a", 10), + Row.of("a", 1, "a", 11), + Row.of("b", 2, "b", 20), + Row.of("c", 3, null, null)) + .build()) + .runSql( + "INSERT INTO sink SELECT pk, pv, bk, bv FROM probe LEFT JOIN LATERAL " + + "TABLE(SNAPSHOT(input => TABLE b)) AS s ON probe.pk = s.bk") + .build(); + + public static final TableTestProgram INNER_JOIN_WITH_NON_EQUI_CONDITION = + TableTestProgram.of( + "lateral-snapshot-join-non-equi", + "batch LATERAL SNAPSHOT join with an additional non-equi predicate") + .setupTableSource(probe()) + .setupTableSource(build()) + .setupTableSink( + SinkTestStep.newBuilder("sink") + .addSchema("pk STRING", "pv INT", "bk STRING", "bv INT") + .consumedValues( + Row.of("a", 1, "a", 11), Row.of("b", 2, "b", 20)) + .build()) + .runSql( + "INSERT INTO sink SELECT pk, pv, bk, bv FROM probe JOIN LATERAL " + + "TABLE(SNAPSHOT(input => TABLE b)) AS s " + + "ON probe.pk = s.bk AND s.bv > 10") + .build(); + + public static final TableTestProgram SNAPSHOT_ARGUMENTS_IGNORED = + TableTestProgram.of( + "lateral-snapshot-join-arguments-ignored", + "streaming-only SNAPSHOT arguments do not affect the batch result") + .setupTableSource(probe()) + .setupTableSource(build()) + .setupTableSink( + SinkTestStep.newBuilder("sink") + .addSchema("pk STRING", "pv INT", "bk STRING", "bv INT") + .consumedValues( + Row.of("a", 1, "a", 10), + Row.of("a", 1, "a", 11), + Row.of("b", 2, "b", 20)) + .build()) + .runSql( + "INSERT INTO sink SELECT pk, pv, bk, bv FROM probe JOIN LATERAL " + + "TABLE(SNAPSHOT(" + + "input => TABLE b, " + + "load_completed_condition => 'compile_time', " + + "load_completed_idle_timeout => INTERVAL '10' SECOND, " + + "state_ttl => INTERVAL '1' DAY" + + ")) AS s ON probe.pk = s.bk") + .build(); +} diff --git a/flink-table/flink-table-planner/src/test/resources/org/apache/flink/table/planner/plan/batch/sql/join/LateralSnapshotJoinTest.xml b/flink-table/flink-table-planner/src/test/resources/org/apache/flink/table/planner/plan/batch/sql/join/LateralSnapshotJoinTest.xml new file mode 100644 index 00000000000000..5375c4f7eb30ba --- /dev/null +++ b/flink-table/flink-table-planner/src/test/resources/org/apache/flink/table/planner/plan/batch/sql/join/LateralSnapshotJoinTest.xml @@ -0,0 +1,191 @@ + + + + + + TABLE b_proctime)) AS s ON probe.pk = s.bk]]> + + + + + + + + + + + TABLE b_no_wm)) AS s ON probe.pk = s.bk]]> + + + + + + + + + + + TABLE b, load_completed_condition => 'user_time', load_completed_time => CAST(TIMESTAMP '2026-07-01 00:00:00' AS TIMESTAMP_LTZ(3)))) AS s ON probe.pk = s.bk]]> + + + + + + + + + + + TABLE b, load_completed_condition => 'user_time', load_completed_time => CAST(TIMESTAMP '2026-07-01 00:00:00' AS TIMESTAMP_LTZ(3)))) AS s ON probe.pk = s.bk AND probe.pv = s.bv]]> + + + + + + + + + + + TABLE b, load_completed_condition => 'user_time', load_completed_time => CAST(TIMESTAMP '2026-07-01 00:00:00' AS TIMESTAMP_LTZ(3)))) AS s ON probe.pk = s.bk AND probe.pv > s.bv]]> + + + ($1, $4))], joinType=[inner]) + :- LogicalTableScan(table=[[default_catalog, default_database, probe]]) + +- LogicalTableFunctionScan(invocation=[SNAPSHOT(TABLE(#0), _UTF-16LE'user_time', CAST(2026-07-01 00:00:00):TIMESTAMP_WITH_LOCAL_TIME_ZONE(3) NOT NULL, DEFAULT(), DEFAULT())], rowType=[RecordType(VARCHAR(2147483647) bk, INTEGER bv, TIMESTAMP(3) bts)]) + +- LogicalProject(bk=[$0], bv=[$1], bts=[$2]) + +- LogicalTableScan(table=[[default_catalog, default_database, b]]) +]]> + + + (pv, bv))], select=[pk, pv, pts, bk, bv, bts], build=[right]) +:- Exchange(distribution=[hash[pk]]) +: +- TableSourceScan(table=[[default_catalog, default_database, probe]], fields=[pk, pv, pts]) ++- Exchange(distribution=[hash[bk]]) + +- TableSourceScan(table=[[default_catalog, default_database, b]], fields=[bk, bv, bts]) +]]> + + + + + TABLE b, load_completed_condition => 'user_time', load_completed_time => CAST(TIMESTAMP '2026-07-01 00:00:00' AS TIMESTAMP_LTZ(3)))) AS s ON probe.pk = s.bk]]> + + + + + + + + + + + TABLE b, load_completed_condition => 'user_time', load_completed_time => CAST(TIMESTAMP '2026-07-01 00:00:00' AS TIMESTAMP_LTZ(3)))) AS s ON probe.pk = s.bk]]> + + + + + + + + + From f2370b9b3f4366081b8533dbed9805a26590c1ce Mon Sep 17 00:00:00 2001 From: Fabian Hueske Date: Mon, 20 Jul 2026 18:49:24 +0200 Subject: [PATCH 05/32] [FLINK-40079][table] Reject PTF calls with sys-args if they are disabled (#28675) * [FLINK-40079][table] Reject PTF calls with sys-args if they are disabled * Add a check in SqlValidator to reject PTF calls with system-args (on_time, uid) in SQL querys if the function disabled them. * Add a check in ResolveCallByArgumentsRule to reject system-args in functions that disabled them from Table API. Generated-By: Claude Opus 4.8 (1M context) --- .../rules/ResolveCallByArgumentsRule.java | 3 + .../types/inference/SystemTypeInference.java | 28 +++++++++ .../calcite/FlinkCalciteSqlValidator.java | 30 ++++++++++ .../sql/MLPredictTableFunctionTest.java | 30 +++++++++- .../stream/sql/ProcessTableFunctionTest.java | 58 +++++++++++++++++++ .../stream/sql/SnapshotTableFunctionTest.java | 9 ++- .../stream/sql/MLPredictTableFunctionTest.xml | 2 +- 7 files changed, 152 insertions(+), 8 deletions(-) diff --git a/flink-table/flink-table-api-java/src/main/java/org/apache/flink/table/expressions/resolver/rules/ResolveCallByArgumentsRule.java b/flink-table/flink-table-api-java/src/main/java/org/apache/flink/table/expressions/resolver/rules/ResolveCallByArgumentsRule.java index 5e4a02cb9fb678..7364536099a7cc 100644 --- a/flink-table/flink-table-api-java/src/main/java/org/apache/flink/table/expressions/resolver/rules/ResolveCallByArgumentsRule.java +++ b/flink-table/flink-table-api-java/src/main/java/org/apache/flink/table/expressions/resolver/rules/ResolveCallByArgumentsRule.java @@ -299,6 +299,9 @@ private UnresolvedCallExpression executeAssignment( functionName)); } + SystemTypeInference.checkNoSystemArguments( + inference.disableSystemArguments(), namedArgs.keySet(), functionName); + fillInDefaultNamedArguments(declaredArgs, namedArgs); fillInPtfSpecificNamedArguments( functionName, definition, declaredArgs, namedArgs, actualArgs); diff --git a/flink-table/flink-table-common/src/main/java/org/apache/flink/table/types/inference/SystemTypeInference.java b/flink-table/flink-table-common/src/main/java/org/apache/flink/table/types/inference/SystemTypeInference.java index 971831d6ac442b..a1f9fbc5a9fdd9 100644 --- a/flink-table/flink-table-common/src/main/java/org/apache/flink/table/types/inference/SystemTypeInference.java +++ b/flink-table/flink-table-common/src/main/java/org/apache/flink/table/types/inference/SystemTypeInference.java @@ -46,6 +46,7 @@ import java.util.ArrayList; import java.util.Arrays; +import java.util.Collection; import java.util.HashMap; import java.util.HashSet; import java.util.List; @@ -126,6 +127,33 @@ public static boolean isInvalidUidForProcessTableFunction(String uid) { return !UID_FORMAT.test(uid); } + /** + * Rejects the implicit system arguments ({@code on_time}, {@code uid}) for a function that + * disables them via {@link TypeInference#disableSystemArguments()}. + * + *

The system arguments are not part of such a function's signature. Enforcing this from + * every translation path (SQL operand checking and Table API call resolution) rejects them + * consistently, regardless of whether the function is processed by the generic PTF rule or a + * dedicated optimizer rule (e.g. ML_PREDICT, LATERAL SNAPSHOT). + */ + public static void checkNoSystemArguments( + boolean sysArgsDisabled, + Collection suppliedArgumentNames, + String functionName) { + if (!sysArgsDisabled) { + return; + } + for (StaticArgument systemArg : PROCESS_TABLE_FUNCTION_SYSTEM_ARGS) { + if (suppliedArgumentNames.contains(systemArg.getName())) { + throw new ValidationException( + String.format( + "Invalid function call. The '%s' argument is not supported " + + "because function '%s' does not use system arguments.", + systemArg.getName(), functionName)); + } + } + } + // -------------------------------------------------------------------------------------------- private static void checkScalarArgsOnly(List defaultArgs) { diff --git a/flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/calcite/FlinkCalciteSqlValidator.java b/flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/calcite/FlinkCalciteSqlValidator.java index 651a86925c373f..0eb925352f0791 100644 --- a/flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/calcite/FlinkCalciteSqlValidator.java +++ b/flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/calcite/FlinkCalciteSqlValidator.java @@ -30,9 +30,11 @@ import org.apache.flink.table.functions.FunctionKind; import org.apache.flink.table.planner.catalog.CatalogSchemaModel; import org.apache.flink.table.planner.catalog.CatalogSchemaTable; +import org.apache.flink.table.planner.functions.bridging.BridgingSqlFunction; import org.apache.flink.table.planner.plan.FlinkCalciteCatalogReader; import org.apache.flink.table.planner.plan.utils.FlinkRexUtil; import org.apache.flink.table.planner.utils.ShortcutUtils; +import org.apache.flink.table.types.inference.SystemTypeInference; import org.apache.flink.table.types.logical.DecimalType; import org.apache.calcite.plan.RelOptCluster; @@ -89,6 +91,7 @@ import java.time.ZoneId; import java.util.ArrayList; import java.util.Collections; +import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Objects; @@ -383,6 +386,7 @@ protected void addToSelectList( final SqlBasicCall call = (SqlBasicCall) node; checkNoNamedAndPositionalMixedArgs(call); + checkDisabledSystemArgs(call); // Special case for MODEL if (node instanceof SqlExplicitModelCall) { @@ -456,6 +460,32 @@ private static void checkNoNamedAndPositionalMixedArgs(SqlBasicCall call) { } } + /** + * Rejects the implicit PTF system arguments (on_time, uid) for functions that disable them. + * + *

This must happen before Calcite permutes named arguments, because unknown named arguments + * are silently dropped during permutation and would otherwise be lost. The actual rule and + * error message live in {@link SystemTypeInference#checkNoSystemArguments} so that the Table + * API path (which resolves calls without this validator) enforces it identically. + */ + private static void checkDisabledSystemArgs(SqlBasicCall call) { + final SqlOperator operator = call.getOperator(); + if (!(operator instanceof BridgingSqlFunction) + || !((BridgingSqlFunction) operator).getTypeInference().disableSystemArguments()) { + return; + } + final Set suppliedArgNames = new HashSet<>(); + for (SqlNode operand : call.getOperandList()) { + if (operand != null && operand.getKind() == SqlKind.ARGUMENT_ASSIGNMENT) { + final SqlNode nameNode = ((SqlCall) operand).operand(1); + if (nameNode instanceof SqlIdentifier) { + suppliedArgNames.add(((SqlIdentifier) nameNode).getSimple()); + } + } + } + SystemTypeInference.checkNoSystemArguments(true, suppliedArgNames, operator.getName()); + } + @Override public SqlNode maybeCast(SqlNode node, RelDataType currentType, RelDataType desiredType) { return super.maybeCast(node, currentType, desiredType); diff --git a/flink-table/flink-table-planner/src/test/java/org/apache/flink/table/planner/plan/stream/sql/MLPredictTableFunctionTest.java b/flink-table/flink-table-planner/src/test/java/org/apache/flink/table/planner/plan/stream/sql/MLPredictTableFunctionTest.java index b409e02cf9db97..93a9c5b937d4e1 100644 --- a/flink-table/flink-table-planner/src/test/java/org/apache/flink/table/planner/plan/stream/sql/MLPredictTableFunctionTest.java +++ b/flink-table/flink-table-planner/src/test/java/org/apache/flink/table/planner/plan/stream/sql/MLPredictTableFunctionTest.java @@ -30,6 +30,7 @@ import java.util.Collections; +import static org.apache.flink.core.testutils.FlinkAssertions.anyCauseMatches; import static org.assertj.core.api.Assertions.assertThatThrownBy; /** Tests for model table value function in stream mode. */ @@ -76,8 +77,7 @@ public void setup() { @Test public void testInputTableIsInsertOnlyStream() { String sql = - "SELECT *\n" - + "FROM TABLE(ML_PREDICT(TABLE MyTable, MODEL MyModel, DESCRIPTOR(a, b)))"; + "SELECT *\n" + "FROM ML_PREDICT(TABLE MyTable, MODEL MyModel, DESCRIPTOR(a, b))"; util.verifyRelPlan( sql, JavaScalaConversionUtil.toScala( @@ -103,4 +103,30 @@ public void testInputTableIsCdcStream() { .hasMessageContaining( "StreamPhysicalMLPredictTableFunction doesn't support consuming update and delete changes which is produced by node TableSourceScan(table=[[default_catalog, default_database, CdcTable]], fields=[a, b])"); } + + @Test + void testOnTimeArgumentNotAllowed() { + // ML_PREDICT disables the implicit system arguments. Supplying `on_time` must be rejected + // at the SQL level even though ML_PREDICT is handled by a dedicated optimizer rule. + String sql = + "SELECT * FROM ML_PREDICT(INPUT => TABLE MyTable, MODEL => MODEL MyModel, " + + "ARGS => DESCRIPTOR(a, b), on_time => DESCRIPTOR(rowtime))"; + assertThatThrownBy(() -> util.verifyRelPlan(sql)) + .satisfies( + anyCauseMatches( + "The 'on_time' argument is not supported because function " + + "'ML_PREDICT' does not use system arguments.")); + } + + @Test + void testUidArgumentNotAllowed() { + String sql = + "SELECT * FROM ML_PREDICT(INPUT => TABLE MyTable, MODEL => MODEL MyModel, " + + "ARGS => DESCRIPTOR(a, b), uid => 'my-uid')"; + assertThatThrownBy(() -> util.verifyRelPlan(sql)) + .satisfies( + anyCauseMatches( + "The 'uid' argument is not supported because function " + + "'ML_PREDICT' does not use system arguments.")); + } } diff --git a/flink-table/flink-table-planner/src/test/java/org/apache/flink/table/planner/plan/stream/sql/ProcessTableFunctionTest.java b/flink-table/flink-table-planner/src/test/java/org/apache/flink/table/planner/plan/stream/sql/ProcessTableFunctionTest.java index d34b3f3bc8d992..7500bef9c98ba6 100644 --- a/flink-table/flink-table-planner/src/test/java/org/apache/flink/table/planner/plan/stream/sql/ProcessTableFunctionTest.java +++ b/flink-table/flink-table-planner/src/test/java/org/apache/flink/table/planner/plan/stream/sql/ProcessTableFunctionTest.java @@ -76,6 +76,7 @@ import static org.apache.flink.table.annotation.ArgumentTrait.SET_SEMANTIC_TABLE; import static org.apache.flink.table.annotation.ArgumentTrait.SUPPORT_UPDATES; import static org.apache.flink.table.api.Expressions.$; +import static org.apache.flink.table.api.Expressions.lit; import static org.apache.flink.table.api.Expressions.row; import static org.assertj.core.api.Assertions.assertThatThrownBy; @@ -283,6 +284,63 @@ void testNoSystemArgsAllowedForTablePtf() { "Disabling system arguments is not supported for user-defined PTF.")); } + @Test + void testOnTimeArgRejectedForDisabledPtf() { + util.addTemporarySystemFunction("f", NoSystemArgsTableFunction.class); + assertThatThrownBy( + () -> + util.verifyRelPlan( + "SELECT * FROM f(r => TABLE t_watermarked, i => 1, " + + "on_time => DESCRIPTOR(ts));")) + .satisfies( + anyCauseMatches( + "The 'on_time' argument is not supported because function " + + "'f' does not use system arguments.")); + } + + @Test + void testUidArgRejectedForDisabledPtf() { + util.addTemporarySystemFunction("f", NoSystemArgsScalarFunction.class); + assertThatThrownBy(() -> util.verifyRelPlan("SELECT * FROM f(i => 1, uid => 'my-uid');")) + .satisfies( + anyCauseMatches( + "The 'uid' argument is not supported because function " + + "'f' does not use system arguments.")); + } + + @Test + void testSystemArgRejectedByNameBeforeTypeCheck() { + // System arguments are rejected by name, rather than a type mismatch. + util.addTemporarySystemFunction("f", NoSystemArgsTableFunction.class); + assertThatThrownBy( + () -> + util.verifyRelPlan( + "SELECT * FROM f(r => TABLE t, i => 1, on_time => 1);")) + .satisfies( + anyCauseMatches( + "The 'on_time' argument is not supported because function " + + "'f' does not use system arguments.")); + } + + @Test + void testSystemArgRejectedForDisabledPtfViaTableApi() { + // The same enforcement applies to the Table API path, which resolves calls via + // ResolveCallByArgumentsRule instead of the SQL validator. + util.addTemporarySystemFunction("f", NoSystemArgsTableFunction.class); + assertThatThrownBy( + () -> + util.tableEnv() + .fromCall( + "f", + util.tableEnv().from("t").asArgument("r"), + lit(1).asArgument("i"), + lit("my-uid").asArgument("uid"))) + .satisfies( + anyCauseMatches( + "The 'uid' argument is not supported because function " + + "'f' does not use system arguments.")); + } + @Test void testUidPipelineSplitIntoTwoFunctions() { util.addTemporarySystemFunction("f", SetSemanticTableFunction.class); diff --git a/flink-table/flink-table-planner/src/test/java/org/apache/flink/table/planner/plan/stream/sql/SnapshotTableFunctionTest.java b/flink-table/flink-table-planner/src/test/java/org/apache/flink/table/planner/plan/stream/sql/SnapshotTableFunctionTest.java index 6d254b220b86f8..eef09609aebd90 100644 --- a/flink-table/flink-table-planner/src/test/java/org/apache/flink/table/planner/plan/stream/sql/SnapshotTableFunctionTest.java +++ b/flink-table/flink-table-planner/src/test/java/org/apache/flink/table/planner/plan/stream/sql/SnapshotTableFunctionTest.java @@ -24,7 +24,6 @@ import org.apache.flink.table.planner.utils.TableTestUtil; import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.Test; import static org.apache.flink.core.testutils.FlinkAssertions.anyCauseMatches; @@ -121,9 +120,6 @@ void testSnapshotWithViewArgument() { } @Test - @Disabled( - "SNAPSHOT sets disableSystemArguments(true), but that flag is currently not enforced. " - + "Re-enable once FLINK-40079 is fixed.") void testSystemArgumentsNotAllowed() { // SNAPSHOT disables the implicit system arguments (e.g. `on_time`). Passing one in a // LATERAL context must be rejected because the argument is not part of the function @@ -136,7 +132,10 @@ void testSystemArgumentsNotAllowed() { + "input => TABLE Rates, " + "on_time => DESCRIPTOR(rate_time))) AS r " + "WHERE o.currency = r.currency")) - .satisfies(anyCauseMatches("on_time")); + .satisfies( + anyCauseMatches( + "The 'on_time' argument is not supported because function " + + "'SNAPSHOT' does not use system arguments.")); } @Test diff --git a/flink-table/flink-table-planner/src/test/resources/org/apache/flink/table/planner/plan/stream/sql/MLPredictTableFunctionTest.xml b/flink-table/flink-table-planner/src/test/resources/org/apache/flink/table/planner/plan/stream/sql/MLPredictTableFunctionTest.xml index b1d51479529028..778451f067e6b4 100644 --- a/flink-table/flink-table-planner/src/test/resources/org/apache/flink/table/planner/plan/stream/sql/MLPredictTableFunctionTest.xml +++ b/flink-table/flink-table-planner/src/test/resources/org/apache/flink/table/planner/plan/stream/sql/MLPredictTableFunctionTest.xml @@ -869,7 +869,7 @@ Calc(select=[a, b, c, d, rowtime, PROCTIME_MATERIALIZE(proctime) AS proctime, c0 +FROM ML_PREDICT(TABLE MyTable, MODEL MyModel, DESCRIPTOR(a, b))]]> Date: Sat, 18 Jul 2026 15:06:43 +0200 Subject: [PATCH 06/32] [FLINK-40182][table] `ArrayToArrayCastRule` and `MapToMapAndMultisetToMultisetCastRule` should check for null values in runtime This closes #28777. --- .../casting/ArrayToArrayCastRule.java | 24 ++-- .../MapAndMultisetToStringCastRule.java | 72 +++++------ ...MapToMapAndMultisetToMultisetCastRule.java | 115 +++++++++++------- .../functions/casting/CastRulesTest.java | 8 +- 4 files changed, 124 insertions(+), 95 deletions(-) diff --git a/flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/functions/casting/ArrayToArrayCastRule.java b/flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/functions/casting/ArrayToArrayCastRule.java index df687fdb9196c2..d3877160cb7c50 100644 --- a/flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/functions/casting/ArrayToArrayCastRule.java +++ b/flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/functions/casting/ArrayToArrayCastRule.java @@ -55,7 +55,6 @@ private static boolean isValidArrayCasting( return CastRuleProvider.resolve(innerInputType, innerTargetType) != null; } - @SuppressWarnings("rawtypes") @Override protected String generateCodeBlockInternal( CodeGeneratorCastRule.Context context, @@ -67,16 +66,17 @@ protected String generateCodeBlockInternal( final LogicalType innerTargetType = ((ArrayType) targetLogicalType).getElementType(); final String innerTargetTypeTerm = arrayElementType(innerTargetType); - final String arraySize = methodCall(inputTerm, "size"); + final String arraySizeTerm = newName(context.getCodeGeneratorContext(), "arraySize"); final String objArrayTerm = newName(context.getCodeGeneratorContext(), "objArray"); return new CastRuleUtils.CodeWriter() + .declStmt(int.class, arraySizeTerm, methodCall(inputTerm, "size")) .declStmt( innerTargetTypeTerm + "[]", objArrayTerm, - newArray(innerTargetTypeTerm, arraySize)) + newArray(innerTargetTypeTerm, arraySizeTerm)) .forStmt( - arraySize, + arraySizeTerm, (index, loopWriter) -> { CastCodeBlock codeBlock = // Null check is done at the array access level @@ -97,10 +97,18 @@ protected String generateCodeBlockInternal( index, codeBlock.getReturnTerm())); } else { - loopWriter - .append(codeBlock) - .assignArrayStmt( - objArrayTerm, index, codeBlock.getReturnTerm()); + loopWriter.ifStmt( + "!" + methodCall(inputTerm, "isNullAt", index), + thenWriter -> + thenWriter + .append(codeBlock) + .assignArrayStmt( + objArrayTerm, + index, + codeBlock.getReturnTerm()), + elseWriter -> + elseWriter.throwStmt( + "new org.apache.flink.table.api.TableRuntimeException(\"Target is not nullable but a NULL was found.\")")); } }, context.getCodeGeneratorContext()) diff --git a/flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/functions/casting/MapAndMultisetToStringCastRule.java b/flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/functions/casting/MapAndMultisetToStringCastRule.java index a315fe2bbbbd3f..2e9819b4e9f75d 100644 --- a/flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/functions/casting/MapAndMultisetToStringCastRule.java +++ b/flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/functions/casting/MapAndMultisetToStringCastRule.java @@ -73,65 +73,63 @@ private static boolean isMapOrMultiset(LogicalType input, LogicalType target) { isNull$0 = _myInputIsNull; if (!isNull$0) { - org.apache.flink.table.data.ArrayData keys$2 = _myInput.keyArray(); - org.apache.flink.table.data.ArrayData values$3 = _myInput.valueArray(); - builder$1.setLength(0); - builder$1.append("{"); - for (int i$5 = 0; i$5 < _myInput.size(); i$5++) { - if (builder$1.length() > 12) { + int size$4 = _myInput.size(); + org.apache.flink.table.data.ArrayData keys$1 = _myInput.keyArray(); + org.apache.flink.table.data.ArrayData values$2 = _myInput.valueArray(); + builder$0.setLength(0); + builder$0.append("{"); + for (int i$5 = 0; i$5 < size$4; i$5++) { + if (builder$0.length() > 12) { break; } if (i$5 != 0) { - builder$1.append(", "); + builder$0.append(", "); } org.apache.flink.table.data.binary.BinaryStringData key$6 = org.apache.flink.table.data.binary.BinaryStringData.EMPTY_UTF8; - boolean keyIsNull$7 = keys$2.isNullAt(i$5); + boolean keyIsNull$7 = keys$1.isNullAt(i$5); int value$8 = -1; - boolean valueIsNull$9 = values$3.isNullAt(i$5); + boolean valueIsNull$9 = values$2.isNullAt(i$5); if (!keyIsNull$7) { - key$6 = ((org.apache.flink.table.data.binary.BinaryStringData) keys$2.getString(i$5)); - builder$1.append(key$6); + key$6 = ((org.apache.flink.table.data.binary.BinaryStringData) keys$1.getString(i$5)); + builder$0.append(key$6); } else { - builder$1.append("NULL"); + builder$0.append("NULL"); } - builder$1.append("="); + builder$0.append("="); if (!valueIsNull$9) { - value$8 = values$3.getInt(i$5); - isNull$2 = valueIsNull$9; + value$8 = values$2.getInt(i$5); + isNull$2 = false; if (!isNull$2) { - result$3 = org.apache.flink.table.data.binary.BinaryStringData.fromString("" + value$8); + result$3 = org.apache.flink.table.data.binary.BinaryStringData.fromString(org.apache.flink.table.utils.DateTimeUtils.formatIntervalYearMonth(value$8)); isNull$2 = result$3 == null; } else { result$3 = org.apache.flink.table.data.binary.BinaryStringData.EMPTY_UTF8; } - builder$1.append(result$3); - } else { - builder$1.append("NULL"); + builder$0.append(result$3); + } else { + builder$0.append("NULL"); + } } - } - builder$1.append("}"); - java.lang.String resultString$4; - resultString$4 = builder$1.toString(); - if (builder$1.length() > 12) { - resultString$4 = builder$1.substring(0, java.lang.Math.min(builder$1.length(), 12)); - } else { - if (resultString$.length() < 12) { + builder$0.append("}"); + java.lang.String resultString$3; + if (builder$0.length() > 12) { + resultString$3 = builder$0.substring(0, 12); + } else { + resultString$3 = builder$0.toString(); + if (builder$0.length() < 12) { int padLength$10; - padLength$10 = 12 - resultString$.length(); - java.lang.StringBuilder sbPadding$11; - sbPadding$11 = new java.lang.StringBuilder(); - for (int i$12 = 0; i$12 < padLength$10; i$12++) { - sbPadding$11.append(" "); - } - resultString$4 = resultString$4 + sbPadding$11.toString(); + padLength$10 = 12 - builder$0.length(); + resultString$3 = resultString$3 + " ".repeat(padLength$10); } } - result$1 = org.apache.flink.table.data.binary.BinaryStringData.fromString(resultString$4); + result$1 = org.apache.flink.table.data.binary.BinaryStringData.fromString(resultString$3); isNull$0 = result$1 == null; } else { result$1 = org.apache.flink.table.data.binary.BinaryStringData.EMPTY_UTF8; } + returnTerm = result$1 + isNullTerm = isNull$0 */ @Override protected String generateCodeBlockInternal( @@ -157,10 +155,12 @@ protected String generateCodeBlockInternal( final String valueArrayTerm = newName(codeGeneratorContext, "values"); final String resultStringTerm = newName(codeGeneratorContext, "resultString"); + final String sizeTerm = newName(codeGeneratorContext, "size"); final int length = LogicalTypeChecks.getLength(targetLogicalType); CastRuleUtils.CodeWriter writer = new CastRuleUtils.CodeWriter() + .declStmt(int.class, sizeTerm, methodCall(inputTerm, "size")) .declStmt(ArrayData.class, keyArrayTerm, methodCall(inputTerm, "keyArray")) .declStmt( ArrayData.class, @@ -169,7 +169,7 @@ protected String generateCodeBlockInternal( .stmt(methodCall(builderTerm, "setLength", 0)) .stmt(methodCall(builderTerm, "append", strLiteral("{"))) .forStmt( - methodCall(inputTerm, "size"), + sizeTerm, (indexTerm, loopBodyWriter) -> { String keyTerm = newName(codeGeneratorContext, "key"); String keyIsNullTerm = diff --git a/flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/functions/casting/MapToMapAndMultisetToMultisetCastRule.java b/flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/functions/casting/MapToMapAndMultisetToMultisetCastRule.java index e4a15d17634168..b0795760a5523e 100644 --- a/flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/functions/casting/MapToMapAndMultisetToMultisetCastRule.java +++ b/flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/functions/casting/MapToMapAndMultisetToMultisetCastRule.java @@ -18,6 +18,7 @@ package org.apache.flink.table.planner.functions.casting; +import org.apache.flink.table.data.ArrayData; import org.apache.flink.table.data.GenericMapData; import org.apache.flink.table.data.MapData; import org.apache.flink.table.planner.codegen.CodeGeneratorContext; @@ -85,23 +86,27 @@ private static boolean isValidMapToMapOrMultisetToMultisetCasting( float result$2; isNull$0 = _myInputIsNull; if (!isNull$0) { - java.util.Map map$838 = new java.util.HashMap(); - for (int i$841 = 0; i$841 < _myInput.size(); i$841++) { - java.lang.Float key$839 = null; - java.lang.Integer value$840 = null; - if (!_myInput.keyArray().isNullAt(i$841)) { - result$2 = ((float)(_myInput.keyArray().getInt(i$841))); - key$839 = result$2; + int size$2 = _myInput.size(); + org.apache.flink.table.data.ArrayData keyArray$0 = _myInput.keyArray(); + org.apache.flink.table.data.ArrayData valueArray$1 = _myInput.valueArray(); + java.util.Map map$3 = new java.util.HashMap(size$2); + for (int i$6 = 0; i$6 < size$2; i$6++) { + java.lang.Float key$4 = null; + java.lang.Integer value$5 = null; + if (!keyArray$0.isNullAt(i$6)) { + result$2 = ((float)(keyArray$0.getInt(i$6))); + key$4 = result$2; } - value$840 = _myInput.valueArray().getInt(i$841); - map$838.put(key$839, value$840); + if (!valueArray$1.isNullAt(i$6)) { + value$5 = valueArray$1.getInt(i$6); + } + map$3.put(key$4, value$5); } - result$1 = new org.apache.flink.table.data.GenericMapData(map$838); + result$1 = new org.apache.flink.table.data.GenericMapData(map$3); isNull$0 = result$1 == null; } else { result$1 = null; } - return result$1; */ @Override @@ -132,23 +137,25 @@ protected String generateCodeBlockInternal( final String innerTargetKeyTypeTerm = boxedTypeTermForType(innerTargetKeyType); final String innerTargetValueTypeTerm = boxedTypeTermForType(innerTargetValueType); - final String keyArrayTerm = methodCall(inputTerm, "keyArray"); - final String valueArrayTerm = methodCall(inputTerm, "valueArray"); - final String size = methodCall(inputTerm, "size"); + final String keyArray = newName(codeGeneratorContext, "keyArray"); + final String valueArray = newName(codeGeneratorContext, "valueArray"); + final String size = newName(codeGeneratorContext, "size"); final String map = newName(codeGeneratorContext, "map"); final String key = newName(codeGeneratorContext, "key"); final String value = newName(codeGeneratorContext, "value"); return new CastRuleUtils.CodeWriter() - .declStmt(className(Map.class), map, constructorCall(HashMap.class)) + .declStmt(int.class, size, methodCall(inputTerm, "size")) + .declStmt(ArrayData.class, keyArray, methodCall(inputTerm, "keyArray")) + .declStmt(ArrayData.class, valueArray, methodCall(inputTerm, "valueArray")) + .declStmt(className(Map.class), map, constructorCall(HashMap.class, size)) .forStmt( size, (index, codeWriter) -> { final CastCodeBlock keyCodeBlock = CastRuleProvider.generateAlwaysNonNullCodeBlock( context, - rowFieldReadAccess( - index, keyArrayTerm, innerInputKeyType), + rowFieldReadAccess(index, keyArray, innerInputKeyType), innerInputKeyType, innerTargetKeyType); assert keyCodeBlock != null; @@ -157,7 +164,7 @@ protected String generateCodeBlockInternal( CastRuleProvider.generateAlwaysNonNullCodeBlock( context, rowFieldReadAccess( - index, valueArrayTerm, innerInputValueType), + index, valueArray, innerInputValueType), innerInputValueType, innerTargetValueType); assert valueCodeBlock != null; @@ -165,39 +172,53 @@ protected String generateCodeBlockInternal( codeWriter .declStmt(innerTargetKeyTypeTerm, key, null) .declStmt(innerTargetValueTypeTerm, value, null); - if (innerTargetKeyType.isNullable()) { - codeWriter.ifStmt( - "!" + methodCall(keyArrayTerm, "isNullAt", index), - thenWriter -> - thenWriter - .append(keyCodeBlock) - .assignStmt( - key, keyCodeBlock.getReturnTerm())); - } else { - codeWriter - .append(keyCodeBlock) - .assignStmt(key, keyCodeBlock.getReturnTerm()); - } - - if (inputLogicalType.is(LogicalTypeRoot.MAP) - && innerTargetValueType.isNullable()) { - codeWriter.ifStmt( - "!" + methodCall(valueArrayTerm, "isNullAt", index), - thenWriter -> - thenWriter - .append(valueCodeBlock) - .assignStmt( - value, - valueCodeBlock.getReturnTerm())); - } else { - codeWriter - .append(valueCodeBlock) - .assignStmt(value, valueCodeBlock.getReturnTerm()); - } + iterateOverElements( + index, + codeWriter, + keyArray, + keyCodeBlock, + key, + !innerTargetKeyType.isNullable()); + + iterateOverElements( + index, + codeWriter, + valueArray, + valueCodeBlock, + value, + !inputLogicalType.is(LogicalTypeRoot.MAP) + || !innerTargetValueType.isNullable()); codeWriter.stmt(methodCall(map, "put", key, value)); }, codeGeneratorContext) .assignStmt(returnVariable, constructorCall(GenericMapData.class, map)) .toString(); } + + private static void iterateOverElements( + String index, + CastRuleUtils.CodeWriter codeWriter, + String keyArray, + CastCodeBlock keyCodeBlock, + String key, + boolean throwIfNull) { + if (throwIfNull) { + codeWriter.ifStmt( + "!" + methodCall(keyArray, "isNullAt", index), + thenWriter -> + thenWriter + .append(keyCodeBlock) + .assignStmt(key, keyCodeBlock.getReturnTerm()), + elseWriter -> + elseWriter.throwStmt( + "new org.apache.flink.table.api.TableRuntimeException(\"Target is not nullable but a NULL was found.\")")); + } else { + codeWriter.ifStmt( + "!" + methodCall(keyArray, "isNullAt", index), + thenWriter -> + thenWriter + .append(keyCodeBlock) + .assignStmt(key, keyCodeBlock.getReturnTerm())); + } + } } diff --git a/flink-table/flink-table-planner/src/test/java/org/apache/flink/table/planner/functions/casting/CastRulesTest.java b/flink-table/flink-table-planner/src/test/java/org/apache/flink/table/planner/functions/casting/CastRulesTest.java index 8459a804163ead..aca973fa3ca6c7 100644 --- a/flink-table/flink-table-planner/src/test/java/org/apache/flink/table/planner/functions/casting/CastRulesTest.java +++ b/flink-table/flink-table-planner/src/test/java/org/apache/flink/table/planner/functions/casting/CastRulesTest.java @@ -1370,7 +1370,7 @@ Stream testCases() { new GenericArrayData(new Integer[] {1, 2, null}), new GenericArrayData(new Integer[] {3}) }), - NullPointerException.class) + TableRuntimeException.class) .fromCase( ARRAY(ARRAY(INT().nullable())), new GenericArrayData( @@ -1430,12 +1430,12 @@ Stream testCases() { .fail( MAP(INT().nullable(), DOUBLE().nullable()), mapData(entry(null, 1d)), - NullPointerException.class), + TableRuntimeException.class), CastTestSpecBuilder.testCastTo(MAP(STRING().notNull(), STRING().notNull())) .fail( MAP(INT().nullable(), DOUBLE().nullable()), mapData(entry(123, null)), - NullPointerException.class), + TableRuntimeException.class), CastTestSpecBuilder.testCastTo(MULTISET(DOUBLE().notNull())) .fromCase( MULTISET(INT().nullable()), @@ -1455,7 +1455,7 @@ Stream testCases() { .fail( MULTISET(INT().nullable()), mapData(entry(null, 1)), - NullPointerException.class), + TableRuntimeException.class), CastTestSpecBuilder.testCastTo( ROW(BIGINT().notNull(), BIGINT(), STRING(), ARRAY(STRING()))) .fromCase( From 2de0eaf5eff8f73175514527df28aa8abb8ec73e Mon Sep 17 00:00:00 2001 From: Sergey Nuyanzin Date: Sat, 18 Jul 2026 19:05:15 +0200 Subject: [PATCH 07/32] [FLINK-40182][table] Optimize code generated by `CharVarCharTrimPadCastRule` --- .../casting/CharVarCharTrimPadCastRule.java | 61 +++++++----------- .../casting/RowToStringCastRule.java | 62 +++++++++---------- 2 files changed, 52 insertions(+), 71 deletions(-) diff --git a/flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/functions/casting/CharVarCharTrimPadCastRule.java b/flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/functions/casting/CharVarCharTrimPadCastRule.java index b3d0b46b933e2b..1c60f26eac3290 100644 --- a/flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/functions/casting/CharVarCharTrimPadCastRule.java +++ b/flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/functions/casting/CharVarCharTrimPadCastRule.java @@ -29,9 +29,9 @@ import org.apache.flink.table.types.logical.utils.LogicalTypeChecks; import static org.apache.flink.table.planner.codegen.CodeGenUtils.newName; -import static org.apache.flink.table.planner.functions.casting.CastRuleUtils.constructorCall; import static org.apache.flink.table.planner.functions.casting.CastRuleUtils.methodCall; import static org.apache.flink.table.planner.functions.casting.CastRuleUtils.staticCall; +import static org.apache.flink.table.planner.functions.casting.CastRuleUtils.strLiteral; import static org.apache.flink.table.types.logical.VarCharType.STRING_TYPE; /** @@ -179,10 +179,6 @@ static String stringExceedsLength(String strTerm, int targetLength) { return methodCall(strTerm, "length") + " > " + targetLength; } - static String stringShouldPad(String strTerm, int targetLength) { - return methodCall(strTerm, "length") + " < " + targetLength; - } - static boolean couldTrim(int targetLength) { return targetLength < VarCharType.MAX_LENGTH; } @@ -199,8 +195,7 @@ static CastRuleUtils.CodeWriter padAndTrimStringIfNeeded( String resultStringTerm, String builderTerm, CodeGeneratorContext codeGeneratorContext) { - writer.declStmt(String.class, resultStringTerm) - .assignStmt(resultStringTerm, methodCall(builderTerm, "toString")); + writer.declStmt(String.class, resultStringTerm); // Trim and Pad if needed if (!legacyBehaviour && (couldTrim(length) || couldPad(targetType, length))) { @@ -209,23 +204,21 @@ static CastRuleUtils.CodeWriter padAndTrimStringIfNeeded( thenWriter -> thenWriter.assignStmt( resultStringTerm, - methodCall( - builderTerm, - "substring", - 0, - staticCall( - Math.class, - "min", - methodCall(builderTerm, "length"), - length))), - elseWriter -> - padStringIfNeeded( - elseWriter, - targetType, - legacyBehaviour, - length, - resultStringTerm, - codeGeneratorContext)); + methodCall(builderTerm, "substring", 0, length)), + elseWriter -> { + elseWriter.assignStmt( + resultStringTerm, methodCall(builderTerm, "toString")); + padStringIfNeeded( + elseWriter, + targetType, + legacyBehaviour, + length, + resultStringTerm, + methodCall(builderTerm, "length"), + codeGeneratorContext); + }); + } else { + writer.assignStmt(resultStringTerm, methodCall(builderTerm, "toString")); } return writer; } @@ -236,34 +229,24 @@ static void padStringIfNeeded( boolean legacyBehaviour, int length, String returnTerm, + String currentLengthTerm, CodeGeneratorContext codeGeneratorContext) { // Pad if needed if (!legacyBehaviour && couldPad(targetType, length)) { final String padLength = newName(codeGeneratorContext, "padLength"); - final String sbPadding = newName(codeGeneratorContext, "sbPadding"); writer.ifStmt( - stringShouldPad(returnTerm, length), + currentLengthTerm + " < " + length, thenWriter -> thenWriter .declStmt(int.class, padLength) - .assignStmt( - padLength, - length + " - " + methodCall(returnTerm, "length")) - .declStmt(StringBuilder.class, sbPadding) - .assignStmt(sbPadding, constructorCall(StringBuilder.class)) - .forStmt( - padLength, - (idx, loopWriter) -> - loopWriter.stmt( - methodCall( - sbPadding, "append", "\" \"")), - codeGeneratorContext) + .assignStmt(padLength, length + " - " + currentLengthTerm) .assignStmt( returnTerm, returnTerm + " + " - + methodCall(sbPadding, "toString"))); + + methodCall( + strLiteral(" "), "repeat", padLength))); } } } diff --git a/flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/functions/casting/RowToStringCastRule.java b/flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/functions/casting/RowToStringCastRule.java index 358fdfea7f2feb..da50c0e550cf15 100644 --- a/flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/functions/casting/RowToStringCastRule.java +++ b/flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/functions/casting/RowToStringCastRule.java @@ -57,55 +57,53 @@ private static boolean matches(LogicalType input, LogicalType target) { isNull$0 = _myInputIsNull; if (!isNull$0) { - builder$1.setLength(0); - builder$1.append("("); - int f0Value$3 = -1; - boolean f0IsNull$4 = _myInput.isNullAt(0); - if (!f0IsNull$4) { - f0Value$3 = _myInput.getInt(0); - isNull$2 = f0IsNull$4; + builder$0.setLength(0); + builder$0.append("("); + int f0Value$2 = -1; + boolean f0IsNull$3 = _myInput.isNullAt(0); + if (!f0IsNull$3) { + f0Value$2 = _myInput.getInt(0); + isNull$2 = false; if (!isNull$2) { - result$3 = org.apache.flink.table.data.binary.BinaryStringData.fromString("" + f0Value$3); + result$3 = org.apache.flink.table.data.binary.BinaryStringData.fromString("" + f0Value$2); isNull$2 = result$3 == null; } else { result$3 = org.apache.flink.table.data.binary.BinaryStringData.EMPTY_UTF8; } - builder$1.append(result$3); + builder$0.append(result$3); } else { - builder$1.append("NULL"); + builder$0.append("NULL"); } - builder$1.append(", "); - org.apache.flink.table.data.binary.BinaryStringData f1Value$5 = org.apache.flink.table.data.binary.BinaryStringData.EMPTY_UTF8; - boolean f1IsNull$6 = _myInput.isNullAt(1); - if (!f1IsNull$6) { - f1Value$5 = ((org.apache.flink.table.data.binary.BinaryStringData) _myInput.getString(1)); - builder$1.append(f1Value$5); + builder$0.append(", "); + org.apache.flink.table.data.binary.BinaryStringData f1Value$4 = org.apache.flink.table.data.binary.BinaryStringData.EMPTY_UTF8; + boolean f1IsNull$5 = _myInput.isNullAt(1); + if (!f1IsNull$5) { + f1Value$4 = ((org.apache.flink.table.data.binary.BinaryStringData) _myInput.getString(1)); + builder$0.append(f1Value$4); } else { - builder$1.append("NULL"); + builder$0.append("NULL"); } - builder$1.append(")"); - java.lang.String resultString$2; - resultString$2 = builder$1.toString(); - if (builder$1.length() > 12) { - resultString$2 = builder$1.substring(0, java.lang.Math.min(builder$1.length(), 12)); + builder$0.append(")"); + java.lang.String resultString$1; + if (builder$0.length() > 12) { + resultString$1 = builder$0.substring(0, 12); } else { - if (resultString$2.length() < 12) { - int padLength$7; - padLength$7 = 12 - resultString$2.length(); - java.lang.StringBuilder sbPadding$8; - sbPadding$8 = new java.lang.StringBuilder(); - for (int i$9 = 0; i$9 < padLength$7; i$9++) { - sbPadding$8.append(" "); - } - resultString$2 = resultString$2 + sbPadding$8.toString(); + resultString$1 = builder$0.toString(); + if (builder$0.length() < 12) { + int padLength$6; + padLength$6 = 12 - builder$0.length(); + resultString$1 = resultString$1 + " ".repeat(padLength$6); } } - result$1 = org.apache.flink.table.data.binary.BinaryStringData.fromString(resultString$2); + result$1 = org.apache.flink.table.data.binary.BinaryStringData.fromString(resultString$1); isNull$0 = result$1 == null; } else { result$1 = org.apache.flink.table.data.binary.BinaryStringData.EMPTY_UTF8; } + returnTerm = result$1 + isNullTerm = isNull$0 + */ @Override protected String generateCodeBlockInternal( From d1f08ab3343c741d7668c76a709853d55e589abe Mon Sep 17 00:00:00 2001 From: Sergey Nuyanzin Date: Sat, 18 Jul 2026 23:02:53 +0200 Subject: [PATCH 08/32] [FLINK-40182][table] Optimize code generated by `RawToStringCastRule` --- .../casting/RawToStringCastRule.java | 36 +++++++++++-------- 1 file changed, 22 insertions(+), 14 deletions(-) diff --git a/flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/functions/casting/RawToStringCastRule.java b/flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/functions/casting/RawToStringCastRule.java index c80ddbb590100d..58e412fb381916 100644 --- a/flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/functions/casting/RawToStringCastRule.java +++ b/flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/functions/casting/RawToStringCastRule.java @@ -47,20 +47,16 @@ private RawToStringCastRule() { if (!isNull$0) { java.lang.Object deserializedObj$0 = _myInput.toObject(typeSerializer$2); if (deserializedObj$0 != null) { + java.lang.String deserializedObjString$2 = deserializedObj$0.toString(); java.lang.String resultString$1; - resultString$1 = deserializedObj$0.toString().toString(); - if (deserializedObj$0.toString().length() > 12) { - resultString$1 = deserializedObj$0.toString().substring(0, java.lang.Math.min(deserializedObj$0.toString().length(), 12)); + if (deserializedObjString$2.length() > 12) { + resultString$1 = deserializedObjString$2.substring(0, 12); } else { - if (resultString$1.length() < 12) { - int padLength$2; - padLength$2 = 12 - resultString$1.length(); - java.lang.StringBuilder sbPadding$3; - sbPadding$3 = new java.lang.StringBuilder(); - for (int i$4 = 0; i$4 < padLength$2; i$4++) { - sbPadding$3.append(" "); - } - resultString$1 = resultString$1 + sbPadding$3.toString(); + resultString$1 = deserializedObjString$2.toString(); + if (deserializedObjString$2.length() < 12) { + int padLength$3; + padLength$3 = 12 - deserializedObjString$2.length(); + resultString$1 = resultString$1 + " ".repeat(padLength$3); } } result$1 = org.apache.flink.table.data.binary.BinaryStringData.fromString(resultString$1); @@ -72,6 +68,9 @@ private RawToStringCastRule() { result$1 = org.apache.flink.table.data.binary.BinaryStringData.EMPTY_UTF8; } + returnTerm = result$1 + isNullTerm = isNull$0 + */ @Override protected String generateCodeBlockInternal( @@ -86,6 +85,8 @@ protected String generateCodeBlockInternal( CodeGenUtils.newName(codeGeneratorContext, "deserializedObj"); final String resultStringTerm = CodeGenUtils.newName(codeGeneratorContext, "resultString"); + final String deserializedObjStringTerm = + CodeGenUtils.newName(codeGeneratorContext, "deserializedObjString"); final int length = LogicalTypeChecks.getLength(targetLogicalType); return new CastRuleUtils.CodeWriter() @@ -97,12 +98,19 @@ protected String generateCodeBlockInternal( deserializedObjTerm + " != null", thenWriter -> CharVarCharTrimPadCastRule.padAndTrimStringIfNeeded( - thenWriter, + // toString() on a deserialized RAW value is + // user-defined and can be arbitrarily expensive, + // so it's computed once here. + thenWriter.declStmt( + String.class, + deserializedObjStringTerm, + methodCall( + deserializedObjTerm, "toString")), targetLogicalType, context.legacyBehaviour(), length, resultStringTerm, - methodCall(deserializedObjTerm, "toString"), + deserializedObjStringTerm, context.getCodeGeneratorContext()) .assignStmt( returnVariable, From 39c823ad53f348ec045989c47e14a73c010cd9b9 Mon Sep 17 00:00:00 2001 From: Sergey Nuyanzin Date: Sun, 19 Jul 2026 09:52:25 +0200 Subject: [PATCH 09/32] [FLINK-40182][table] Optimize code generated by `ArrayToStringCastRule` --- .../casting/ArrayToStringCastRule.java | 61 ++++++++++--------- 1 file changed, 31 insertions(+), 30 deletions(-) diff --git a/flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/functions/casting/ArrayToStringCastRule.java b/flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/functions/casting/ArrayToStringCastRule.java index 378060a4d44519..4c32ce9b953dd7 100644 --- a/flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/functions/casting/ArrayToStringCastRule.java +++ b/flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/functions/casting/ArrayToStringCastRule.java @@ -60,54 +60,53 @@ private ArrayToStringCastRule() { isNull$0 = _myInputIsNull; if (!isNull$0) { - builder$1.setLength(0); - builder$1.append("["); - for (int i$3 = 0; i$3 < _myInput.size(); i$3++) { - if (builder$1.length() > 10) { + int size$2 = _myInput.size(); + builder$0.setLength(0); + builder$0.append("["); + for (int i$3 = 0; i$3 < size$2; i$3++) { + if (builder$0.length() > 10) { break; } if (i$3 != 0) { - builder$1.append(", "); + builder$0.append(", "); } int element$4 = -1; boolean elementIsNull$5 = _myInput.isNullAt(i$3); if (!elementIsNull$5) { - element$4 = _myInput.getInt(i$3); - isNull$2 = false; - if (!isNull$2) { - result$3 = org.apache.flink.table.data.binary.BinaryStringData.fromString("" + element$4); - isNull$2 = result$3 == null; - } else { - result$3 = org.apache.flink.table.data.binary.BinaryStringData.EMPTY_UTF8; - } - builder$1.append(result$3); + element$4 = _myInput.getInt(i$3); + isNull$2 = false; + if (!isNull$2) { + result$3 = org.apache.flink.table.data.binary.BinaryStringData.fromString("" + element$4); + isNull$2 = result$3 == null; } else { - builder$1.append("NULL"); + result$3 = org.apache.flink.table.data.binary.BinaryStringData.EMPTY_UTF8; + } + builder$0.append(result$3); + } else { + builder$0.append("NULL"); } } - builder$1.append("]"); - java.lang.String resultString$2; - resultString$2 = builder$1.toString(); - if (builder$1.length() > 10) { - resultString$2 = builder$1.substring(0, java.lang.Math.min(builder$1.length(), 10)); + builder$0.append("]"); + java.lang.String resultString$1; + if (builder$0.length() > 10) { + resultString$1 = builder$0.substring(0, 10); } else { - if (resultString$2.length() < 10) { + resultString$1 = builder$0.toString(); + if (builder$0.length() < 10) { int padLength$6; - padLength$6 = 10 - resultString$2.length(); - java.lang.StringBuilder sbPadding$7; - sbPadding$7 = new java.lang.StringBuilder(); - for (int i$8 = 0; i$8 < padLength$6; i$8++) { - sbPadding$7.append(" "); - } - resultString$2 = resultString$2 + sbPadding$7.toString(); + padLength$6 = 10 - builder$0.length(); + resultString$1 = resultString$1 + " ".repeat(padLength$6); } } - result$1 = org.apache.flink.table.data.binary.BinaryStringData.fromString(resultString$2); + result$1 = org.apache.flink.table.data.binary.BinaryStringData.fromString(resultString$1); isNull$0 = result$1 == null; } else { result$1 = org.apache.flink.table.data.binary.BinaryStringData.EMPTY_UTF8; } + returnTerm = result$1 + isNullTerm = isNull$0 + */ @Override protected String generateCodeBlockInternal( @@ -124,14 +123,16 @@ protected String generateCodeBlockInternal( className(StringBuilder.class), builderTerm, constructorCall(StringBuilder.class)); final String resultStringTerm = newName(codeGeneratorContext, "resultString"); + final String sizeTerm = newName(codeGeneratorContext, "size"); final int length = LogicalTypeChecks.getLength(targetLogicalType); CastRuleUtils.CodeWriter writer = new CastRuleUtils.CodeWriter() + .declStmt(int.class, sizeTerm, methodCall(inputTerm, "size")) .stmt(methodCall(builderTerm, "setLength", 0)) .stmt(methodCall(builderTerm, "append", strLiteral("["))) .forStmt( - methodCall(inputTerm, "size"), + sizeTerm, (indexTerm, loopBodyWriter) -> { String elementTerm = newName(codeGeneratorContext, "element"); String elementIsNullTerm = From a0605af9be86bec09dbf7d75969644eb8d268792 Mon Sep 17 00:00:00 2001 From: Sergey Nuyanzin Date: Mon, 20 Jul 2026 22:44:07 +0200 Subject: [PATCH 10/32] [FLINK-40181][ci] Make spotless checking changes since last green build in ci --- .github/actions/last_workflow_run/action.yml | 65 +++++++++++++++++++ .github/workflows/nightly-trigger.yml | 20 +++--- .../workflows/template.pre-compile-checks.yml | 29 +++++++-- pom.xml | 21 ++++++ 4 files changed, 118 insertions(+), 17 deletions(-) create mode 100644 .github/actions/last_workflow_run/action.yml diff --git a/.github/actions/last_workflow_run/action.yml b/.github/actions/last_workflow_run/action.yml new file mode 100644 index 00000000000000..c59bebbe2ed5b6 --- /dev/null +++ b/.github/actions/last_workflow_run/action.yml @@ -0,0 +1,65 @@ +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# +name: "Finds the most recent run of a workflow on a branch" +description: "Queries the GitHub Actions API for the most recent run of a given workflow on a given branch, optionally filtered by status, and exposes its head SHA and conclusion." +inputs: + workflow_id: + description: "Workflow file name, e.g. ci.yml" + required: true + branch: + description: "Branch name to query" + required: true + status: + description: "Optional run status filter, e.g. success. Leave empty to match any status." + required: false + default: "" +outputs: + sha: + description: "Head SHA of the matched run, or empty string if none found" + value: ${{ steps.resolve.outputs.sha }} + conclusion: + description: "Conclusion of the matched run, or empty string if none found" + value: ${{ steps.resolve.outputs.conclusion }} +runs: + using: "composite" + steps: + - name: "Query workflow runs" + id: resolve + uses: actions/github-script@v7 + with: + script: | + const workflowId = "${{ inputs.workflow_id }}"; + const branch = "${{ inputs.branch }}"; + const status = "${{ inputs.status }}"; + + const params = { + owner: context.repo.owner, + repo: context.repo.repo, + workflow_id: workflowId, + branch: branch, + per_page: 1 + }; + if (status) { + params.status = status; + } + + const { data } = await github.rest.actions.listWorkflowRuns(params); + const run = data.workflow_runs[0]; + + core.setOutput('sha', run?.head_sha ?? ''); + core.setOutput('conclusion', run?.conclusion ?? ''); diff --git a/.github/workflows/nightly-trigger.yml b/.github/workflows/nightly-trigger.yml index 3605cf8bb67bd8..914d67ee01e22d 100644 --- a/.github/workflows/nightly-trigger.yml +++ b/.github/workflows/nightly-trigger.yml @@ -39,6 +39,13 @@ jobs: - release-1.20 runs-on: ubuntu-latest steps: + - name: "Resolve last nightly run" + id: last-nightly + uses: "./.github/actions/last_workflow_run" + with: + workflow_id: "nightly.yml" + branch: ${{ matrix.branch }} + - name: Trigger Workflow uses: actions/github-script@v7 with: @@ -55,17 +62,8 @@ jobs: // Compare SHA from last nightly against current // if it is same, then no need to run nightly for the same SHA again. - const { data: runsData } = await github.rest.actions.listWorkflowRuns({ - owner: context.repo.owner, - repo: context.repo.repo, - workflow_id: 'nightly.yml', - branch: branch, - per_page: 1 - }); - - const lastRun = runsData.workflow_runs[0]; - const lastBuiltSha = lastRun?.head_sha; - const lastConclusion = lastRun?.conclusion; + const lastBuiltSha = '${{ steps.last-nightly.outputs.sha }}' || undefined; + const lastConclusion = '${{ steps.last-nightly.outputs.conclusion }}' || undefined; // Skip the scheduled run only if there are no new commits AND the // previous nightly was green. If the last run failed/was cancelled, diff --git a/.github/workflows/template.pre-compile-checks.yml b/.github/workflows/template.pre-compile-checks.yml index faf37dad246f16..a01802d77bec9a 100644 --- a/.github/workflows/template.pre-compile-checks.yml +++ b/.github/workflows/template.pre-compile-checks.yml @@ -59,16 +59,33 @@ jobs: with: jdk_version: ${{ inputs.jdk_version }} - - name: "Checkstyle" - uses: "./.github/actions/run_mvn" + - name: "Resolve last green commit for spotless ratchet" + id: last-green + uses: "./.github/actions/last_workflow_run" with: - maven-parameters: "checkstyle:check -T1C" + workflow_id: "ci.yml" + branch: ${{ github.ref_name }} + status: "success" - - name: "Spotless" - if: (success() || failure()) + - name: "Fetch last green commit" + if: steps.last-green.outputs.sha != '' + shell: bash + run: | + sha="${{ steps.last-green.outputs.sha }}" + if git -c safe.directory='*' fetch --depth=1 origin "${sha}" \ + && git -c safe.directory='*' cat-file -e "${sha}^{commit}"; then + echo "RATCHET_SHA=${sha}" >> "${GITHUB_ENV}" + echo "Ratcheting spotless from ${sha}" + else + echo "Could not fetch ${sha}; running full spotless check." + fi + + - name: "Checkstyle & Spotless" uses: "./.github/actions/run_mvn" with: - maven-parameters: "spotless:check -T1C" + maven-parameters: >- + checkstyle:check spotless:check -T1C -fae + ${{ env.RATCHET_SHA && format('-Dspotless.ratchetFrom={0}', env.RATCHET_SHA) || '' }} - name: "License Headers" if: (success() || failure()) diff --git a/pom.xml b/pom.xml index 0a38cfe7c056af..670753e010bcb6 100644 --- a/pom.xml +++ b/pom.xml @@ -973,6 +973,27 @@ under the License. false + + spotless-ratchet + + + spotless.ratchetFrom + + + + + + + com.diffplug.spotless + spotless-maven-plugin + + ${spotless.ratchetFrom} + + + + + + scala-2.12 From 36d42ebc33e64794bee45707a83eba9ee2a80e2a Mon Sep 17 00:00:00 2001 From: Ramin Gharib Date: Tue, 21 Jul 2026 13:24:23 +0200 Subject: [PATCH 11/32] [hotfix][ci] Add checkout step to fix Nightly trigger CI --- .github/workflows/nightly-trigger.yml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/.github/workflows/nightly-trigger.yml b/.github/workflows/nightly-trigger.yml index 914d67ee01e22d..326195989651e7 100644 --- a/.github/workflows/nightly-trigger.yml +++ b/.github/workflows/nightly-trigger.yml @@ -39,6 +39,12 @@ jobs: - release-1.20 runs-on: ubuntu-latest steps: + - name: Checkout + uses: actions/checkout@v5 + with: + sparse-checkout: | + .github/actions/last_workflow_run + - name: "Resolve last nightly run" id: last-nightly uses: "./.github/actions/last_workflow_run" From 67a3291aeac7d3075618294e12cd3bfe3b732261 Mon Sep 17 00:00:00 2001 From: Shekhar Prasad Rajak <5774448+Shekharrajak@users.noreply.github.com> Date: Tue, 21 Jul 2026 17:01:28 +0530 Subject: [PATCH 12/32] [FLINK-38262][table] Add `CreateConnectionOperation` and converter --- .../ddl/CreateConnectionOperation.java | 104 +++++++++++++++ flink-table/flink-table-planner/pom.xml | 6 + .../SqlCreateConnectionConverter.java | 52 ++++++++ .../converters/SqlNodeConverters.java | 5 + .../SqlConnectionOperationConverterTest.java | 124 ++++++++++++++++++ .../batch/sql/CreateConnectionITCase.java | 87 ++++++++++++ 6 files changed, 378 insertions(+) create mode 100644 flink-table/flink-table-api-java/src/main/java/org/apache/flink/table/operations/ddl/CreateConnectionOperation.java create mode 100644 flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/operations/converters/SqlCreateConnectionConverter.java create mode 100644 flink-table/flink-table-planner/src/test/java/org/apache/flink/table/planner/operations/SqlConnectionOperationConverterTest.java create mode 100644 flink-table/flink-table-planner/src/test/java/org/apache/flink/table/planner/runtime/batch/sql/CreateConnectionITCase.java diff --git a/flink-table/flink-table-api-java/src/main/java/org/apache/flink/table/operations/ddl/CreateConnectionOperation.java b/flink-table/flink-table-api-java/src/main/java/org/apache/flink/table/operations/ddl/CreateConnectionOperation.java new file mode 100644 index 00000000000000..b853150b955937 --- /dev/null +++ b/flink-table/flink-table-api-java/src/main/java/org/apache/flink/table/operations/ddl/CreateConnectionOperation.java @@ -0,0 +1,104 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.flink.table.operations.ddl; + +import org.apache.flink.annotation.Internal; +import org.apache.flink.table.api.internal.TableResultImpl; +import org.apache.flink.table.api.internal.TableResultInternal; +import org.apache.flink.table.catalog.ObjectIdentifier; +import org.apache.flink.table.catalog.SensitiveConnection; +import org.apache.flink.table.operations.Operation; +import org.apache.flink.table.operations.OperationUtils; + +import java.util.LinkedHashMap; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +/** Operation to describe a CREATE CONNECTION statement. */ +@Internal +public class CreateConnectionOperation implements CreateOperation { + + private static final String MASKED_VALUE = "****"; + + private final ObjectIdentifier connectionIdentifier; + private final SensitiveConnection sensitiveConnection; + private final boolean ignoreIfExists; + private final boolean isTemporary; + + public CreateConnectionOperation( + ObjectIdentifier connectionIdentifier, + SensitiveConnection sensitiveConnection, + boolean ignoreIfExists, + boolean isTemporary) { + this.connectionIdentifier = connectionIdentifier; + this.sensitiveConnection = sensitiveConnection; + this.ignoreIfExists = ignoreIfExists; + this.isTemporary = isTemporary; + } + + public ObjectIdentifier getConnectionIdentifier() { + return connectionIdentifier; + } + + public SensitiveConnection getSensitiveConnection() { + return sensitiveConnection; + } + + public boolean isIgnoreIfExists() { + return ignoreIfExists; + } + + public boolean isTemporary() { + return isTemporary; + } + + @Override + public String asSummaryString() { + Map maskedOptions = + sensitiveConnection.getOptions().entrySet().stream() + .collect( + Collectors.toMap( + Map.Entry::getKey, + e -> MASKED_VALUE, + (a, b) -> a, + LinkedHashMap::new)); + Map params = new LinkedHashMap<>(); + params.put("connectionOptions", maskedOptions); + params.put("identifier", connectionIdentifier); + params.put("ignoreIfExists", ignoreIfExists); + params.put("isTemporary", isTemporary); + + return OperationUtils.formatWithChildren( + "CREATE CONNECTION", params, List.of(), Operation::asSummaryString); + } + + @Override + public TableResultInternal execute(Context ctx) { + if (isTemporary) { + ctx.getCatalogManager() + .createTemporaryConnection( + sensitiveConnection, connectionIdentifier, ignoreIfExists); + } else { + ctx.getCatalogManager() + .createConnection(sensitiveConnection, connectionIdentifier, ignoreIfExists); + } + return TableResultImpl.TABLE_RESULT_OK; + } +} diff --git a/flink-table/flink-table-planner/pom.xml b/flink-table/flink-table-planner/pom.xml index b8f76f7f969929..450dc204ec69ed 100644 --- a/flink-table/flink-table-planner/pom.xml +++ b/flink-table/flink-table-planner/pom.xml @@ -158,6 +158,12 @@ under the License. flink-table-runtime ${project.version} + + org.apache.flink + flink-table-type-utils + ${project.version} + ${flink.markBundledAsOptional} + diff --git a/flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/operations/converters/SqlCreateConnectionConverter.java b/flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/operations/converters/SqlCreateConnectionConverter.java new file mode 100644 index 00000000000000..f1bb4efa9ea2ae --- /dev/null +++ b/flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/operations/converters/SqlCreateConnectionConverter.java @@ -0,0 +1,52 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.flink.table.planner.operations.converters; + +import org.apache.flink.sql.parser.ddl.connection.SqlCreateConnection; +import org.apache.flink.table.catalog.ObjectIdentifier; +import org.apache.flink.table.catalog.SensitiveConnection; +import org.apache.flink.table.catalog.UnresolvedIdentifier; +import org.apache.flink.table.operations.Operation; +import org.apache.flink.table.operations.ddl.CreateConnectionOperation; + +import java.util.Map; + +/** A converter for {@link SqlCreateConnection}. */ +public class SqlCreateConnectionConverter implements SqlNodeConverter { + + @Override + public Operation convertSqlNode( + SqlCreateConnection sqlCreateConnection, ConvertContext context) { + UnresolvedIdentifier unresolvedIdentifier = + UnresolvedIdentifier.of(sqlCreateConnection.getFullName()); + ObjectIdentifier identifier = + context.getCatalogManager().qualifyIdentifier(unresolvedIdentifier); + + Map options = sqlCreateConnection.getProperties(); + String comment = sqlCreateConnection.getComment(); + + SensitiveConnection sensitiveConnection = SensitiveConnection.of(options, comment); + + return new CreateConnectionOperation( + identifier, + sensitiveConnection, + sqlCreateConnection.isIfNotExists(), + sqlCreateConnection.isTemporary()); + } +} diff --git a/flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/operations/converters/SqlNodeConverters.java b/flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/operations/converters/SqlNodeConverters.java index 7e03c2036641cd..ce8f41df992295 100644 --- a/flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/operations/converters/SqlNodeConverters.java +++ b/flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/operations/converters/SqlNodeConverters.java @@ -90,6 +90,7 @@ public class SqlNodeConverters { register(new SqlShowProcedureConverter()); registerCatalogConverters(); + registerConnectionConverters(); registerMaterializedTableConverters(); registerModelConverters(); registerTableConverters(); @@ -138,6 +139,10 @@ private static void registerCatalogConverters() { register(new SqlShowCreateCatalogConverter()); } + private static void registerConnectionConverters() { + register(new SqlCreateConnectionConverter()); + } + private static void registerMaterializedTableConverters() { register(new SqlAlterMaterializedTableAddDistributionConverter()); register(new SqlAlterMaterializedTableAddSchemaConverter()); diff --git a/flink-table/flink-table-planner/src/test/java/org/apache/flink/table/planner/operations/SqlConnectionOperationConverterTest.java b/flink-table/flink-table-planner/src/test/java/org/apache/flink/table/planner/operations/SqlConnectionOperationConverterTest.java new file mode 100644 index 00000000000000..a410c95ec0b659 --- /dev/null +++ b/flink-table/flink-table-planner/src/test/java/org/apache/flink/table/planner/operations/SqlConnectionOperationConverterTest.java @@ -0,0 +1,124 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.flink.table.planner.operations; + +import org.apache.flink.sql.parser.error.SqlValidateException; +import org.apache.flink.table.api.SqlParserException; +import org.apache.flink.table.catalog.ObjectIdentifier; +import org.apache.flink.table.catalog.SensitiveConnection; +import org.apache.flink.table.operations.Operation; +import org.apache.flink.table.operations.ddl.CreateConnectionOperation; + +import org.junit.jupiter.api.Test; + +import java.util.Map; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.assertj.core.api.Assertions.assertThatThrownBy; + +/** Test for converting connection statements to operations. */ +class SqlConnectionOperationConverterTest extends SqlNodeToOperationConversionTestBase { + + @Test + void testCreateConnection() { + Operation operation = parse("CREATE CONNECTION my_conn WITH ('k' = 'v')"); + assertThat(operation).isInstanceOf(CreateConnectionOperation.class); + CreateConnectionOperation op = (CreateConnectionOperation) operation; + + assertThat(op.getConnectionIdentifier()) + .isEqualTo(ObjectIdentifier.of("builtin", "default", "my_conn")); + assertThat(op.getSensitiveConnection().getOptions()).isEqualTo(Map.of("k", "v")); + assertThat(op.getSensitiveConnection().getComment()).isNull(); + assertThat(op.isIgnoreIfExists()).isFalse(); + assertThat(op.isTemporary()).isFalse(); + } + + @Test + void testCreateConnectionIfNotExists() { + Operation operation = parse("CREATE CONNECTION IF NOT EXISTS my_conn WITH ('k' = 'v')"); + CreateConnectionOperation op = (CreateConnectionOperation) operation; + assertThat(op.isIgnoreIfExists()).isTrue(); + assertThat(op.isTemporary()).isFalse(); + } + + @Test + void testCreateTemporaryConnection() { + Operation operation = parse("CREATE TEMPORARY CONNECTION my_conn WITH ('k' = 'v')"); + CreateConnectionOperation op = (CreateConnectionOperation) operation; + assertThat(op.isTemporary()).isTrue(); + assertThat(op.isIgnoreIfExists()).isFalse(); + } + + @Test + void testCreateTemporarySystemConnection() { + Operation operation = parse("CREATE TEMPORARY SYSTEM CONNECTION my_conn WITH ('k' = 'v')"); + CreateConnectionOperation op = (CreateConnectionOperation) operation; + assertThat(op.isTemporary()).isTrue(); + } + + @Test + void testCreateConnectionWithComment() { + Operation operation = + parse("CREATE CONNECTION my_conn COMMENT 'hi there' WITH ('k' = 'v')"); + CreateConnectionOperation op = (CreateConnectionOperation) operation; + SensitiveConnection conn = op.getSensitiveConnection(); + assertThat(conn.getComment()).isEqualTo("hi there"); + } + + @Test + void testCreateConnectionWithFullyQualifiedName() { + Operation operation = parse("CREATE CONNECTION cat1.db1.my_conn WITH ('k' = 'v')"); + CreateConnectionOperation op = (CreateConnectionOperation) operation; + assertThat(op.getConnectionIdentifier()) + .isEqualTo(ObjectIdentifier.of("cat1", "db1", "my_conn")); + } + + @Test + void testCreateConnectionOptions() { + Operation operation = + parse("CREATE CONNECTION my_conn WITH ('k1' = 'v1', 'k2' = 'v2', 'k3' = 'v3')"); + CreateConnectionOperation op = (CreateConnectionOperation) operation; + assertThat(op.getSensitiveConnection().getOptions()) + .isEqualTo(Map.of("k1", "v1", "k2", "v2", "k3", "v3")); + } + + @Test + void testAsSummaryStringMasksOptionValues() { + Operation operation = + parse( + "CREATE CONNECTION my_conn WITH ('user' = 'alice', 'password' = 'super-secret')"); + String summary = operation.asSummaryString(); + assertThat(summary).contains("user").contains("password").contains("****"); + assertThat(summary).doesNotContain("alice").doesNotContain("super-secret"); + } + + @Test + void testCreateSystemConnectionWithoutTemporaryRejected() { + assertThatThrownBy(() -> parse("CREATE SYSTEM CONNECTION my_conn WITH ('k' = 'v')")) + .isInstanceOf(SqlParserException.class) + .hasMessageContaining("CREATE SYSTEM CONNECTION is not supported"); + } + + @Test + void testCreateConnectionWithEmptyOptionsRejected() { + assertThatThrownBy(() -> parse("CREATE CONNECTION my_conn WITH ()")) + .isInstanceOf(SqlValidateException.class) + .hasMessageContaining("Connection property list can not be empty."); + } +} diff --git a/flink-table/flink-table-planner/src/test/java/org/apache/flink/table/planner/runtime/batch/sql/CreateConnectionITCase.java b/flink-table/flink-table-planner/src/test/java/org/apache/flink/table/planner/runtime/batch/sql/CreateConnectionITCase.java new file mode 100644 index 00000000000000..a9d99cbfe5d328 --- /dev/null +++ b/flink-table/flink-table-planner/src/test/java/org/apache/flink/table/planner/runtime/batch/sql/CreateConnectionITCase.java @@ -0,0 +1,87 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.flink.table.planner.runtime.batch.sql; + +import org.apache.flink.table.api.ValidationException; +import org.apache.flink.table.api.internal.TableEnvironmentInternal; +import org.apache.flink.table.catalog.CatalogManager; +import org.apache.flink.table.catalog.ObjectIdentifier; +import org.apache.flink.table.planner.runtime.utils.BatchTestBase; + +import org.junit.jupiter.api.Test; + +import static org.assertj.core.api.Assertions.assertThat; +import static org.assertj.core.api.Assertions.assertThatThrownBy; +import static org.assertj.core.api.Assertions.entry; + +/** IT case for CREATE CONNECTION statement. */ +class CreateConnectionITCase extends BatchTestBase { + + @Test + void testCreateTemporaryConnection() { + tEnv().executeSql( + "CREATE TEMPORARY CONNECTION my_conn COMMENT 'hi there' " + + "WITH ('k' = 'v')"); + + assertThat(catalogManager().getConnection(connectionIdentifier("my_conn"))) + .hasValueSatisfying( + connection -> { + assertThat(connection.getOptions()).containsOnly(entry("k", "v")); + assertThat(connection.getComment()).isEqualTo("hi there"); + }); + } + + @Test + void testCreateTemporaryConnectionRejectsDuplicate() { + tEnv().executeSql("CREATE TEMPORARY CONNECTION my_conn WITH ('k' = 'v1')"); + + assertThatThrownBy( + () -> + tEnv().executeSql( + "CREATE TEMPORARY CONNECTION my_conn WITH ('k' = 'v2')")) + .isInstanceOf(ValidationException.class) + .hasMessageContaining("Temporary connection"); + + tEnv().executeSql("CREATE TEMPORARY CONNECTION IF NOT EXISTS my_conn WITH ('k' = 'v2')"); + + assertThat(catalogManager().getConnection(connectionIdentifier("my_conn"))) + .hasValueSatisfying( + connection -> + assertThat(connection.getOptions()).containsOnly(entry("k", "v1"))); + } + + @Test + void testCreatePermanentConnectionRejectedWithoutSecretStore() { + assertThatThrownBy(() -> tEnv().executeSql("CREATE CONNECTION my_conn WITH ('k' = 'v')")) + .isInstanceOf(ValidationException.class) + .hasMessageContaining("WritableSecretStore must be configured"); + } + + private CatalogManager catalogManager() { + return ((TableEnvironmentInternal) tEnv()).getCatalogManager(); + } + + private ObjectIdentifier connectionIdentifier(String connectionName) { + CatalogManager catalogManager = catalogManager(); + return ObjectIdentifier.of( + catalogManager.getCurrentCatalog(), + catalogManager.getCurrentDatabase(), + connectionName); + } +} From 695ccca9a04a11275ffb230024527e3f226b9ab8 Mon Sep 17 00:00:00 2001 From: Piotr Nowojski Date: Wed, 8 Jul 2026 18:05:49 +0200 Subject: [PATCH 13/32] [FLINK-40101][runtime] Emit intermediate watermarks while firing timers MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit With unaligned checkpoints + interruptible timers, an operator's output watermark could stall for hours (surviving restarts) because it only advances once an entire due-timer backlog drains in one uninterrupted pass — a large backlog (e.g. after a rescale) can outlast every single attempt. InternalTimerServiceImpl/InternalTimeServiceManagerImpl now track the highest watermark known to be fully fired even when interrupted partway, and MailboxWatermarkProcessor emits that as an intermediate watermark instead of withholding all progress. This progress lives in a new field, not currentWatermark, since currentWatermark's eager semantics are relied on elsewhere (WindowOperator cleanup timers, user ProcessFunctions). Emission is paced by a configurable interval (default 5s, 0 disables) via an internal no-op processing-time nudge, avoiding per-timer clock checks. --- .../checkpointing_configuration.html | 6 + .../configuration/CheckpointingOptions.java | 25 +++ .../api/operators/AbstractStreamOperator.java | 17 +- .../operators/AbstractStreamOperatorV2.java | 17 +- .../operators/InternalTimeServiceManager.java | 15 ++ .../InternalTimeServiceManagerImpl.java | 60 +++++- .../operators/InternalTimerServiceImpl.java | 21 +++ .../operators/MailboxWatermarkProcessor.java | 21 ++- ...chExecutionInternalTimeServiceManager.java | 8 + .../MailboxWatermarkProcessorTest.java | 89 ++++++++- ...nedCheckpointsInterruptibleTimersTest.java | 171 ++++++++++++++++++ .../interval/RowTimeIntervalJoinTest.java | 3 + ...tStreamOperatorWithStateRetentionTest.java | 4 + ...tTableOperatorInterruptibleTimersTest.java | 7 +- .../sort/BaseTemporalSortOperatorTest.java | 6 + .../EventTimeWatermarkHandlerTest.java | 5 + 16 files changed, 464 insertions(+), 11 deletions(-) diff --git a/docs/layouts/shortcodes/generated/checkpointing_configuration.html b/docs/layouts/shortcodes/generated/checkpointing_configuration.html index 704ac492aa8a2a..2fcbc5fc1edb54 100644 --- a/docs/layouts/shortcodes/generated/checkpointing_configuration.html +++ b/docs/layouts/shortcodes/generated/checkpointing_configuration.html @@ -176,6 +176,12 @@ Boolean Forces unaligned checkpoints, particularly allowing them for iterative jobs. + +

execution.checkpointing.unaligned.interruptible-timers.emit-intermediate-watermarks
+ true + Boolean + When unaligned checkpoints with interruptible timers are enabled (see 'execution.checkpointing.unaligned.interruptible-timers.enabled') and firing the timers due for a watermark advance is interrupted before completing, an intermediate watermark reflecting the progress made so far is emitted downstream, at most as often as configured by 'pipeline.auto-watermark-interval'. This keeps downstream operators from stalling on watermark progress during a long-running catch-up. Set to false to disable intermediate watermark emission. +
execution.checkpointing.unaligned.interruptible-timers.enabled
false diff --git a/flink-core/src/main/java/org/apache/flink/configuration/CheckpointingOptions.java b/flink-core/src/main/java/org/apache/flink/configuration/CheckpointingOptions.java index fb653120944598..75abd4178a0ca6 100644 --- a/flink-core/src/main/java/org/apache/flink/configuration/CheckpointingOptions.java +++ b/flink-core/src/main/java/org/apache/flink/configuration/CheckpointingOptions.java @@ -611,6 +611,31 @@ public class CheckpointingOptions { + " For this feature to be enabled, it must be also supported by the operator." + " Currently this is supported by all TableStreamOperators and CepOperator."); + /** + * Controls whether an intermediate watermark is emitted while a watermark advance is + * interrupted before completing, for unaligned checkpoints with interruptible timers enabled + * (see {@link #ENABLE_UNALIGNED_INTERRUPTIBLE_TIMERS}). Has no effect unless interruptible + * timers are enabled. The emission interval is governed by {@link + * PipelineOptions#AUTO_WATERMARK_INTERVAL}, the same as regular periodic watermark generation, + * since both have comparable performance implications. + */ + @Experimental + public static final ConfigOption + UNALIGNED_INTERRUPTIBLE_TIMERS_EMIT_INTERMEDIATE_WATERMARKS = + ConfigOptions.key( + "execution.checkpointing.unaligned.interruptible-timers.emit-intermediate-watermarks") + .booleanType() + .defaultValue(true) + .withDescription( + "When unaligned checkpoints with interruptible timers are enabled (see" + + " 'execution.checkpointing.unaligned.interruptible-timers.enabled') and" + + " firing the timers due for a watermark advance is interrupted before" + + " completing, an intermediate watermark reflecting the progress made so" + + " far is emitted downstream, at most as often as configured by" + + " 'pipeline.auto-watermark-interval'. This keeps downstream operators" + + " from stalling on watermark progress during a long-running catch-up." + + " Set to false to disable intermediate watermark emission."); + public static final ConfigOption ENABLE_CHECKPOINTS_AFTER_TASKS_FINISH = ConfigOptions.key("execution.checkpointing.checkpoints-after-tasks-finish") .booleanType() diff --git a/flink-runtime/src/main/java/org/apache/flink/streaming/api/operators/AbstractStreamOperator.java b/flink-runtime/src/main/java/org/apache/flink/streaming/api/operators/AbstractStreamOperator.java index 58ad00e77273bb..d091128bdb560e 100644 --- a/flink-runtime/src/main/java/org/apache/flink/streaming/api/operators/AbstractStreamOperator.java +++ b/flink-runtime/src/main/java/org/apache/flink/streaming/api/operators/AbstractStreamOperator.java @@ -71,6 +71,7 @@ import javax.annotation.Nullable; import java.io.Serializable; +import java.time.Duration; import java.util.Arrays; import java.util.Collections; import java.util.Locale; @@ -395,9 +396,23 @@ public void open() throws Exception { && areInterruptibleTimersConfigured() && getTimeServiceManager().isPresent()) { LOG.info("Interruptible timers enabled for {}", getClass().getSimpleName()); + InternalTimeServiceManager timeServiceManager = getTimeServiceManager().get(); + boolean emitIntermediateWatermarks = + getContainingTask() + .getJobConfiguration() + .get( + CheckpointingOptions + .UNALIGNED_INTERRUPTIBLE_TIMERS_EMIT_INTERMEDIATE_WATERMARKS); + if (emitIntermediateWatermarks) { + timeServiceManager.configureIntermediateWatermarkInterval( + Duration.ofMillis(getExecutionConfig().getAutoWatermarkInterval())); + } this.watermarkProcessor = new MailboxWatermarkProcessor( - output, mailboxExecutor, getTimeServiceManager().get()); + output, + mailboxExecutor, + timeServiceManager, + emitIntermediateWatermarks); } } diff --git a/flink-runtime/src/main/java/org/apache/flink/streaming/api/operators/AbstractStreamOperatorV2.java b/flink-runtime/src/main/java/org/apache/flink/streaming/api/operators/AbstractStreamOperatorV2.java index b898f439c1bcff..8dfd584351a01e 100644 --- a/flink-runtime/src/main/java/org/apache/flink/streaming/api/operators/AbstractStreamOperatorV2.java +++ b/flink-runtime/src/main/java/org/apache/flink/streaming/api/operators/AbstractStreamOperatorV2.java @@ -68,6 +68,7 @@ import javax.annotation.Nullable; +import java.time.Duration; import java.util.Arrays; import java.util.Locale; import java.util.Optional; @@ -249,9 +250,23 @@ public final void initializeState(StreamTaskStateInitializer streamTaskStateMana && areInterruptibleTimersConfigured() && getTimeServiceManager().isPresent()) { LOG.info("Interruptible timers enabled for {}", getClass().getSimpleName()); + InternalTimeServiceManager timeServiceManager = getTimeServiceManager().get(); + boolean emitIntermediateWatermarks = + runtimeContext + .getJobConfiguration() + .get( + CheckpointingOptions + .UNALIGNED_INTERRUPTIBLE_TIMERS_EMIT_INTERMEDIATE_WATERMARKS); + if (emitIntermediateWatermarks) { + timeServiceManager.configureIntermediateWatermarkInterval( + Duration.ofMillis(getExecutionConfig().getAutoWatermarkInterval())); + } watermarkProcessor = new MailboxWatermarkProcessor( - output, mailboxExecutor, getTimeServiceManager().get()); + output, + mailboxExecutor, + timeServiceManager, + emitIntermediateWatermarks); } } diff --git a/flink-runtime/src/main/java/org/apache/flink/streaming/api/operators/InternalTimeServiceManager.java b/flink-runtime/src/main/java/org/apache/flink/streaming/api/operators/InternalTimeServiceManager.java index e24e879afaeffe..dcc37bc7bedcc9 100644 --- a/flink-runtime/src/main/java/org/apache/flink/streaming/api/operators/InternalTimeServiceManager.java +++ b/flink-runtime/src/main/java/org/apache/flink/streaming/api/operators/InternalTimeServiceManager.java @@ -30,6 +30,7 @@ import org.apache.flink.streaming.runtime.tasks.StreamTaskCancellationContext; import java.io.Serializable; +import java.time.Duration; /** * An entity keeping all the time-related services. @@ -79,6 +80,20 @@ InternalTimerService getInternalTimerService( boolean tryAdvanceWatermark(Watermark watermark, ShouldStopAdvancingFn shouldStopAdvancingFn) throws Exception; + /** + * Configures how often an intermediate watermark should be made available (see {@link + * #getReachedWatermark()}) while a {@link #tryAdvanceWatermark} call is interrupted before + * completing. A {@code interval} of {@link Duration#ZERO zero} disables this. Implementations + * that do not support interrupted watermark advancement may ignore this. + */ + default void configureIntermediateWatermarkInterval(Duration interval) {} + + /** + * Returns the highest watermark for which all managed {@link InternalTimerService timer + * services} are known to have fired all due timers. + */ + long getReachedWatermark(); + /** * Snapshots the timers to raw keyed state. * diff --git a/flink-runtime/src/main/java/org/apache/flink/streaming/api/operators/InternalTimeServiceManagerImpl.java b/flink-runtime/src/main/java/org/apache/flink/streaming/api/operators/InternalTimeServiceManagerImpl.java index c8510995cbd530..2b7f31c060afcc 100644 --- a/flink-runtime/src/main/java/org/apache/flink/streaming/api/operators/InternalTimeServiceManagerImpl.java +++ b/flink-runtime/src/main/java/org/apache/flink/streaming/api/operators/InternalTimeServiceManagerImpl.java @@ -44,8 +44,11 @@ import java.io.IOException; import java.io.InputStream; +import java.time.Duration; +import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; +import java.util.List; import java.util.Map; import static org.apache.flink.util.Preconditions.checkNotNull; @@ -81,6 +84,11 @@ public class InternalTimeServiceManagerImpl implements InternalTimeServiceMan @Nullable AsyncExecutionController asyncExecutionController; + private long intermediateWatermarkIntervalMs = 0; + private boolean intermediateWatermarkNudgeScheduled = false; + private long reachedWatermark = Long.MIN_VALUE; + private int nextServiceStartIndex = 0; + private InternalTimeServiceManagerImpl( TaskIOMetricGroup taskIOMetricGroup, KeyGroupRange localKeyGroupRange, @@ -215,15 +223,59 @@ public void advanceWatermark(Watermark watermark) throws Exception { } } + @Override + public void configureIntermediateWatermarkInterval(Duration interval) { + this.intermediateWatermarkIntervalMs = interval.toMillis(); + } + @Override public boolean tryAdvanceWatermark( Watermark watermark, ShouldStopAdvancingFn shouldStopAdvancingFn) throws Exception { - for (InternalTimerServiceImpl service : timerServices.values()) { - if (!service.tryAdvanceWatermark(watermark.getTimestamp(), shouldStopAdvancingFn)) { - return false; + maybeScheduleIntermediateWatermarkNudge(); + List> services = new ArrayList<>(timerServices.values()); + boolean fullyAdvanced = true; + for (int i = 0; i < services.size() && fullyAdvanced; i++) { + // Rotate the starting service every call so that a persistently-behind service can't + // permanently starve the ones after it in a fixed iteration order: once one service + // is interrupted, stop attempting to fire on the remaining ones this round, but still + // fold their (possibly stale, from an earlier round) reachedWatermark into the min + // below. + InternalTimerServiceImpl service = + services.get((nextServiceStartIndex + i) % services.size()); + if (fullyAdvanced) { + fullyAdvanced = + service.tryAdvanceWatermark( + watermark.getTimestamp(), shouldStopAdvancingFn); } } - return true; + if (!services.isEmpty()) { + nextServiceStartIndex = (nextServiceStartIndex + 1) % services.size(); + } + long minReachedWatermark = Long.MAX_VALUE; + for (InternalTimerServiceImpl service : services) { + minReachedWatermark = Math.min(minReachedWatermark, service.getReachedWatermark()); + } + reachedWatermark = minReachedWatermark; + return fullyAdvanced; + } + + @Override + public long getReachedWatermark() { + return reachedWatermark; + } + + // A firing loop only yields once the mailbox has other mail waiting; ordinary record/watermark + // traffic doesn't go through the mailbox, so a long, otherwise-idle drain would never yield on + // its own. This periodic no-op mail forces a yield point at roughly the configured interval, + // without adding any per-timer clock check to the firing loop itself. + private void maybeScheduleIntermediateWatermarkNudge() { + if (intermediateWatermarkIntervalMs > 0 && !intermediateWatermarkNudgeScheduled) { + intermediateWatermarkNudgeScheduled = true; + processingTimeService.scheduleWithFixedDelay( + timestamp -> {}, + intermediateWatermarkIntervalMs, + intermediateWatermarkIntervalMs); + } } ////////////////// Fault Tolerance Methods /////////////////// diff --git a/flink-runtime/src/main/java/org/apache/flink/streaming/api/operators/InternalTimerServiceImpl.java b/flink-runtime/src/main/java/org/apache/flink/streaming/api/operators/InternalTimerServiceImpl.java index e24e8c9a62dae3..6beb8c87814ced 100644 --- a/flink-runtime/src/main/java/org/apache/flink/streaming/api/operators/InternalTimerServiceImpl.java +++ b/flink-runtime/src/main/java/org/apache/flink/streaming/api/operators/InternalTimerServiceImpl.java @@ -71,6 +71,14 @@ public class InternalTimerServiceImpl implements InternalTimerService { */ protected long currentWatermark = Long.MIN_VALUE; + /** + * Unlike {@link #currentWatermark}, which is set to the requested target watermark before any + * timer fires, this only advances after each timer has actually fired, so {@link + * #getReachedWatermark()} can safely surface it downstream even while {@link + * #tryAdvanceWatermark} is interrupted before reaching its requested target. + */ + private long reachedWatermark = Long.MIN_VALUE; + /** * The one and only Future (if any) registered to execute the next {@link Triggerable} action, * when its (processing) time arrives. @@ -229,6 +237,10 @@ public void initializeWatermark(long watermark) { this.currentWatermark = watermark; } + long getReachedWatermark() { + return reachedWatermark; + } + @Override public void registerProcessingTimeTimer(N namespace, long time) { InternalTimer oldHead = processingTimeTimersQueue.peek(); @@ -339,10 +351,19 @@ public boolean tryAdvanceWatermark( eventTimeTimersQueue.poll(); triggerTarget.onEventTime(timer); taskIOMetricGroup.getNumFiredTimers().inc(); + // Other timers due at exactly this timestamp may still be unfired, so only claim + // progress strictly below it. + reachedWatermark = timer.getTimestamp() - 1; // Check if we should stop advancing after at least one iteration to guarantee progress // and prevent a potential starvation. interrupted = shouldStopAdvancingFn.test(); } + if (!interrupted) { + // The loop above ran to completion: every timer due at or before `time` has fired (or + // none were due), so the full requested watermark has been reached, not just the last + // fired timer's timestamp. + reachedWatermark = time; + } return !interrupted; } diff --git a/flink-runtime/src/main/java/org/apache/flink/streaming/api/operators/MailboxWatermarkProcessor.java b/flink-runtime/src/main/java/org/apache/flink/streaming/api/operators/MailboxWatermarkProcessor.java index fb498f65f07ee1..69c58f11097e69 100644 --- a/flink-runtime/src/main/java/org/apache/flink/streaming/api/operators/MailboxWatermarkProcessor.java +++ b/flink-runtime/src/main/java/org/apache/flink/streaming/api/operators/MailboxWatermarkProcessor.java @@ -44,6 +44,7 @@ public class MailboxWatermarkProcessor { private final Output> output; private final MailboxExecutor mailboxExecutor; private final InternalTimeServiceManager internalTimeServiceManager; + private final boolean emitIntermediateWatermarks; /** * Flag to indicate whether a progress watermark is scheduled in the mailbox. This is used to @@ -53,13 +54,17 @@ public class MailboxWatermarkProcessor { private Watermark maxInputWatermark = Watermark.UNINITIALIZED; + private long lastEmittedIntermediateWatermark = Long.MIN_VALUE; + public MailboxWatermarkProcessor( Output> output, MailboxExecutor mailboxExecutor, - InternalTimeServiceManager internalTimeServiceManager) { + InternalTimeServiceManager internalTimeServiceManager, + boolean emitIntermediateWatermarks) { this.output = checkNotNull(output); this.mailboxExecutor = checkNotNull(mailboxExecutor); this.internalTimeServiceManager = checkNotNull(internalTimeServiceManager); + this.emitIntermediateWatermarks = emitIntermediateWatermarks; } public void emitWatermarkInsideMailbox(Watermark mark) throws Exception { @@ -73,8 +78,20 @@ private void emitWatermarkInsideMailbox() throws Exception { if (internalTimeServiceManager.tryAdvanceWatermark( maxInputWatermark, mailboxExecutor::shouldInterrupt)) { // In case output watermark has fully progressed emit it downstream. + lastEmittedIntermediateWatermark = maxInputWatermark.getTimestamp(); output.emitWatermark(maxInputWatermark); - } else if (!progressWatermarkScheduled) { + return; + } + if (emitIntermediateWatermarks) { + long reachedWatermark = internalTimeServiceManager.getReachedWatermark(); + if (reachedWatermark > lastEmittedIntermediateWatermark) { + // Firing was interrupted before completing; surface the progress made so far + // instead of leaving watermark advancement stalled until the whole drain finishes. + lastEmittedIntermediateWatermark = reachedWatermark; + output.emitWatermark(new Watermark(reachedWatermark)); + } + } + if (!progressWatermarkScheduled) { progressWatermarkScheduled = true; // We still have work to do, but we need to let other mails to be processed first. mailboxExecutor.execute( diff --git a/flink-runtime/src/main/java/org/apache/flink/streaming/api/operators/sorted/state/BatchExecutionInternalTimeServiceManager.java b/flink-runtime/src/main/java/org/apache/flink/streaming/api/operators/sorted/state/BatchExecutionInternalTimeServiceManager.java index df215a56501c33..aaaefc26dec22e 100644 --- a/flink-runtime/src/main/java/org/apache/flink/streaming/api/operators/sorted/state/BatchExecutionInternalTimeServiceManager.java +++ b/flink-runtime/src/main/java/org/apache/flink/streaming/api/operators/sorted/state/BatchExecutionInternalTimeServiceManager.java @@ -56,6 +56,8 @@ public class BatchExecutionInternalTimeServiceManager // should perform correctly when the timer fires. private final boolean asyncStateProcessingMode; + private long reachedWatermark = Long.MIN_VALUE; + public BatchExecutionInternalTimeServiceManager( ProcessingTimeService processingTimeService, boolean asyncStateProcessingMode) { this.processingTimeService = checkNotNull(processingTimeService); @@ -89,6 +91,7 @@ public void advanceWatermark(Watermark watermark) { if (watermark.getTimestamp() == Long.MAX_VALUE) { keySelected(null); } + reachedWatermark = watermark.getTimestamp(); } @Override @@ -98,6 +101,11 @@ public boolean tryAdvanceWatermark( return true; } + @Override + public long getReachedWatermark() { + return reachedWatermark; + } + @Override public void snapshotToRawKeyedState( KeyedStateCheckpointOutputStream context, String operatorName) throws Exception { diff --git a/flink-runtime/src/test/java/org/apache/flink/streaming/api/operators/MailboxWatermarkProcessorTest.java b/flink-runtime/src/test/java/org/apache/flink/streaming/api/operators/MailboxWatermarkProcessorTest.java index e0b76c4123f521..299c511f1661bd 100644 --- a/flink-runtime/src/test/java/org/apache/flink/streaming/api/operators/MailboxWatermarkProcessorTest.java +++ b/flink-runtime/src/test/java/org/apache/flink/streaming/api/operators/MailboxWatermarkProcessorTest.java @@ -53,7 +53,8 @@ void testEmitWatermarkInsideMailbox() throws Exception { new CollectorOutput<>(emittedElements), new MailboxExecutorImpl( mailbox, priority, StreamTaskActionExecutor.IMMEDIATE), - timerService); + timerService, + true); final List expectedOutput = new ArrayList<>(); watermarkProcessor.emitWatermarkInsideMailbox(new Watermark(1)); watermarkProcessor.emitWatermarkInsideMailbox(new Watermark(2)); @@ -84,6 +85,87 @@ void testEmitWatermarkInsideMailbox() throws Exception { assertThat(emittedElements).containsExactlyElementsOf(expectedOutput); } + /** + * An interruption unrelated to the intermediate-watermark nudge (e.g. a checkpoint mail) must + * not surface an intermediate watermark when the feature is disabled. + */ + @Test + void testIntermediateWatermarkNotEmittedWhenDisabled() throws Exception { + int priority = 42; + final List emittedElements = new ArrayList<>(); + final TaskMailboxImpl mailbox = new TaskMailboxImpl(); + final InternalTimeServiceManager timerService = + new NoOpInternalTimeServiceManager() { + @Override + public long getReachedWatermark() { + return 5; + } + }; + + final MailboxWatermarkProcessor> watermarkProcessor = + new MailboxWatermarkProcessor<>( + new CollectorOutput<>(emittedElements), + new MailboxExecutorImpl( + mailbox, priority, StreamTaskActionExecutor.IMMEDIATE), + timerService, + false); + + // Unrelated mail interrupts the firing loop for a reason unrelated to the nudge. + mailbox.put(new Mail(() -> {}, TaskMailbox.MIN_PRIORITY, "checkpoint mail")); + + watermarkProcessor.emitWatermarkInsideMailbox(new Watermark(10)); + + // configureIntermediateWatermarkInterval() was never called on this manager. + assertThat(emittedElements).isEmpty(); + } + + /** + * Once a watermark has been fully emitted via the shortcut branch, a later interrupted advance + * must not emit an intermediate watermark below it. + */ + @Test + void testIntermediateWatermarkNeverBelowAlreadyEmittedWatermark() throws Exception { + int priority = 42; + final List emittedElements = new ArrayList<>(); + final TaskMailboxImpl mailbox = new TaskMailboxImpl(); + final boolean[] fullyAdvancedOnce = new boolean[] {false}; + final InternalTimeServiceManager timerService = + new NoOpInternalTimeServiceManager() { + @Override + public boolean tryAdvanceWatermark( + Watermark watermark, ShouldStopAdvancingFn shouldStopAdvancingFn) { + if (!fullyAdvancedOnce[0]) { + fullyAdvancedOnce[0] = true; + return true; + } + return false; + } + + @Override + public long getReachedWatermark() { + return 5; + } + }; + + final MailboxWatermarkProcessor> watermarkProcessor = + new MailboxWatermarkProcessor<>( + new CollectorOutput<>(emittedElements), + new MailboxExecutorImpl( + mailbox, priority, StreamTaskActionExecutor.IMMEDIATE), + timerService, + true); + + // Fully advances to 10 via the shortcut branch. + watermarkProcessor.emitWatermarkInsideMailbox(new Watermark(10)); + // A new, higher watermark arrives but is interrupted; reachedWatermark(5) is below the + // watermark(10) already emitted above. + watermarkProcessor.emitWatermarkInsideMailbox(new Watermark(20)); + + assertThat(emittedElements) + .as("watermarks must be non-decreasing") + .containsExactly(new Watermark(10)); + } + private static class NoOpInternalTimeServiceManager implements InternalTimeServiceManager { @Override @@ -106,6 +188,11 @@ public boolean tryAdvanceWatermark( return !shouldStopAdvancingFn.test(); } + @Override + public long getReachedWatermark() { + return Long.MIN_VALUE; + } + @Override public void snapshotToRawKeyedState( KeyedStateCheckpointOutputStream stateCheckpointOutputStream, String operatorName) diff --git a/flink-streaming-java/src/test/java/org/apache/flink/streaming/runtime/io/checkpointing/UnalignedCheckpointsInterruptibleTimersTest.java b/flink-streaming-java/src/test/java/org/apache/flink/streaming/runtime/io/checkpointing/UnalignedCheckpointsInterruptibleTimersTest.java index 47bfbe84592d82..1750c0e20b733c 100644 --- a/flink-streaming-java/src/test/java/org/apache/flink/streaming/runtime/io/checkpointing/UnalignedCheckpointsInterruptibleTimersTest.java +++ b/flink-streaming-java/src/test/java/org/apache/flink/streaming/runtime/io/checkpointing/UnalignedCheckpointsInterruptibleTimersTest.java @@ -98,11 +98,15 @@ void testSingleWatermarkHoldingOperatorInTheChain() throws Exception { assertThat(harness.getOutput()) .containsExactly( asFiredRecord("key-0"), + // Intermediate watermark surfacing progress after firing the first of + // the 2 timers due at firstWindowEnd, before the drain is interrupted. + asWatermark(Instant.ofEpochMilli(firstWindowEnd.toEpochMilli() - 1)), asMailRecord("key-0"), asFiredRecord("key-1"), asMailRecord("key-1"), asWatermark(firstWindowEnd), asFiredRecord("key-0"), + asWatermark(Instant.ofEpochMilli(secondWindowEnd.toEpochMilli() - 1)), asMailRecord("key-0"), asFiredRecord("key-1"), asMailRecord("key-1"), @@ -195,6 +199,9 @@ void testDeferredWatermarkIsEmittedBeforeEndOfData() throws Exception { assertThat(harness.getOutput()) .containsExactly( asFiredRecord("key-0"), + // Intermediate watermark surfacing progress after firing the first of + // the 2 timers due at windowEnd, before the drain is interrupted. + asWatermark(Instant.ofEpochMilli(windowEnd.toEpochMilli() - 1)), asMailRecord("key-0"), asFiredRecord("key-1"), asMailRecord("key-1"), @@ -203,6 +210,120 @@ void testDeferredWatermarkIsEmittedBeforeEndOfData() throws Exception { } } + @Test + void testIntermediateWatermarksEmittedDuringLongDrain() throws Exception { + final Instant t1 = Instant.ofEpochMilli(100L); + final Instant t2 = Instant.ofEpochMilli(200L); + final Instant t3 = Instant.ofEpochMilli(300L); + + try (final StreamTaskMailboxTestHarness harness = + new StreamTaskMailboxTestHarnessBuilder<>(OneInputStreamTask::new, Types.STRING) + .addJobConfig( + CheckpointingOptions.CHECKPOINTING_INTERVAL, Duration.ofSeconds(1)) + .addJobConfig(CheckpointingOptions.ENABLE_UNALIGNED, true) + .addJobConfig( + CheckpointingOptions.ENABLE_UNALIGNED_INTERRUPTIBLE_TIMERS, true) + .modifyStreamConfig( + UnalignedCheckpointsInterruptibleTimersTest::setupStreamConfig) + .addInput(Types.STRING) + .setupOperatorChain( + SimpleOperatorFactory.of( + new MultipleTimersAtTheSameTimestamp() + .withTimers(t1, 1) + .withTimers(t2, 1) + .withTimers(t3, 1))) + .name("first") + .finishForSingletonOperatorChain(StringSerializer.INSTANCE) + .build()) { + harness.setAutoProcess(false); + harness.processElement(new StreamRecord<>("register timers")); + harness.processAll(); + // A single watermark whose drain requires firing multiple, individually-interrupted + // timers (each fired timer schedules a mailbox mail, forcing an interruption). + harness.processElement(asWatermark(t3)); + + final List seenWatermarks = new ArrayList<>(); + while (seenWatermarks.isEmpty() + || seenWatermarks.get(seenWatermarks.size() - 1).getTimestamp() + < t3.toEpochMilli()) { + harness.processSingleStep(); + Object outputElement; + while ((outputElement = harness.getOutput().poll()) != null) { + if (outputElement instanceof Watermark) { + seenWatermarks.add((Watermark) outputElement); + } + } + } + + // The drain is interrupted after firing each of the 3 timers. Progress made before + // the final interruption should be visible downstream as intermediate watermarks, + // not only as the single final watermark once the whole drain completes. + assertThat(seenWatermarks).hasSizeGreaterThan(1); + assertThat(seenWatermarks.get(0).getTimestamp()).isLessThan(t3.toEpochMilli()); + assertThat(seenWatermarks.get(seenWatermarks.size() - 1).getTimestamp()) + .isEqualTo(t3.toEpochMilli()); + assertThat(seenWatermarks).extracting(Watermark::getTimestamp).isSorted(); + } + } + + /** + * Once one timer service is interrupted, {@link + * org.apache.flink.streaming.api.operators.InternalTimeServiceManagerImpl#tryAdvanceWatermark} + * never even attempts the other services this round, so a persistently-behind service can + * starve the others' contribution to the reported intermediate watermark for as long as it + * itself keeps getting interrupted. + */ + @Test + void testStarvedTimerServiceDelaysIntermediateWatermark() throws Exception { + final int timersPerService = 20; + final Instant watermark = Instant.ofEpochMilli(timersPerService + 10L); + + try (final StreamTaskMailboxTestHarness harness = + new StreamTaskMailboxTestHarnessBuilder<>(OneInputStreamTask::new, Types.STRING) + .addJobConfig( + CheckpointingOptions.CHECKPOINTING_INTERVAL, Duration.ofSeconds(1)) + .addJobConfig(CheckpointingOptions.ENABLE_UNALIGNED, true) + .addJobConfig( + CheckpointingOptions.ENABLE_UNALIGNED_INTERRUPTIBLE_TIMERS, true) + .modifyStreamConfig( + UnalignedCheckpointsInterruptibleTimersTest::setupStreamConfig) + .addInput(Types.LONG) + .setupOperatorChain( + SimpleOperatorFactory.of(new TwoTimerServicesWithEqualBacklogs())) + .name("first") + .finishForSingletonOperatorChain(StringSerializer.INSTANCE) + .build()) { + harness.setAutoProcess(false); + for (long ts = 1; ts <= timersPerService; ts++) { + harness.processElement(new StreamRecord<>(ts)); + } + harness.processAll(); + harness.processElement(asWatermark(watermark)); + + int firedCount = 0; + Watermark firstWatermark = null; + while (firstWatermark == null && firedCount < 2 * timersPerService) { + harness.processSingleStep(); + Object outputElement; + while ((outputElement = harness.getOutput().poll()) != null) { + if (outputElement instanceof Watermark) { + firstWatermark = (Watermark) outputElement; + break; + } + firedCount++; + } + } + + assertThat(firstWatermark).as("a watermark should eventually appear").isNotNull(); + // With two equally-backlogged services, an intermediate watermark should surface well + // before either service's entire backlog has drained -- not only once one of them + // (whichever happens to be attempted first) has completely finished firing. + assertThat(firedCount) + .as("first watermark should appear before either backlog is drained") + .isLessThan(timersPerService); + } + } + private static Watermark asWatermark(Instant timestamp) { return new Watermark(timestamp.toEpochMilli()); } @@ -280,6 +401,56 @@ MultipleTimersAtTheSameTimestamp withTimers(Instant timestamp, int count) { } } + /** + * Registers one timer per element (at the timestamp given by the element's value) on each of + * two independently-named timer services, each firing one timer at a time (interrupted via a + * scheduled mail). + */ + private static class TwoTimerServicesWithEqualBacklogs extends AbstractStreamOperator + implements OneInputStreamOperator, + Triggerable, + YieldingOperator { + + private transient @Nullable MailboxExecutor mailboxExecutor; + private transient InternalTimerService serviceA; + private transient InternalTimerService serviceB; + + @Override + public boolean useInterruptibleTimers(ReadableConfig config) { + return true; + } + + @Override + public void setMailboxExecutor(MailboxExecutor mailboxExecutor) { + super.setMailboxExecutor(mailboxExecutor); + this.mailboxExecutor = mailboxExecutor; + } + + @Override + public void open() throws Exception { + super.open(); + serviceA = getInternalTimerService("serviceA", StringSerializer.INSTANCE, this); + serviceB = getInternalTimerService("serviceB", StringSerializer.INSTANCE, this); + } + + @Override + public void processElement(StreamRecord element) { + setCurrentKey("key"); + long ts = element.getValue(); + serviceA.registerEventTimeTimer("A", ts); + serviceB.registerEventTimeTimer("B", ts); + } + + @Override + public void onEventTime(InternalTimer timer) throws Exception { + mailboxExecutor.execute(() -> {}, "mail"); + output.collect(asFiredRecord(timer.getNamespace() + "-" + timer.getTimestamp())); + } + + @Override + public void onProcessingTime(InternalTimer timer) throws Exception {} + } + /** * Registers a timer for the current key on every element; every fired timer enqueues a mail, so * that firing is interrupted after each timer. diff --git a/flink-table/flink-table-runtime/src/test/java/org/apache/flink/table/runtime/operators/join/interval/RowTimeIntervalJoinTest.java b/flink-table/flink-table-runtime/src/test/java/org/apache/flink/table/runtime/operators/join/interval/RowTimeIntervalJoinTest.java index 19a104a652f7ed..d0e6530c190a21 100644 --- a/flink-table/flink-table-runtime/src/test/java/org/apache/flink/table/runtime/operators/join/interval/RowTimeIntervalJoinTest.java +++ b/flink-table/flink-table-runtime/src/test/java/org/apache/flink/table/runtime/operators/join/interval/RowTimeIntervalJoinTest.java @@ -500,6 +500,9 @@ public void testInterruptibleTimers() throws Exception { final List expectedOutput = new ArrayList<>(); expectedOutput.add(insertRecord(5L, "k1", null, null)); + // Intermediate watermark surfacing progress after firing the first timer, before the + // drain is interrupted by the test's injected mail. + expectedOutput.add(new Watermark(5)); expectedOutput.add(insertRecord(null, null, 6L, "k2")); expectedOutput.add(insertRecord(7L, "k3", null, null)); expectedOutput.add(insertRecord(null, null, 8L, "k4")); diff --git a/flink-table/flink-table-runtime/src/test/java/org/apache/flink/table/runtime/operators/join/temporal/BaseTwoInputStreamOperatorWithStateRetentionTest.java b/flink-table/flink-table-runtime/src/test/java/org/apache/flink/table/runtime/operators/join/temporal/BaseTwoInputStreamOperatorWithStateRetentionTest.java index c0e5f705dc9bdc..0aba8733f1ec05 100644 --- a/flink-table/flink-table-runtime/src/test/java/org/apache/flink/table/runtime/operators/join/temporal/BaseTwoInputStreamOperatorWithStateRetentionTest.java +++ b/flink-table/flink-table-runtime/src/test/java/org/apache/flink/table/runtime/operators/join/temporal/BaseTwoInputStreamOperatorWithStateRetentionTest.java @@ -94,6 +94,9 @@ void testInterruptibleTimersWithWatermarks() throws Exception { assertThat(output) .containsExactly( firedDesc(0L), + // Intermediate watermark surfacing progress after firing the first of + // the 2 timers due at firstWindowEnd, before the drain is interrupted. + "Watermark@" + (firstWindowEnd.toEpochMilli() - 1), mailDesc(0L), firedDesc(1L), mailDesc(1L), @@ -101,6 +104,7 @@ void testInterruptibleTimersWithWatermarks() throws Exception { firedDesc(0L), mailDesc(0L), firedDesc(1L), + "Watermark@" + (secondWindowEnd.toEpochMilli() - 1), mailDesc(1L), watermarkDesc(secondWindowEnd)); } diff --git a/flink-table/flink-table-runtime/src/test/java/org/apache/flink/table/runtime/operators/process/ProcessSetTableOperatorInterruptibleTimersTest.java b/flink-table/flink-table-runtime/src/test/java/org/apache/flink/table/runtime/operators/process/ProcessSetTableOperatorInterruptibleTimersTest.java index 15258ff24cb5d6..9e8e3d43e2b992 100644 --- a/flink-table/flink-table-runtime/src/test/java/org/apache/flink/table/runtime/operators/process/ProcessSetTableOperatorInterruptibleTimersTest.java +++ b/flink-table/flink-table-runtime/src/test/java/org/apache/flink/table/runtime/operators/process/ProcessSetTableOperatorInterruptibleTimersTest.java @@ -149,15 +149,18 @@ void testTimersThroughProcessTableRunner(boolean interruptibleTimers) throws Exc recordLabel(3000L, null), firedLabel(null, 1000L, 5000L), mailLabel(null, 1000L), + firedLabel(NAMED_TIMER, 1000L, 5000L), + watermarkLabel(999L), + mailLabel(NAMED_TIMER, 1000L), firedLabel(null, 2000L, 5000L), mailLabel(null, 2000L), firedLabel(null, 3000L, 5000L), + watermarkLabel(2999L), mailLabel(null, 3000L), - firedLabel(NAMED_TIMER, 1000L, 5000L), - mailLabel(NAMED_TIMER, 1000L), watermarkLabel(5000L), recordLabel(6000L, 5000L), firedLabel(null, 6000L, 7000L), + watermarkLabel(5999L), mailLabel(null, 6000L), watermarkLabel(7000L)); } else { diff --git a/flink-table/flink-table-runtime/src/test/java/org/apache/flink/table/runtime/operators/sort/BaseTemporalSortOperatorTest.java b/flink-table/flink-table-runtime/src/test/java/org/apache/flink/table/runtime/operators/sort/BaseTemporalSortOperatorTest.java index 65eaa89001e2a9..05d29a4d6340f5 100644 --- a/flink-table/flink-table-runtime/src/test/java/org/apache/flink/table/runtime/operators/sort/BaseTemporalSortOperatorTest.java +++ b/flink-table/flink-table-runtime/src/test/java/org/apache/flink/table/runtime/operators/sort/BaseTemporalSortOperatorTest.java @@ -83,12 +83,18 @@ void testInterruptibleTimersWithWatermarks() throws Exception { assertThat(output) .containsExactly( firedDesc(1000L), + // Intermediate watermarks surfacing progress after each timer fires, + // before the drain is interrupted by the next mail. + watermarkDesc(999L), mailDesc(1000L), firedDesc(2000L), + watermarkDesc(1999L), mailDesc(2000L), firedDesc(3000L), + watermarkDesc(2999L), mailDesc(3000L), firedDesc(4000L), + watermarkDesc(3999L), mailDesc(4000L), watermarkDesc(5000L)); } diff --git a/flink-tests/src/test/java/org/apache/flink/test/streaming/api/datastream/extension/eventtime/EventTimeWatermarkHandlerTest.java b/flink-tests/src/test/java/org/apache/flink/test/streaming/api/datastream/extension/eventtime/EventTimeWatermarkHandlerTest.java index 36c987701cd3d7..8e866c2d7e513a 100644 --- a/flink-tests/src/test/java/org/apache/flink/test/streaming/api/datastream/extension/eventtime/EventTimeWatermarkHandlerTest.java +++ b/flink-tests/src/test/java/org/apache/flink/test/streaming/api/datastream/extension/eventtime/EventTimeWatermarkHandlerTest.java @@ -276,6 +276,11 @@ public boolean tryAdvanceWatermark( throw new UnsupportedOperationException(); } + @Override + public long getReachedWatermark() { + throw new UnsupportedOperationException(); + } + @Override public void snapshotToRawKeyedState( KeyedStateCheckpointOutputStream stateCheckpointOutputStream, String operatorName) From 8fd8d9298abf42c96f2023ff50fb6f5a3f75979b Mon Sep 17 00:00:00 2001 From: Fabian Hueske Date: Tue, 21 Jul 2026 18:50:07 +0200 Subject: [PATCH 14/32] [FLINK-40131][docs] Document LATERAL SNAPSHOT join (#28737) * [FLINK-40131][docs] Document LATERAL SNAPSHOT join Co-Authored-By: Claude Opus 4.8 (1M context) --- .../docs/sql/functions/built-in-functions.md | 18 +++ .../docs/sql/reference/queries/joins.md | 107 +++++++++++++++++ .../docs/sql/functions/built-in-functions.md | 18 +++ .../docs/sql/reference/queries/joins.md | 111 ++++++++++++++++++ 4 files changed, 254 insertions(+) diff --git a/docs/content.zh/docs/sql/functions/built-in-functions.md b/docs/content.zh/docs/sql/functions/built-in-functions.md index 4aaf786e860c97..6165b239fcbbe3 100644 --- a/docs/content.zh/docs/sql/functions/built-in-functions.md +++ b/docs/content.zh/docs/sql/functions/built-in-functions.md @@ -132,6 +132,24 @@ JSON å‡½æ•°ä½¿ç”¨ç¬¦åˆ ISO/IEC TR 19075-6 SQL标准的 JSON 路径表达å¼ã€‚ {{< sql_functions_zh "bitmapagg" >}} +Table Functions +--------------- + +Table functions take zero, one, or more values as input and return multiple rows (a table) as the result. Most built-in table functions take a table as an input argument. +Table functions can be used in two ways: as stand-alone inputs, where they are invoked just once, or in a `LATERAL` context, where they are invoked for each row of an outer table. + +| Function | Description | +|--------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| `TUMBLE(data => TABLE t, ...)` | Assigns each row of the `data` table to a tumbling window specified by additional window columns (`window_start`, `window_end`, `window_time`). See [Window TVF]({{< ref "docs/sql/reference/queries/window-tvf" >}}#tumble) for the full list of arguments, semantics, and usage. | +| `HOP(data => TABLE t, ...)` | Assigns each row of the `data` table to a hopping window specified by additional window columns (`window_start`, `window_end`, `window_time`). See [Window TVF]({{< ref "docs/sql/reference/queries/window-tvf" >}}#hop) for the full list of arguments, semantics, and usage. | +| `CUMULATE(data => TABLE t, ...)` | Assigns each row of the `data` table to a cumulating window specified by additional window columns (`window_start`, `window_end`, `window_time`). See [Window TVF]({{< ref "docs/sql/reference/queries/window-tvf" >}}#cumulate) for the full list of arguments, semantics, and usage. | +| `SESSION(data => TABLE t, ...)` | Assigns each row of the `data` table to a session window specified by additional window columns (`window_start`, `window_end`, `window_time`). See [Window TVF]({{< ref "docs/sql/reference/queries/window-tvf" >}}#session) for the full list of arguments, semantics, and usage. | +| `FROM_CHANGELOG(input => TABLE t [, ...])` | Converts an append-only table with an explicit operation column into a dynamic table. See Changelog Conversion for the full list of arguments, semantics, and usage. | +| `TO_CHANGELOG(input => TABLE t [, ...])` | Converts a dynamic table into an append-only table with an explicit operation column. See Changelog Conversion for the full list of arguments, semantics, and usage. | +| `SNAPSHOT(input => TABLE t [, ...])` | Returns the current state of a dynamic table `t`. `SNAPSHOT` can only be used in a `LATERAL` context and not as a stand-alone table function. See [LATERAL SNAPSHOT join]({{< ref "docs/sql/reference/queries/joins" >}}#lateral-snapshot-join) for the full list of arguments, the join semantics, and usage. | + +To implement your own table functions, see [user-defined table functions]({{< ref "docs/dev/table/functions/udfs" >}}#table-functions). + æ—¶é—´é—´éš”å•ä½å’Œæ—¶é—´ç‚¹å•使 ‡è¯†ç¬¦ --------------------------------------- diff --git a/docs/content.zh/docs/sql/reference/queries/joins.md b/docs/content.zh/docs/sql/reference/queries/joins.md index a1e1db2caab8be..a97312e910082b 100644 --- a/docs/content.zh/docs/sql/reference/queries/joins.md +++ b/docs/content.zh/docs/sql/reference/queries/joins.md @@ -295,6 +295,113 @@ WHERE - SQL 中å¯ä»¥å®šä¹‰ temporal table DDL,但ä¸èƒ½å®šä¹‰ temporal table 函数; - temporal table DDL å’Œ temporal table function éƒ½æ”¯æŒ temporal join ç‰ˆæœ¬è¡¨ï¼Œä½†åªæœ‰ temporal table function å¯ä»¥ temporal join 任何表/视图的最新版本(å³"å¤„ç†æ—¶é—´ Temporal Join")。 +LATERAL SNAPSHOT Join +-------------- + +{{< label Streaming >}} {{< label Batch >}} + +A `LATERAL SNAPSHOT` join is a *stream enrichment* join that augments an append-only table with the current state of an updating table. +As in the [temporal joins](#temporal-joins), the enriched (left) input is called the *probe side* and the enriching (right) input is called the *build side*. +Every probe-side row is joined with the build-side state that is current at the time the row is processed. + +For example, the following query enriches an append-only stream of `orders` (the probe side) with the conversion rate from an updating `currency_rates` table (the build side) that is current when the order is processed: + +```sql +-- probe side: append-only stream of orders +-- order_id | currency | amount | order_time +-- ---------+----------+--------+----------- +-- 1 | EUR | 10 | 10:15 +-- 2 | EUR | 10 | 10:31 +-- 3 | USD | 20 | 11:00 + +-- build side: updating currency rates (upsert on currency) +-- currency | rate | update_time +-- ---------+------+------------ +-- EUR | 1.1 | 10:00 +-- USD | 1.0 | 10:00 +-- EUR | 1.2 | 10:30 + +SELECT o.order_id, o.currency, o.amount, r.rate +FROM orders AS o +JOIN LATERAL TABLE(SNAPSHOT(input => TABLE currency_rates)) AS r +ON o.currency = r.currency; + +order_id currency amount rate +======== ======== ====== ==== + 1 EUR 10 1.1 -- rate as of 10:00 + 2 EUR 10 1.2 -- rate as of 10:30 + 3 USD 20 1.0 -- rate as of 10:00 +``` + +*Important:* The `LATERAL SNAPSHOT` join is non-deterministic. The order with `order_id = 2` could also have been joined with the `10:00` version of `EUR`. The result depends on the order in which the operator processes its inputs, which cannot be controlled. + +**When to use it** + +The `LATERAL SNAPSHOT` join is designed for enrichment scenarios where the other temporal joins are a poor fit: + +- **The build side does not receive continuous updates.** An event-time temporal join only emits a joined row once the combined watermark of both inputs has passed the event time of the probe-side row. A build side that does not continuously produce records, and therefore does not advance its watermark, stalls the join and lets probe-side state accumulate. A `LATERAL SNAPSHOT` join keeps making progress even when the build side is idle. +- **Low latency is required.** An event-time temporal join holds back probe-side rows until the watermark catches up, which adds latency. After the initial load phase, the `LATERAL SNAPSHOT` join immediately joins a probe-side row when it arrives. +- **The build side has no primary key.** Event-time and processing-time temporal joins require the build side to have a primary key that appears in the equi-join condition. A `LATERAL SNAPSHOT` join has no such requirement; neither the probe side nor the build side needs a primary key. + +**How the join works** + +A `LATERAL SNAPSHOT` join operates in two phases to avoid joining probe-side rows against an incomplete build side: it first loads the build side up to a well-defined point in time (the *load phase*) before it starts joining (the *join phase*). + +During the *load phase*, the operator accumulates the build-side changes into state until the load-completion condition is met, without emitting any results yet. Probe-side rows that arrive during the load phase are buffered. The load phase completes when one of the following occurs: + +- the build-side watermark reaches a configured `load_completed_time`. This time is either explicitly set by the user (`load_completed_condition => 'user_time'`) or automatically set to the wall-clock time when the query is compiled (`load_completed_condition => 'compile_time'`), or +- as a fallback, the `load_completed_idle_timeout` elapses in processing time without the build-side watermark advancing (which handles build sides that become idle during start-up). + +When the load phase completes, the operator transitions to the *join phase*: all buffered probe-side rows are joined against the current build-side state and emitted. +From then on, each probe-side row is joined and emitted immediately against the build-side state that is current at that moment. +Build-side updates continue to be applied to the state and become visible to subsequent probe-side rows. + +The load phase is what distinguishes a `LATERAL SNAPSHOT` join from the [processing-time temporal join](#processing-time-temporal-join), which has been disabled for Flink SQL. The processing-time temporal join starts joining immediately at query start, so early probe-side rows are joined against whatever build-side data happens to have been loaded so far, producing missing or stale results that depend on the order in which the inputs are read. By first loading the build side, a `LATERAL SNAPSHOT` join avoids this problem. + +**Syntax** + +The build side is wrapped in the `SNAPSHOT` table function inside a `LATERAL TABLE` clause. The outer (probe-side) table must be an append-only table. +Both `INNER JOIN` and `LEFT [OUTER] JOIN` are supported. The join requires at least one conjunctive equality predicate; additional non-equi predicates are allowed in the `ON` clause. + +```sql +SELECT [column_list] +FROM probe_table +[LEFT] JOIN LATERAL TABLE( + SNAPSHOT( + input => TABLE build_table, + [ load_completed_condition => <'compile_time' | 'user_time'>, ] + [ load_completed_time => , ] + [ load_completed_idle_timeout => , ] + [ state_ttl => ])) AS s +ON probe_table.col = s.col +``` + +The `SNAPSHOT` function accepts the following arguments: + +| Argument | Type | Required | Description | +| --- | --- | --- |-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| `input` | TABLE | yes | The build-side table. It may use any changelog mode (inserts, updates, and deletes). In streaming mode it must declare a [watermark]({{< ref "docs/concepts/sql-table-concepts/time_attributes" >}}#event-time). | +| `load_completed_condition` | STRING | no | Determines when the initial load phase completes. One of `'compile_time'` (default) or `'user_time'`. With `'compile_time'`, the load phase completes once the build-side watermark reaches the wall-clock time at which the query was compiled. With `'user_time'`, it completes once the build-side watermark reaches the explicit `load_completed_time`. | +| `load_completed_time` | TIMESTAMP_LTZ(3) | no | The build-side event time that completes the load phase. Required when `load_completed_condition` is `'user_time'` and must not be set otherwise. | +| `load_completed_idle_timeout` | INTERVAL | no | A processing-time fallback to complete the load phase. The transition to the join phase happens when the build-side watermark does not advance for more than the configured interval. | +| `state_ttl` | INTERVAL | no | Retention time for build-side state. Join keys that are not accessed within this duration become eligible for eviction. Only applied during the join phase. Defaults to the pipeline's [state TTL]({{< ref "docs/dev/table/config" >}}#table-exec-state-ttl). | + +`load_completed_condition`, `load_completed_time`, `load_completed_idle_timeout`, and `state_ttl` only affect streaming execution and are ignored in batch mode (see **Batch mode** below). + +**Result and state characteristics** + +The result is append-only and preserves the probe-side time attributes. A build-side rowtime attribute that is projected into the output is materialized as a regular `TIMESTAMP` and is no longer a time attribute. Probe-side watermarks are forwarded downstream during the join phase; build-side watermarks are consumed internally and are not propagated. + +Because rows are joined against the build-side state that is current at processing time, the result is **not deterministic**. A given probe-side row may be joined with different build-side versions across different runs, depending on the relative timing of the two inputs. Probe and build-side inputs can be configured with watermark alignment to keep the two inputs roughly aligned on event time, so that a probe-side row tends to be joined with build-side changes of a similar event time. This is a best-effort alignment and does not make the result deterministic. + +The build-side state grows with the number of distinct build-side keys, and during the load phase the buffered probe-side rows add to the state footprint until the operator transitions to the join phase. Use `state_ttl` to bound the build-side state for keys that are no longer updated or joined. You can reduce the amount of data that is buffered and processed during the load phase by configuring scan start offsets on the build and probe-side inputs, for example with a `scan.startup.*` [dynamic table option hint]({{< ref "docs/sql/reference/queries/hints" >}}#dynamic-table-options). + +**Batch mode** + +In batch mode, a `LATERAL SNAPSHOT` join is executed as a regular (`INNER` or `LEFT`) join between the probe side and the complete build side. Batch execution reads the entire build side before joining, so there is no load phase and no incremental state build-up. The streaming-specific arguments (`load_completed_condition`, `load_completed_time`, `load_completed_idle_timeout`, and `state_ttl`) are accepted but have no effect, and the build side does not need to declare a watermark. + +Because every probe-side row is joined against the final, complete build side, the batch result is **deterministic**. + Lookup Join -------------- diff --git a/docs/content/docs/sql/functions/built-in-functions.md b/docs/content/docs/sql/functions/built-in-functions.md index 42808103674bb9..3946cd225abee5 100644 --- a/docs/content/docs/sql/functions/built-in-functions.md +++ b/docs/content/docs/sql/functions/built-in-functions.md @@ -135,6 +135,24 @@ The aggregate functions take an expression across all the rows as the input and {{< sql_functions "bitmapagg" >}} +Table Functions +--------------- + +Table functions take zero, one, or more values as input and return multiple rows (a table) as the result. Most built-in table functions take a table as an input argument. +Table functions can be used in two ways: as stand-alone inputs, where they are invoked just once, or in a `LATERAL` context, where they are invoked for each row of an outer table. + +| Function | Description | +|--------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| `TUMBLE(data => TABLE t, ...)` | Assigns each row of the `data` table to a tumbling window specified by additional window columns (`window_start`, `window_end`, `window_time`). See [Window TVF]({{< ref "docs/sql/reference/queries/window-tvf" >}}#tumble) for the full list of arguments, semantics, and usage. | +| `HOP(data => TABLE t, ...)` | Assigns each row of the `data` table to a hopping window specified by additional window columns (`window_start`, `window_end`, `window_time`). See [Window TVF]({{< ref "docs/sql/reference/queries/window-tvf" >}}#hop) for the full list of arguments, semantics, and usage. | +| `CUMULATE(data => TABLE t, ...)` | Assigns each row of the `data` table to a cumulating window specified by additional window columns (`window_start`, `window_end`, `window_time`). See [Window TVF]({{< ref "docs/sql/reference/queries/window-tvf" >}}#cumulate) for the full list of arguments, semantics, and usage. | +| `SESSION(data => TABLE t, ...)` | Assigns each row of the `data` table to a session window specified by additional window columns (`window_start`, `window_end`, `window_time`). See [Window TVF]({{< ref "docs/sql/reference/queries/window-tvf" >}}#session) for the full list of arguments, semantics, and usage. | +| `FROM_CHANGELOG(input => TABLE t [, ...])` | Converts an append-only table with an explicit operation column into a dynamic table. See [Changelog Conversion]({{< ref "docs/sql/reference/queries/changelog" >}}#from_changelog) for the full list of arguments, semantics, and usage. | +| `TO_CHANGELOG(input => TABLE t [, ...])` | Converts a dynamic table into an append-only table with an explicit operation column. See [Changelog Conversion]({{< ref "docs/sql/reference/queries/changelog" >}}#to_changelog) for the full list of arguments, semantics, and usage. | +| `SNAPSHOT(input => TABLE t [, ...])` | Returns the current state of a dynamic table `t`. `SNAPSHOT` can only be used in a `LATERAL` context and not as a stand-alone table function. See [LATERAL SNAPSHOT join]({{< ref "docs/sql/reference/queries/joins" >}}#lateral-snapshot-join) for the full list of arguments, the join semantics, and usage. | + +To implement your own table functions, see [user-defined table functions]({{< ref "docs/dev/table/functions/udfs" >}}#table-functions). + Time Interval and Point Unit Specifiers --------------------------------------- diff --git a/docs/content/docs/sql/reference/queries/joins.md b/docs/content/docs/sql/reference/queries/joins.md index d000a46b822ceb..c323554d37ba45 100644 --- a/docs/content/docs/sql/reference/queries/joins.md +++ b/docs/content/docs/sql/reference/queries/joins.md @@ -300,6 +300,117 @@ The main difference between above Temporal Table DDL and Temporal Table Function - The temporal table DDL can be defined in SQL but temporal table function can not; - Both temporal table DDL and temporal table function support temporal join versioned table, but only temporal table function can temporal join the latest version of any table/view. +LATERAL SNAPSHOT Join +-------------- + +{{< label Streaming >}} {{< label Batch >}} + +A `LATERAL SNAPSHOT` join is a *stream enrichment* join that augments an append-only table with the current state of an updating table. +As in the [temporal joins](#temporal-joins), the enriched (left) input is called the *probe side* and the enriching (right) input is called the *build side*. +Every probe-side row is joined with the build-side state that is current at the time the row is processed. + +For example, the following query enriches an append-only stream of `orders` (the probe side) with the conversion rate from an updating `currency_rates` table (the build side) that is current when the order is processed: + +```sql +-- probe side: append-only stream of orders +-- order_id | currency | amount | order_time +-- ---------+----------+--------+----------- +-- 1 | EUR | 10 | 10:15 +-- 2 | EUR | 10 | 10:31 +-- 3 | USD | 20 | 11:00 + +-- build side: updating currency rates (upsert on currency) +-- currency | rate | update_time +-- ---------+------+------------ +-- EUR | 1.1 | 10:00 +-- USD | 1.0 | 10:00 +-- EUR | 1.2 | 10:30 + +SELECT o.order_id, o.currency, o.amount, r.rate +FROM orders AS o +JOIN LATERAL TABLE(SNAPSHOT(input => TABLE currency_rates)) AS r +ON o.currency = r.currency; + +order_id currency amount rate +======== ======== ====== ==== + 1 EUR 10 1.1 -- rate as of 10:00 + 2 EUR 10 1.2 -- rate as of 10:30 + 3 USD 20 1.0 -- rate as of 10:00 +``` + +*Important:* The `LATERAL SNAPSHOT` join is non-deterministic. The order with `order_id = 2` could also have been joined with the `10:00` version of `EUR`. The result depends on the order in which the operator processes its inputs, which cannot be controlled. + +**When to use it** + +The `LATERAL SNAPSHOT` join is designed for enrichment scenarios where the other temporal joins are a poor fit: + +- **The build side does not receive continuous updates.** An event-time temporal join only emits a joined row once the combined watermark of both inputs has passed the event time of the probe-side row. A build side that does not continuously produce records, and therefore does not advance its watermark, stalls the join and lets probe-side state accumulate. A `LATERAL SNAPSHOT` join keeps making progress even when the build side is idle. +- **Low latency is required.** An event-time temporal join holds back probe-side rows until the watermark catches up, which adds latency. After the initial load phase, the `LATERAL SNAPSHOT` join immediately joins a probe-side row when it arrives. +- **The build side has no primary key.** Event-time and processing-time temporal joins require the build side to have a primary key that appears in the equi-join condition. A `LATERAL SNAPSHOT` join has no such requirement; neither the probe side nor the build side needs a primary key. + +**How the join works** + +A `LATERAL SNAPSHOT` join operates in two phases to avoid joining probe-side rows against an incomplete build side: +it first loads the build side up to a well-defined point in time (the *load phase*) before it starts joining (the *join phase*). + +During the *load phase*, the operator accumulates the build-side changes into state until the load-completion condition is met, without emitting any results yet. +Probe-side rows that arrive during the load phase are buffered. The load phase completes when one of the following occurs: + +- the build-side watermark reaches a configured `load_completed_time`. This time is either explicitly set by the user (`load_completed_condition => 'user_time'`) or automatically set to the wall-clock time when the query is compiled (`load_completed_condition => 'compile_time'`), or +- as a fallback, the `load_completed_idle_timeout` elapses in processing time without the build-side watermark advancing (which handles build sides that become idle during start-up). + +When the load phase completes, the operator transitions to the *join phase*: all buffered probe-side rows are joined against the current build-side state and emitted. +From then on, each probe-side row is joined and emitted immediately against the build-side state that is current at that moment. +Build-side updates continue to be applied to the state and become visible to subsequent probe-side rows. + +The load phase is what distinguishes a `LATERAL SNAPSHOT` join from the [processing-time temporal join](#processing-time-temporal-join), which has been disabled for Flink SQL. +The processing-time temporal join starts joining immediately at query start, so early probe-side rows are joined against whatever build-side data happens to have been loaded so far, producing missing or stale results that depend on the order in which the inputs are read. +By first loading the build side, a `LATERAL SNAPSHOT` join avoids this problem. + +**Syntax** + +The build side is wrapped in the `SNAPSHOT` table function inside a `LATERAL TABLE` clause. The outer (probe-side) table must be an append-only table. +Both `INNER JOIN` and `LEFT [OUTER] JOIN` are supported. The join requires at least one conjunctive equality predicate; additional non-equi predicates are allowed in the `ON` clause. + +```sql +SELECT [column_list] +FROM probe_table +[LEFT] JOIN LATERAL TABLE( + SNAPSHOT( + input => TABLE build_table, + [ load_completed_condition => <'compile_time' | 'user_time'>, ] + [ load_completed_time => , ] + [ load_completed_idle_timeout => , ] + [ state_ttl => ])) AS s +ON probe_table.col = s.col +``` + +The `SNAPSHOT` function accepts the following arguments: + +| Argument | Type | Required | Description | +| --- | --- | --- |-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| `input` | TABLE | yes | The build-side table. It may use any [changelog mode]({{< ref "docs/sql/reference/queries/changelog" >}}) (inserts, updates, and deletes). In streaming mode it must declare a [watermark]({{< ref "docs/concepts/sql-table-concepts/time_attributes" >}}#event-time). | +| `load_completed_condition` | STRING | no | Determines when the initial load phase completes. One of `'compile_time'` (default) or `'user_time'`. With `'compile_time'`, the load phase completes once the build-side watermark reaches the wall-clock time at which the query was compiled. With `'user_time'`, it completes once the build-side watermark reaches the explicit `load_completed_time`. | +| `load_completed_time` | TIMESTAMP_LTZ(3) | no | The build-side event time that completes the load phase. Required when `load_completed_condition` is `'user_time'` and must not be set otherwise. | +| `load_completed_idle_timeout` | INTERVAL | no | A processing-time fallback to complete the load phase. The transition to the join phase happens when the build-side watermark does not advance for more than the configured interval. | +| `state_ttl` | INTERVAL | no | Retention time for build-side state. Join keys that are not accessed within this duration become eligible for eviction. Only applied during the join phase. Defaults to the pipeline's [state TTL]({{< ref "docs/dev/table/config" >}}#table-exec-state-ttl). | + +`load_completed_condition`, `load_completed_time`, `load_completed_idle_timeout`, and `state_ttl` only affect streaming execution and are ignored in batch mode (see **Batch mode** below). + +**Result and state characteristics** + +The result is append-only and preserves the probe-side time attributes. A build-side rowtime attribute that is projected into the output is materialized as a regular `TIMESTAMP` and is no longer a time attribute. Probe-side watermarks are forwarded downstream during the join phase; build-side watermarks are consumed internally and are not propagated. + +Because rows are joined against the build-side state that is current at processing time, the result is **not deterministic**. A given probe-side row may be joined with different build-side versions across different runs, depending on the relative timing of the two inputs. Probe and build-side inputs can be configured with watermark alignment to keep the two inputs roughly aligned on event time, so that a probe-side row tends to be joined with build-side changes of a similar event time. This is a best-effort alignment and does not make the result deterministic. + +The build-side state grows with the number of distinct build-side keys, and during the load phase the buffered probe-side rows add to the state footprint until the operator transitions to the join phase. Use `state_ttl` to bound the build-side state for keys that are no longer updated or joined. You can reduce the amount of data that is buffered and processed during the load phase by configuring scan start offsets on the build and probe-side inputs, for example with a `scan.startup.*` [dynamic table option hint]({{< ref "docs/sql/reference/queries/hints" >}}#dynamic-table-options). + +**Batch mode** + +In batch mode, a `LATERAL SNAPSHOT` join is executed as a regular (`INNER` or `LEFT`) join between the probe side and the complete build side. Batch execution reads the entire build side before joining, so there is no load phase and no incremental state build-up. The streaming-specific arguments (`load_completed_condition`, `load_completed_time`, `load_completed_idle_timeout`, and `state_ttl`) are accepted but have no effect, and the build side does not need to declare a watermark. + +Because every probe-side row is joined against the final, complete build side, the batch result is **deterministic**. + Lookup Join -------------- From f16dd6e7c230ce92fd8c87c3122ba5e188416a02 Mon Sep 17 00:00:00 2001 From: Sergey Nuyanzin Date: Tue, 21 Jul 2026 19:26:35 +0200 Subject: [PATCH 15/32] [hotfix][ci] Bump checkout action to v7 --- .github/workflows/community-review.yml | 2 +- .github/workflows/docs-legacy.yml | 2 +- .github/workflows/docs.yml | 2 +- .github/workflows/nightly-trigger.yml | 2 +- .github/workflows/nightly.yml | 2 +- .github/workflows/template.flink-ci.yml | 8 ++++---- .github/workflows/template.pre-compile-checks.yml | 2 +- 7 files changed, 10 insertions(+), 10 deletions(-) diff --git a/.github/workflows/community-review.yml b/.github/workflows/community-review.yml index 5785f180af229b..2b27405cb0f529 100644 --- a/.github/workflows/community-review.yml +++ b/.github/workflows/community-review.yml @@ -38,7 +38,7 @@ jobs: if: github.repository_owner == 'apache' runs-on: ubuntu-latest steps: - - uses: actions/checkout@v5 + - uses: actions/checkout@v7 - run: | chmod +x ${{ github.workspace }}/.github/workflows/community-review.sh - name: Run community review script to set labels diff --git a/.github/workflows/docs-legacy.yml b/.github/workflows/docs-legacy.yml index 4a9bd5790dddc4..be138e54966f9c 100644 --- a/.github/workflows/docs-legacy.yml +++ b/.github/workflows/docs-legacy.yml @@ -47,7 +47,7 @@ jobs: if: github.repository == 'apache/flink' runs-on: ubuntu-latest steps: - - uses: actions/checkout@v5 + - uses: actions/checkout@v7 with: ref: ${{ inputs.branch }} diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index 1bdb6b97ac13ad..a91095ee897f30 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -39,7 +39,7 @@ jobs: - release-1.20 - release-1.19 steps: - - uses: actions/checkout@v5 + - uses: actions/checkout@v7 with: ref: ${{ matrix.branch }} diff --git a/.github/workflows/nightly-trigger.yml b/.github/workflows/nightly-trigger.yml index 326195989651e7..682b66e42633d7 100644 --- a/.github/workflows/nightly-trigger.yml +++ b/.github/workflows/nightly-trigger.yml @@ -40,7 +40,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout - uses: actions/checkout@v5 + uses: actions/checkout@v7 with: sparse-checkout: | .github/actions/last_workflow_run diff --git a/.github/workflows/nightly.yml b/.github/workflows/nightly.yml index a7a56ae9506982..70c6f8d09e606e 100644 --- a/.github/workflows/nightly.yml +++ b/.github/workflows/nightly.yml @@ -90,7 +90,7 @@ jobs: os_name: macos steps: - name: "Checkout the repository" - uses: actions/checkout@v5 + uses: actions/checkout@v7 with: fetch-depth: 0 persist-credentials: false diff --git a/.github/workflows/template.flink-ci.yml b/.github/workflows/template.flink-ci.yml index 532263ee7cdd38..38fde30363367c 100644 --- a/.github/workflows/template.flink-ci.yml +++ b/.github/workflows/template.flink-ci.yml @@ -83,7 +83,7 @@ jobs: stringified-workflow-name: ${{ steps.workflow-prep-step.outputs.stringified_value }} steps: - name: "Flink Checkout" - uses: actions/checkout@v5 + uses: actions/checkout@v7 with: persist-credentials: false @@ -145,7 +145,7 @@ jobs: steps: - name: "Flink Checkout" - uses: actions/checkout@v5 + uses: actions/checkout@v7 with: persist-credentials: false sparse-checkout: | @@ -220,7 +220,7 @@ jobs: steps: - name: "Flink Checkout" - uses: actions/checkout@v5 + uses: actions/checkout@v7 with: persist-credentials: false sparse-checkout: | @@ -370,7 +370,7 @@ jobs: steps: - name: "Flink Checkout" - uses: actions/checkout@v5 + uses: actions/checkout@v7 with: persist-credentials: false sparse-checkout: | diff --git a/.github/workflows/template.pre-compile-checks.yml b/.github/workflows/template.pre-compile-checks.yml index a01802d77bec9a..8975f5c7b842fa 100644 --- a/.github/workflows/template.pre-compile-checks.yml +++ b/.github/workflows/template.pre-compile-checks.yml @@ -50,7 +50,7 @@ jobs: steps: - name: "Flink Checkout" - uses: actions/checkout@v5 + uses: actions/checkout@v7 with: persist-credentials: false From db8a7f74fd93cb1d28823a292d57207ffccb2f88 Mon Sep 17 00:00:00 2001 From: Zihao Chen Date: Mon, 6 Jul 2026 11:17:05 +0800 Subject: [PATCH 16/32] [FLINK-40097][historyserver] Lazily load archives to expose job overviews earlier --- .../history_server_configuration.html | 12 + .../configuration/HistoryServerOptions.java | 40 ++ .../webmonitor/history/ArchiveMetaInfo.java | 44 ++ .../webmonitor/history/HistoryServer.java | 48 ++- ...istoryServerApplicationArchiveFetcher.java | 67 ++- .../history/HistoryServerArchiveFetcher.java | 188 +++++++- ...ryServerApplicationArchiveFetcherTest.java | 406 ++++++++++++++++++ .../HistoryServerArchiveFetcherTest.java | 355 +++++++++++++++ .../webmonitor/history/HistoryServerTest.java | 104 +---- .../history/HistoryServerTestUtils.java | 295 +++++++++++++ 10 files changed, 1422 insertions(+), 137 deletions(-) create mode 100644 flink-runtime-web/src/main/java/org/apache/flink/runtime/webmonitor/history/ArchiveMetaInfo.java create mode 100644 flink-runtime-web/src/test/java/org/apache/flink/runtime/webmonitor/history/HistoryServerApplicationArchiveFetcherTest.java create mode 100644 flink-runtime-web/src/test/java/org/apache/flink/runtime/webmonitor/history/HistoryServerArchiveFetcherTest.java create mode 100644 flink-runtime-web/src/test/java/org/apache/flink/runtime/webmonitor/history/HistoryServerTestUtils.java diff --git a/docs/layouts/shortcodes/generated/history_server_configuration.html b/docs/layouts/shortcodes/generated/history_server_configuration.html index 896c68135636e7..6048ea7d5ee4c7 100644 --- a/docs/layouts/shortcodes/generated/history_server_configuration.html +++ b/docs/layouts/shortcodes/generated/history_server_configuration.html @@ -32,6 +32,12 @@ Duration Interval for refreshing the archived job directories. + +
historyserver.archive.load.mode
+ EAGER +

Enum

+ The mode that HistoryServer loads archives.

Possible values:
  • "EAGER"
  • "LAZY"
+
historyserver.archive.retained-applications
-1 @@ -56,6 +62,12 @@

Enum

The type of archive storage.

Possible values:
  • "FILE"
  • "ROCKSDB"
+ +
historyserver.lazy.fetch.executor.common.pool-size
+ 4 + Integer + The size of the common pool for archive fetching. +
historyserver.log.jobmanager.url-pattern
(none) diff --git a/flink-core/src/main/java/org/apache/flink/configuration/HistoryServerOptions.java b/flink-core/src/main/java/org/apache/flink/configuration/HistoryServerOptions.java index c90f92ccc3d647..1e34bcc3656b9b 100644 --- a/flink-core/src/main/java/org/apache/flink/configuration/HistoryServerOptions.java +++ b/flink-core/src/main/java/org/apache/flink/configuration/HistoryServerOptions.java @@ -257,6 +257,33 @@ public class HistoryServerOptions { .text("The type of archive storage.") .build()); + /** + * The mode that HistoryServer loads archives. + * + *
    + *
  • EAGER: Loads all archives by scheduled executor. + *
  • LAZY: Loads archives asynchronously only when requested. + *
+ */ + public static final ConfigOption + HISTORY_SERVER_ARCHIVE_LOAD_MODE = + key("historyserver.archive.load.mode") + .enumType(HistoryServerArchiveLoadMode.class) + .defaultValue(HistoryServerArchiveLoadMode.EAGER) + .withDescription( + Description.builder() + .text("The mode that HistoryServer loads archives.") + .build()); + + public static final ConfigOption HISTORY_SERVER_LAZY_FETCH_EXECUTOR_COMMON_POOL_SIZE = + key("historyserver.lazy.fetch.executor.common.pool-size") + .intType() + .defaultValue(4) + .withDescription( + Description.builder() + .text("The size of the common pool for archive fetching.") + .build()); + /** The type of archive storage. */ public enum HistoryServerArchiveStorageType { /** Local file system. */ @@ -266,5 +293,18 @@ public enum HistoryServerArchiveStorageType { ROCKSDB } + /** The mode that HistoryServer loads archives. */ + public enum HistoryServerArchiveLoadMode { + + /** + * Eager mode (default). Archive files will be downloaded and persisted with the default + * retention behavior. + */ + EAGER, + + /** Lazy mode. Archive files will be downloaded and persisted if necessary. */ + LAZY + } + private HistoryServerOptions() {} } diff --git a/flink-runtime-web/src/main/java/org/apache/flink/runtime/webmonitor/history/ArchiveMetaInfo.java b/flink-runtime-web/src/main/java/org/apache/flink/runtime/webmonitor/history/ArchiveMetaInfo.java new file mode 100644 index 00000000000000..710868803ddce6 --- /dev/null +++ b/flink-runtime-web/src/main/java/org/apache/flink/runtime/webmonitor/history/ArchiveMetaInfo.java @@ -0,0 +1,44 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.flink.runtime.webmonitor.history; + +/** Meta info for archived job. */ +public class ArchiveMetaInfo { + + private final String archiveId; + private volatile HistoryServerArchiveFetcher.ArchiveEventType eventType; + + public ArchiveMetaInfo( + String archiveId, HistoryServerArchiveFetcher.ArchiveEventType eventType) { + this.archiveId = archiveId; + this.eventType = eventType; + } + + public String getArchiveId() { + return archiveId; + } + + public HistoryServerArchiveFetcher.ArchiveEventType getEventType() { + return eventType; + } + + public void setEventType(HistoryServerArchiveFetcher.ArchiveEventType eventType) { + this.eventType = eventType; + } +} diff --git a/flink-runtime-web/src/main/java/org/apache/flink/runtime/webmonitor/history/HistoryServer.java b/flink-runtime-web/src/main/java/org/apache/flink/runtime/webmonitor/history/HistoryServer.java index ed59bf2db4c3fc..d3e77c035da689 100644 --- a/flink-runtime-web/src/main/java/org/apache/flink/runtime/webmonitor/history/HistoryServer.java +++ b/flink-runtime-web/src/main/java/org/apache/flink/runtime/webmonitor/history/HistoryServer.java @@ -68,6 +68,7 @@ import java.util.UUID; import java.util.concurrent.Callable; import java.util.concurrent.CompletableFuture; +import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.CountDownLatch; import java.util.concurrent.Executors; import java.util.concurrent.ScheduledExecutorService; @@ -75,6 +76,7 @@ import java.util.concurrent.atomic.AtomicBoolean; import java.util.function.Consumer; +import static org.apache.flink.configuration.HistoryServerOptions.HISTORY_SERVER_LAZY_FETCH_EXECUTOR_COMMON_POOL_SIZE; import static org.apache.flink.runtime.webmonitor.history.HistoryServerApplicationArchiveFetcher.APPLICATIONS_SUBDIR; import static org.apache.flink.runtime.webmonitor.history.HistoryServerApplicationArchiveFetcher.APPLICATION_OVERVIEWS_SUBDIR; import static org.apache.flink.runtime.webmonitor.history.HistoryServerArchiveFetcher.JOBS_SUBDIR; @@ -141,6 +143,7 @@ public class HistoryServer { private final Thread shutdownHook; private final ArchiveStorage archiveStorage; + private final HistoryServerOptions.HistoryServerArchiveLoadMode archiveLoadMode; private final AbstractHistoryServerHandler historyServerHandler; public static void main(String[] args) throws Exception { @@ -250,10 +253,10 @@ public HistoryServer( throw new FlinkException( "Failed to validate any of the configured directories to monitor."); } - refreshIntervalMillis = config.get(HistoryServerOptions.HISTORY_SERVER_ARCHIVE_REFRESH_INTERVAL).toMillis(); + archiveLoadMode = config.get(HistoryServerOptions.HISTORY_SERVER_ARCHIVE_LOAD_MODE); HistoryServerOptions.HistoryServerArchiveStorageType archiveStorageType = config.get(HistoryServerOptions.HISTORY_SERVER_ARCHIVE_STORAGE_TYPE); switch (archiveStorageType) { @@ -280,6 +283,11 @@ public HistoryServer( throw new FlinkException("Unsupported archive storage type: " + archiveStorageType); } + ConcurrentHashMap archiveMetaInfoCache = new ConcurrentHashMap<>(); + ConcurrentHashMap applicationArchiveMetaInfoCache = + new ConcurrentHashMap<>(); + int lazyFetchExecutorCommonPoolSize = + config.get(HISTORY_SERVER_LAZY_FETCH_EXECUTOR_COMMON_POOL_SIZE); archiveFetcher = new HistoryServerArchiveFetcher<>( refreshDirs, @@ -287,7 +295,9 @@ public HistoryServer( jobArchiveEventListener, cleanupExpiredJobs, CompositeArchiveRetainedStrategy.createForJobFromConfig(config), - archiveStorage); + archiveStorage, + archiveMetaInfoCache, + lazyFetchExecutorCommonPoolSize); applicationArchiveFetcher = new HistoryServerApplicationArchiveFetcher<>( refreshDirs, @@ -295,7 +305,10 @@ public HistoryServer( applicationArchiveEventListener, cleanupExpiredApplications, CompositeArchiveRetainedStrategy.createForApplicationFromConfig(config), - archiveStorage); + archiveStorage, + archiveMetaInfoCache, + applicationArchiveMetaInfoCache, + lazyFetchExecutorCommonPoolSize); this.shutdownHook = ShutdownHookUtil.addShutdownHook( @@ -337,7 +350,7 @@ int getWebPort() { @VisibleForTesting void fetchArchives() { - executor.execute(getArchiveFetchingRunnable()); + executor.execute(getArchiveFetchingRunnable(archiveLoadMode)); } public void run() { @@ -384,11 +397,13 @@ void start() throws IOException, InterruptedException { CompletableFuture.completedFuture(pattern)))); createDashboardConfigFile(); - router.addGet("/:*", historyServerHandler); executor.scheduleWithFixedDelay( - getArchiveFetchingRunnable(), 0, refreshIntervalMillis, TimeUnit.MILLISECONDS); + getArchiveFetchingRunnable(archiveLoadMode), + 0, + refreshIntervalMillis, + TimeUnit.MILLISECONDS); netty = new WebFrontendBootstrap( @@ -396,11 +411,12 @@ void start() throws IOException, InterruptedException { } } - private Runnable getArchiveFetchingRunnable() { + private Runnable getArchiveFetchingRunnable( + HistoryServerOptions.HistoryServerArchiveLoadMode archiveLoadMode) { return Runnables.withUncaughtExceptionHandler( () -> { - archiveFetcher.fetchArchives(); - applicationArchiveFetcher.fetchArchives(); + archiveFetcher.fetchArchives(archiveLoadMode); + applicationArchiveFetcher.fetchArchives(archiveLoadMode); }, FatalExitExceptionHandler.INSTANCE); } @@ -424,6 +440,18 @@ void stop() { LOG.warn("Error while closing archive storage.", t); } + try { + archiveFetcher.close(); + } catch (Throwable t) { + LOG.warn("Error while closing archive fetcher.", t); + } + + try { + applicationArchiveFetcher.close(); + } catch (Throwable t) { + LOG.warn("Error while closing application archive fetcher.", t); + } + try { LOG.info("Removing web dashboard root cache directory {}", webDir); FileUtils.deleteDirectory(webDir); @@ -466,7 +494,7 @@ static class RefreshLocation { private final Path path; private final FileSystem fs; - private RefreshLocation(Path path, FileSystem fs) { + RefreshLocation(Path path, FileSystem fs) { this.path = path; this.fs = fs; } diff --git a/flink-runtime-web/src/main/java/org/apache/flink/runtime/webmonitor/history/HistoryServerApplicationArchiveFetcher.java b/flink-runtime-web/src/main/java/org/apache/flink/runtime/webmonitor/history/HistoryServerApplicationArchiveFetcher.java index 10b8161b95bd80..f3b479aaf16aa7 100644 --- a/flink-runtime-web/src/main/java/org/apache/flink/runtime/webmonitor/history/HistoryServerApplicationArchiveFetcher.java +++ b/flink-runtime-web/src/main/java/org/apache/flink/runtime/webmonitor/history/HistoryServerApplicationArchiveFetcher.java @@ -42,8 +42,13 @@ import java.util.List; import java.util.Map; import java.util.Set; +import java.util.concurrent.ConcurrentHashMap; import java.util.function.Consumer; +import static org.apache.flink.configuration.HistoryServerOptions.HistoryServerArchiveLoadMode.EAGER; +import static org.apache.flink.configuration.HistoryServerOptions.HistoryServerArchiveLoadMode.LAZY; +import static org.apache.flink.runtime.webmonitor.history.HistoryServerArchiveFetcher.ArchiveEventType.OVERVIEW_PARSING; + /** * This class is used by the {@link HistoryServer} to fetch the application and job archives that * are located at {@link HistoryServerOptions#HISTORY_SERVER_ARCHIVE_DIRS}. The directories are @@ -73,21 +78,29 @@ public class HistoryServerApplicationArchiveFetcher private final Map>> cachedApplicationIdsToJobIds = new HashMap<>(); + private final ConcurrentHashMap applicationArchiveMetaInfoCache; + HistoryServerApplicationArchiveFetcher( List refreshDirs, File webDir, - Consumer archiveEventListener, + Consumer archiveEventListener, boolean cleanupExpiredArchives, ArchiveRetainedStrategy retainedStrategy, - ArchiveStorage archiveStorage) { + ArchiveStorage archiveStorage, + ConcurrentHashMap archiveMetaInfoCache, + ConcurrentHashMap applicationArchiveMetaInfoCache, + int lazyFetchExecutorCommonPoolSize) { super( refreshDirs, webDir, archiveEventListener, cleanupExpiredArchives, retainedStrategy, - archiveStorage); + archiveStorage, + archiveMetaInfoCache, + lazyFetchExecutorCommonPoolSize); + this.applicationArchiveMetaInfoCache = applicationArchiveMetaInfoCache; for (HistoryServer.RefreshLocation refreshDir : refreshDirs) { cachedApplicationIdsToJobIds.put(refreshDir.getPath(), new HashMap<>()); } @@ -143,7 +156,16 @@ private boolean isValidId(String id, Path refreshDir) { @Override List processArchive(String archiveId, Path archivePath, Path refreshDir) - throws IOException { + throws Exception { + return processArchive(archiveId, archivePath, refreshDir, EAGER); + } + + List processArchive( + String archiveId, + Path archivePath, + Path refreshDir, + HistoryServerOptions.HistoryServerArchiveLoadMode archiveLoadMode) + throws Exception { FileSystem fs = archivePath.getFileSystem(); Path applicationArchive = new Path(archivePath, ArchivePathUtils.APPLICATION_ARCHIVE_NAME); if (!fs.exists(applicationArchive)) { @@ -162,7 +184,11 @@ List processArchive(String archiveId, Path archivePath, Path refre .get(refreshDir) .computeIfAbsent(archiveId, k -> new HashSet<>()) .add(jobId); - events.add(processJobArchive(jobId, jobArchive.getPath())); + ArchiveEvent processArchiveEvents = + LAZY.equals(archiveLoadMode) + ? lazyProcessJobArchive(jobId, jobArchive.getPath()) + : processJobArchive(jobId, jobArchive.getPath()); + events.add(processArchiveEvents); } return events; @@ -234,6 +260,7 @@ private ArchiveEvent deleteApplicationFiles(String applicationId) { LOG.warn("Could not delete file from application directory.", ioe); } + applicationArchiveMetaInfoCache.remove(applicationId); return new ArchiveEvent(applicationId, ArchiveEventType.DELETED); } @@ -282,4 +309,34 @@ private void updateApplicationOverview() { LOG.error("Failed to update application overview.", e); } } + + @Override + List lazyProcessArchive(String archiveId, Path archivePath, Path refreshDir) + throws Exception { + List events = new ArrayList<>(); + ArchiveMetaInfo archiveMetaInfo = new ArchiveMetaInfo(archiveId, OVERVIEW_PARSING); + ArchiveMetaInfo existing = + applicationArchiveMetaInfoCache.putIfAbsent(archiveId, archiveMetaInfo); + if (existing != null) { + events.add(new ArchiveEvent(archiveId, existing.getEventType())); + return events; + } + + events.addAll(processArchive(archiveId, archivePath, refreshDir, LAZY)); + + archiveMetaInfo.setEventType(ArchiveEventType.CREATED); + return events; + } + + @Override + void cleanUpLazyFetchTask(String archiveId) { + for (HistoryServer.RefreshLocation refreshDir : refreshDirs) { + Path refreshDirPath = refreshDir.getPath(); + if (cachedApplicationIdsToJobIds.get(refreshDirPath).containsKey(archiveId)) { + Set jobIds = + cachedApplicationIdsToJobIds.get(refreshDirPath).get(archiveId); + jobIds.forEach(super::cleanUpLazyFetchTask); + } + } + } } diff --git a/flink-runtime-web/src/main/java/org/apache/flink/runtime/webmonitor/history/HistoryServerArchiveFetcher.java b/flink-runtime-web/src/main/java/org/apache/flink/runtime/webmonitor/history/HistoryServerArchiveFetcher.java index e64114ef3da1b7..2de41ed8091d1c 100644 --- a/flink-runtime-web/src/main/java/org/apache/flink/runtime/webmonitor/history/HistoryServerArchiveFetcher.java +++ b/flink-runtime-web/src/main/java/org/apache/flink/runtime/webmonitor/history/HistoryServerArchiveFetcher.java @@ -30,6 +30,8 @@ import org.apache.flink.runtime.messages.webmonitor.MultipleJobsDetails; import org.apache.flink.runtime.rest.messages.JobsOverviewHeaders; import org.apache.flink.runtime.webmonitor.history.retaining.ArchiveRetainedStrategy; +import org.apache.flink.util.ExecutorUtils; +import org.apache.flink.util.concurrent.ExecutorThreadFactory; import org.apache.flink.util.jackson.JacksonMapperFactory; import org.apache.flink.shaded.jackson2.com.fasterxml.jackson.databind.JsonNode; @@ -50,8 +52,15 @@ import java.util.List; import java.util.Map; import java.util.Set; +import java.util.concurrent.ConcurrentHashMap; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; +import java.util.concurrent.Future; +import java.util.concurrent.TimeUnit; import java.util.function.Consumer; +import static org.apache.flink.configuration.HistoryServerOptions.HistoryServerArchiveLoadMode.LAZY; +import static org.apache.flink.runtime.webmonitor.history.HistoryServerArchiveFetcher.ArchiveEventType.PENDING; import static org.apache.flink.util.Preconditions.checkNotNull; /** @@ -66,10 +75,18 @@ * * @param the type of entries returned by the underlying {@link ArchiveStorage}. */ -public class HistoryServerArchiveFetcher { +public class HistoryServerArchiveFetcher implements AutoCloseable { /** Possible archive operations in history-server. */ public enum ArchiveEventType { + /** Archive is pending to be processed. */ + PENDING, + /** Overview content is currently parsing. */ + OVERVIEW_PARSING, + /** Overview content of archive was parsed and created in history server successfully. */ + OVERVIEW_CREATED, + /** Detail content of archive is currently parsing. */ + DETAIL_PARSING, /** Archive was found in one refresh location and created in history server. */ CREATED, /** Archive was deleted from one of refresh locations and deleted from history server. */ @@ -115,13 +132,21 @@ public ArchiveEventType getType() { protected final ArchiveStorage archiveStorage; + /** Executor for loading archives. */ + private final ExecutorService commonFetchExecutor; + + private final Map> commonFetchTasks; + private final ConcurrentHashMap archiveMetaInfoCache; + HistoryServerArchiveFetcher( List refreshDirs, File webDir, Consumer archiveEventListener, boolean cleanupExpiredArchives, ArchiveRetainedStrategy retainedStrategy, - ArchiveStorage archiveStorage) { + ArchiveStorage archiveStorage, + ConcurrentHashMap archiveMetaInfoCache, + int lazyFetchExecutorCommonPoolSize) { this.refreshDirs = checkNotNull(refreshDirs); this.archiveEventListener = archiveEventListener; this.processExpiredArchiveDeletion = cleanupExpiredArchives; @@ -132,6 +157,12 @@ public ArchiveEventType getType() { } checkNotNull(webDir); this.archiveStorage = archiveStorage; + this.archiveMetaInfoCache = archiveMetaInfoCache; + this.commonFetchExecutor = + Executors.newFixedThreadPool( + lazyFetchExecutorCommonPoolSize, + new ExecutorThreadFactory("HistoryServer-commonFetchExecutor")); + this.commonFetchTasks = new ConcurrentHashMap<>(); updateJobOverview(); if (LOG.isInfoEnabled()) { @@ -141,9 +172,9 @@ public ArchiveEventType getType() { } } - void fetchArchives() { + void fetchArchives(HistoryServerOptions.HistoryServerArchiveLoadMode archiveLoadMode) { + LOG.debug("Starting archive fetching."); try { - LOG.debug("Starting archive fetching."); List events = new ArrayList<>(); Map> archivesToRemove = new HashMap<>(); cachedArchivesPerRefreshDirectory.forEach( @@ -180,28 +211,16 @@ void fetchArchives() { continue; } - if (cachedArchivesPerRefreshDirectory.get(refreshDir).contains(archiveId)) { - LOG.trace( - "Ignoring archive {} because it was already fetched.", archivePath); - } else { - LOG.info("Processing archive {}.", archivePath); - try { - events.addAll(processArchive(archiveId, archivePath, refreshDir)); - cachedArchivesPerRefreshDirectory.get(refreshDir).add(archiveId); - LOG.info("Processing archive {} finished.", archivePath); - } catch (IOException e) { - LOG.error( - "Failure while fetching/processing archive {}.", archiveId, e); - deleteCachedArchives(archiveId, refreshDir); - } - } + fetchArchive(refreshDir, archiveId, archivePath, archiveLoadMode, events); } } + // clean local if (archivesToRemove.values().stream().flatMap(Set::stream).findAny().isPresent() && processExpiredArchiveDeletion) { events.addAll(cleanupExpiredArchives(archivesToRemove)); } + // clean remote and local if (!archivesBeyondRetainedLimit.isEmpty()) { events.addAll(cleanupArchivesBeyondRetainedLimit(archivesBeyondRetainedLimit)); } @@ -215,6 +234,32 @@ void fetchArchives() { } } + private void fetchArchive( + Path refreshDir, + String archiveId, + Path archivePath, + HistoryServerOptions.HistoryServerArchiveLoadMode archiveLoadMode, + List events) + throws Exception { + if (cachedArchivesPerRefreshDirectory.get(refreshDir).contains(archiveId)) { + LOG.trace("Ignoring archive {} because it was already fetched.", archivePath); + } else { + LOG.info("Processing archive {}.", archivePath); + try { + List processArchiveEvents = + LAZY.equals(archiveLoadMode) + ? lazyProcessArchive(archiveId, archivePath, refreshDir) + : processArchive(archiveId, archivePath, refreshDir); + events.addAll(processArchiveEvents); + cachedArchivesPerRefreshDirectory.get(refreshDir).add(archiveId); + LOG.info("Processing archive {} finished.", archivePath); + } catch (Exception e) { + LOG.error("Failure while fetching/processing archive {}.", archiveId, e); + deleteCachedArchives(archiveId, refreshDir); + } + } + } + List listValidArchives(FileSystem refreshFS, Path refreshDir) throws IOException { return listValidJobArchives(refreshFS, refreshDir); } @@ -255,7 +300,7 @@ boolean isValidJobId(String jobId, Path refreshDir) { } List processArchive(String archiveId, Path archivePath, Path refreshDir) - throws IOException { + throws Exception { return Collections.singletonList(processJobArchive(archiveId, archivePath)); } @@ -314,8 +359,10 @@ List cleanupExpiredArchives(Map> archivesToRemov (refreshDir, archives) -> { cachedArchivesPerRefreshDirectory.get(refreshDir).removeAll(archives); archives.forEach( - archiveId -> - deleteLog.addAll(deleteCachedArchives(archiveId, refreshDir))); + archiveId -> { + cleanUpLazyFetchTask(archiveId); + deleteLog.addAll(deleteCachedArchives(archiveId, refreshDir)); + }); }); return deleteLog; @@ -348,6 +395,7 @@ ArchiveEvent deleteJobFiles(String jobId) { LOG.warn("Could not delete file from job directory.", ioe); } + archiveMetaInfoCache.remove(jobId); return new ArchiveEvent(jobId, ArchiveEventType.DELETED); } @@ -458,4 +506,100 @@ void updateJobOverview() { LOG.error("Failed to update job overview.", e); } } + + // -------------------------------- Lazy Load ---------------------------------------- + List lazyProcessArchive(String archiveId, Path archivePath, Path refreshDir) + throws Exception { + return Collections.singletonList(lazyProcessJobArchive(archiveId, archivePath)); + } + + ArchiveEvent lazyProcessJobArchive(String jobId, Path jobArchive) throws Exception { + final ArchiveMetaInfo archiveMetaInfo = new ArchiveMetaInfo(jobId, PENDING); + ArchiveMetaInfo existing = archiveMetaInfoCache.putIfAbsent(jobId, archiveMetaInfo); + if (existing != null) { + return new ArchiveEvent(jobId, existing.getEventType()); + } + archiveMetaInfo.setEventType(ArchiveEventType.OVERVIEW_PARSING); + + Collection archivedJsons = FsJsonArchivist.readArchivedJsons(jobArchive); + List detailArchives = new ArrayList<>(); + boolean overviewCreated = false; + + for (ArchivedJson archive : archivedJsons) { + String path = archive.getPath(); + String json = archive.getJson(); + + if (path.equals(JobsOverviewHeaders.URL)) { + String key = JOB_OVERVIEWS_KEY_PREFIX + jobId + JSON_FILE_ENDING; + archiveStorage.putArchiveContent(key, json); + overviewCreated = true; + } else if (path.equals("/joboverview")) { // legacy path + LOG.debug("Migrating legacy archive {}", jobArchive); + json = convertLegacyJobOverview(json); + String key = JOB_OVERVIEWS_KEY_PREFIX + jobId + JSON_FILE_ENDING; + archiveStorage.putArchiveContent(key, json); + overviewCreated = true; + } else if (path.equals("/jobs/" + jobId)) { + String key = JOBS_KEY_PREFIX + jobId + JSON_FILE_ENDING; + archiveStorage.putArchiveContent(key, json); + } else { + detailArchives.add(archive); + } + } + + if (!overviewCreated && detailArchives.isEmpty()) { + archiveMetaInfoCache.remove(jobId); + throw new RuntimeException("Archive of job " + jobId + " is empty"); + } + + if (!detailArchives.isEmpty()) { + Future future = + commonFetchExecutor.submit( + () -> { + try { + archiveMetaInfo.setEventType(ArchiveEventType.DETAIL_PARSING); + for (ArchivedJson archive : detailArchives) { + String path = archive.getPath(); + String json = archive.getJson(); + // this implicitly writes into webJobDir; strip the leading + // '/' from the + // REST path so that the key is a relative sub-path under + // the storage root + String key = path.substring(1) + JSON_FILE_ENDING; + try { + archiveStorage.putArchiveContent(key, json); + } catch (IOException e) { + LOG.error( + "Failed to write detail archive file for job {}, path {}.", + jobId, + path, + e); + } + } + archiveMetaInfo.setEventType(ArchiveEventType.CREATED); + LOG.debug("Async detail parsing for job {} finished.", jobId); + } finally { + commonFetchTasks.remove(jobId); + } + }); + commonFetchTasks.put(jobId, future); + } + + ArchiveEventType archiveEventType = + overviewCreated ? ArchiveEventType.OVERVIEW_CREATED : ArchiveEventType.CREATED; + archiveMetaInfo.setEventType(archiveEventType); + return new ArchiveEvent(jobId, archiveEventType); + } + + void cleanUpLazyFetchTask(String jobId) { + Future commonFetchTask = commonFetchTasks.get(jobId); + if (commonFetchTask != null) { + commonFetchTask.cancel(true); + } + } + + @Override + public void close() { + ExecutorUtils.gracefulShutdown(1L, TimeUnit.SECONDS, commonFetchExecutor); + } } diff --git a/flink-runtime-web/src/test/java/org/apache/flink/runtime/webmonitor/history/HistoryServerApplicationArchiveFetcherTest.java b/flink-runtime-web/src/test/java/org/apache/flink/runtime/webmonitor/history/HistoryServerApplicationArchiveFetcherTest.java new file mode 100644 index 00000000000000..8775be5eb7aaef --- /dev/null +++ b/flink-runtime-web/src/test/java/org/apache/flink/runtime/webmonitor/history/HistoryServerApplicationArchiveFetcherTest.java @@ -0,0 +1,406 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.flink.runtime.webmonitor.history; + +import org.apache.flink.api.common.ApplicationID; +import org.apache.flink.api.common.JobID; +import org.apache.flink.core.fs.Path; +import org.apache.flink.runtime.history.ArchivePathUtils; +import org.apache.flink.runtime.history.FsJsonArchivist; +import org.apache.flink.runtime.messages.webmonitor.ApplicationDetails; +import org.apache.flink.runtime.messages.webmonitor.MultipleApplicationsDetails; +import org.apache.flink.runtime.rest.messages.ApplicationsOverviewHeaders; +import org.apache.flink.testutils.junit.extensions.parameterized.Parameter; +import org.apache.flink.testutils.junit.extensions.parameterized.ParameterizedTestExtension; +import org.apache.flink.testutils.junit.extensions.parameterized.Parameters; + +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.TestTemplate; +import org.junit.jupiter.api.extension.ExtendWith; +import org.junit.jupiter.api.io.TempDir; + +import java.io.File; +import java.nio.file.Files; +import java.util.ArrayList; +import java.util.Collection; +import java.util.Collections; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.concurrent.ConcurrentHashMap; +import java.util.concurrent.TimeUnit; +import java.util.stream.Collectors; + +import static org.apache.flink.configuration.ClusterOptions.CLUSTER_ID; +import static org.apache.flink.configuration.HistoryServerOptions.HistoryServerArchiveLoadMode.EAGER; +import static org.apache.flink.configuration.HistoryServerOptions.HistoryServerArchiveLoadMode.LAZY; +import static org.apache.flink.runtime.webmonitor.history.HistoryServerArchiveFetcher.ArchiveEventType.CREATED; +import static org.apache.flink.runtime.webmonitor.history.HistoryServerArchiveFetcher.ArchiveEventType.DETAIL_PARSING; +import static org.apache.flink.runtime.webmonitor.history.HistoryServerArchiveFetcher.ArchiveEventType.OVERVIEW_CREATED; +import static org.apache.flink.runtime.webmonitor.history.HistoryServerTestUtils.OBJECT_MAPPER; +import static org.apache.flink.runtime.webmonitor.history.HistoryServerTestUtils.RETAIN_ALL; +import static org.apache.flink.runtime.webmonitor.history.HistoryServerTestUtils.createJobArchive; +import static org.apache.flink.runtime.webmonitor.history.HistoryServerTestUtils.createRefreshLocation; +import static org.apache.flink.runtime.webmonitor.history.HistoryServerTestUtils.waitForArchiveLoaded; +import static org.assertj.core.api.Assertions.assertThat; +import static org.assertj.core.api.Assertions.assertThatThrownBy; + +/** + * Tests for {@link HistoryServerApplicationArchiveFetcher}. Only application-specific behaviours + * that are NOT covered by {@link HistoryServerArchiveFetcherTest} are tested here. + */ +@ExtendWith(ParameterizedTestExtension.class) +class HistoryServerApplicationArchiveFetcherTest { + + private static final String DEFAULT_CLUSTER_ID = CLUSTER_ID.defaultValue(); + + @TempDir File remoteArchiveRootPath; + @TempDir File localArchiveRootPath; + + @Parameter public ArchiveStorageFactory storageFactory; + + private ArchiveStorage archiveStorage; + + private ConcurrentHashMap jobMetaInfoCache; + private ConcurrentHashMap applicationMetaInfoCache; + private List archiveEvents; + + @Parameters(name = "storageFactory={0}") + private static Collection> storageFactories() { + ArchiveStorageFactory fileArchiveStorageFactory = FileArchiveStorage::new; + ArchiveStorageFactory rocksDBStorageFactory = RocksDBArchiveStorage::new; + return List.of(fileArchiveStorageFactory, rocksDBStorageFactory); + } + + /** Creates an {@link ArchiveStorage} instance under the given temporary directory. */ + @FunctionalInterface + interface ArchiveStorageFactory { + ArchiveStorage create(File tempDir) throws Exception; + } + + @BeforeEach + void setUp() throws Exception { + jobMetaInfoCache = new ConcurrentHashMap<>(); + applicationMetaInfoCache = new ConcurrentHashMap<>(); + archiveEvents = new ArrayList<>(); + archiveStorage = storageFactory.create(localArchiveRootPath); + } + + @AfterEach + void tearDown() throws Exception { + archiveEvents.clear(); + if (archiveStorage != null) { + archiveStorage.close(); + archiveStorage = null; + } + } + + /** + * Create an application archive at {@code remoteArchiveRootPath//applications/ + * /} which contains an {@code application-summary} archive (representing the + * application overview) and one job archive per job in {@code jobs/}. + * + *
{@code
+     * remoteArchiveRootPath/
+     * ├── /
+     * │   └── applications/
+     * │       ├── /
+     * │       │   ├── application-summary
+     * │       │   └── jobs/
+     * │       │       ├── 
+     * │       │       └── ...
+     * │       └── ...
+     * }
+ * + * @param applicationId application id (must be a hex string parseable by {@link + * ApplicationID#fromHexString}) + * @param jobIds job ids whose archives are to be placed under the {@code jobs/} subdir + * @return the application archive directory path + */ + private Path createApplicationArchive(String applicationId, List jobIds) + throws Exception { + File applicationDir = + new File( + remoteArchiveRootPath, + DEFAULT_CLUSTER_ID + + "/" + + ArchivePathUtils.APPLICATIONS_DIR + + "/" + + applicationId); + Files.createDirectories(applicationDir.toPath()); + + // Write application-summary archive (the application overview entry). + ApplicationID appId = ApplicationID.fromHexString(applicationId); + Map jobInfo = new HashMap<>(); + jobInfo.put("FINISHED", jobIds.size()); + ApplicationDetails applicationDetails = + new ApplicationDetails(appId, "test-app", 0L, 1L, 1L, "FINISHED", jobInfo); + String applicationOverviewJson = + OBJECT_MAPPER.writeValueAsString( + new MultipleApplicationsDetails(Collections.singleton(applicationDetails))); + ArchivedJson applicationOverviewArchive = + new ArchivedJson(ApplicationsOverviewHeaders.URL, applicationOverviewJson); + + // mock a simple /applications/.json + String applicationJson = "{\"id\":\"" + applicationId + "\"}"; + List archives = new ArrayList<>(); + archives.add(applicationOverviewArchive); + archives.add(new ArchivedJson("/applications/" + applicationId, applicationJson)); + + Path applicationSummaryPath = + new Path( + applicationDir.toURI().toString(), + ArchivePathUtils.APPLICATION_ARCHIVE_NAME); + FsJsonArchivist.writeArchivedJsons(applicationSummaryPath, archives); + + // Write job archives under jobs/ subdir. + File jobsDir = new File(applicationDir, ArchivePathUtils.JOBS_DIR); + Files.createDirectories(jobsDir.toPath()); + for (JobID jobId : jobIds) { + createJobArchive(jobsDir, jobId, true); + } + + return new Path(applicationDir.toURI().toString()); + } + + private HistoryServerApplicationArchiveFetcher createApplicationArchiveFetcher( + boolean cleanupExpired, ArchiveStorage storage) throws Exception { + List refreshDirs = + Collections.singletonList(createRefreshLocation(remoteArchiveRootPath)); + return new HistoryServerApplicationArchiveFetcher<>( + refreshDirs, + localArchiveRootPath, + event -> archiveEvents.add(event), + cleanupExpired, + RETAIN_ALL, + storage, + jobMetaInfoCache, + applicationMetaInfoCache, + 4); + } + + private static String newApplicationId() { + return new ApplicationID().toHexString(); + } + + // ========================================================================= + // EAGER MODE TESTS + // + // localArchiveRootPath/ + // ├── application-overviews/ + // │ └── application-id-1.json + // │ └── ... + // ├── applications/ + // │ └── overview.json + // │ └── application-id-1.json + // │ └── ... + // ├── overviews/ + // │ └── job-id-1.json + // │ └── ... + // ├── jobs/ + // │ └── overview.json + // │ └── job-id-1.json + // │ └── job-id-1/ + // │ ├── detail.json + // │ └── ... + // ========================================================================= + + @TestTemplate + void testEagerModeLoadsAllAppsAndJobsSync() throws Exception { + int numApps = 2; + int numJobsPerApp = 2; + List appIds = new ArrayList<>(); + Map> appToJobs = new HashMap<>(); + for (int i = 0; i < numApps; i++) { + String appId = newApplicationId(); + appIds.add(appId); + List jobIds = new ArrayList<>(); + for (int j = 0; j < numJobsPerApp; j++) { + jobIds.add(JobID.generate()); + } + appToJobs.put(appId, jobIds); + createApplicationArchive(appId, jobIds); + } + + HistoryServerApplicationArchiveFetcher fetcher = + createApplicationArchiveFetcher(false, archiveStorage); + fetcher.fetchArchives(EAGER); + + // N (apps) + N*M (jobs) events, all CREATED + assertThat(archiveEvents).hasSize(numApps + numApps * numJobsPerApp); + for (HistoryServerArchiveFetcher.ArchiveEvent event : archiveEvents) { + assertThat(event.getType()).isEqualTo(CREATED); + } + + for (String appId : appIds) { + assertThat(archiveStorage.exists("application-overviews/" + appId + ".json")).isTrue(); + assertThat(archiveStorage.exists("applications/" + appId + ".json")).isTrue(); + for (JobID jobId : appToJobs.get(appId)) { + assertThat(archiveStorage.exists("overviews/" + jobId + ".json")).isTrue(); + assertThat(archiveStorage.exists("jobs/" + jobId + ".json")).isTrue(); + assertThat(archiveStorage.exists("jobs/" + jobId + "/config.json")).isTrue(); + } + } + assertThat(archiveStorage.exists("jobs/overview.json")).isTrue(); + assertThat(archiveStorage.exists("applications/overview.json")).isTrue(); + } + + // ========================================================================= + // LAZY MODE TESTS + // ========================================================================= + + @TestTemplate + void testLazyModeApplicationSyncJobDetailAsync() throws Exception { + String appId = newApplicationId(); + JobID jobId = JobID.generate(); + createApplicationArchive(appId, Collections.singletonList(jobId)); + + HistoryServerTestUtils.BlockingArchiveStorage blockingStorage = + new HistoryServerTestUtils.BlockingArchiveStorage<>( + archiveStorage, "jobs/" + jobId + "/config"); + // Replace the field so that close() in tearDown() releases the underlying storage too. + archiveStorage = blockingStorage; + + HistoryServerApplicationArchiveFetcher fetcher = + createApplicationArchiveFetcher(false, blockingStorage); + fetcher.fetchArchives(LAZY); + + // The application-level event is CREATED (application is loaded synchronously); + // the embedded job-level event is OVERVIEW_CREATED (detail is loaded asynchronously). + List eventTypes = + archiveEvents.stream() + .map(HistoryServerArchiveFetcher.ArchiveEvent::getType) + .collect(Collectors.toList()); + assertThat(eventTypes).containsExactlyInAnyOrder(CREATED, OVERVIEW_CREATED); + + // localArchiveRootPath/ + // ├── application-overviews/ + // │ └── application-id-1.json + // │ └── ... + // ├── applications/ + // │ └── overview.json + // │ └── application-id-1.json + // │ └── ... + // ├── overviews/ + // │ └── job-id-1.json + // │ └── ... + // ├── jobs/ + // │ └── overview.json + // │ └── job-id-1.json + // │ └── job-id-1/ + // │ ├── detail.json + // │ └── ... + + // Phase 1: detail not yet written + boolean asyncReached = blockingStorage.asyncStartLatch.await(10, TimeUnit.SECONDS); + assertThat(asyncReached).isTrue(); + assertThat(blockingStorage.exists("jobs/" + jobId + "/config.json")).isFalse(); + // application-summary content has been written synchronously + assertThat(blockingStorage.exists("application-overviews/" + appId + ".json")).isTrue(); + assertThat(blockingStorage.exists("applications/" + appId + ".json")).isTrue(); + assertThat(blockingStorage.exists("applications/overview.json")).isTrue(); + assertThat(blockingStorage.exists("overviews/" + jobId + ".json")).isTrue(); + assertThat(blockingStorage.exists("jobs/" + jobId + ".json")).isTrue(); + assertThat(blockingStorage.exists("jobs/overview.json")).isTrue(); + + // Phase 2: release async task and wait for completion + blockingStorage.releaseLatch.countDown(); + waitForArchiveLoaded(jobMetaInfoCache, jobId.toString()); + assertThat(blockingStorage.exists("jobs/" + jobId + "/config.json")).isTrue(); + assertThat(jobMetaInfoCache.get(jobId.toString()).getEventType()).isEqualTo(CREATED); + } + + @TestTemplate + void testMissingApplicationSummaryFileThrows() throws Exception { + String appId = newApplicationId(); + // Create the directory layout WITHOUT writing the application-summary file. + File applicationDir = + new File( + remoteArchiveRootPath, + DEFAULT_CLUSTER_ID + "/" + ArchivePathUtils.APPLICATIONS_DIR + "/" + appId); + Files.createDirectories(new File(applicationDir, ArchivePathUtils.JOBS_DIR).toPath()); + + HistoryServerApplicationArchiveFetcher fetcher = + createApplicationArchiveFetcher(false, archiveStorage); + Path refreshPath = new Path(remoteArchiveRootPath.toURI().toString()); + Path applicationPath = new Path(applicationDir.toURI().toString()); + + assertThatThrownBy(() -> fetcher.processArchive(appId, applicationPath, refreshPath)) + .hasMessageContaining( + "Application archive " + + new Path( + applicationPath, ArchivePathUtils.APPLICATION_ARCHIVE_NAME) + + " does not exist."); + + // Cache should NOT contain a successful entry for this application. + assertThat(applicationMetaInfoCache.containsKey(appId)).isFalse(); + } + + // ========================================================================= + // ApplicationArchiveMetaInfoCache STATE TRANSITION TESTS + // ========================================================================= + + @TestTemplate + void testApplicationArchiveStateTransition() throws Exception { + String appId = newApplicationId(); + JobID jobId = JobID.generate(); + Path applicationArchivePath = + createApplicationArchive(appId, Collections.singletonList(jobId)); + + HistoryServerTestUtils.BlockingArchiveStorage blockingStorage = + new HistoryServerTestUtils.BlockingArchiveStorage<>( + archiveStorage, "jobs/" + jobId + "/config"); + archiveStorage = blockingStorage; + + HistoryServerApplicationArchiveFetcher fetcher = + createApplicationArchiveFetcher(false, blockingStorage); + Path refreshPath = new Path(remoteArchiveRootPath.toURI().toString()); + + fetcher.fetchArchives(LAZY); + + // Phase 1: application is loaded synchronously -> CREATED; + assertThat(applicationMetaInfoCache.get(appId).getEventType()).isEqualTo(CREATED); + + // the embedded job's detail loading is blocked at the storage -> DETAIL_PARSING. + boolean asyncReached = blockingStorage.asyncStartLatch.await(10, TimeUnit.SECONDS); + assertThat(asyncReached).isTrue(); + assertThat(jobMetaInfoCache.get(jobId.toString()).getEventType()).isEqualTo(DETAIL_PARSING); + + // try to call lazyProcessJobArchive again, should return CREATED. + List callAgainEvent = + fetcher.lazyProcessArchive(appId, applicationArchivePath, refreshPath); + assertThat(callAgainEvent.get(0).getType()).isEqualTo(CREATED); + assertThat(applicationMetaInfoCache.get(appId).getEventType()).isEqualTo(CREATED); + + // Phase 2: execute the asynchronous task + blockingStorage.releaseLatch.countDown(); + waitForArchiveLoaded(jobMetaInfoCache, jobId.toString()); + assertThat(jobMetaInfoCache.get(jobId.toString()).getEventType()).isEqualTo(CREATED); + + // Phase 3: cleanup all archives + Map> archivesToRemove = new HashMap<>(); + archivesToRemove.put(refreshPath, Collections.singleton(appId)); + fetcher.cleanupExpiredArchives(archivesToRemove); + + assertThat(applicationMetaInfoCache.containsKey(appId)).isFalse(); + assertThat(jobMetaInfoCache.containsKey(jobId.toString())).isFalse(); + } +} diff --git a/flink-runtime-web/src/test/java/org/apache/flink/runtime/webmonitor/history/HistoryServerArchiveFetcherTest.java b/flink-runtime-web/src/test/java/org/apache/flink/runtime/webmonitor/history/HistoryServerArchiveFetcherTest.java new file mode 100644 index 00000000000000..ff929837fd96c2 --- /dev/null +++ b/flink-runtime-web/src/test/java/org/apache/flink/runtime/webmonitor/history/HistoryServerArchiveFetcherTest.java @@ -0,0 +1,355 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.flink.runtime.webmonitor.history; + +import org.apache.flink.api.common.JobID; +import org.apache.flink.core.fs.Path; +import org.apache.flink.runtime.history.FsJsonArchivist; +import org.apache.flink.runtime.messages.webmonitor.JobDetails; +import org.apache.flink.runtime.messages.webmonitor.MultipleJobsDetails; +import org.apache.flink.testutils.junit.extensions.parameterized.Parameter; +import org.apache.flink.testutils.junit.extensions.parameterized.ParameterizedTestExtension; +import org.apache.flink.testutils.junit.extensions.parameterized.Parameters; + +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.TestTemplate; +import org.junit.jupiter.api.extension.ExtendWith; +import org.junit.jupiter.api.io.TempDir; + +import java.io.File; +import java.util.ArrayList; +import java.util.Collection; +import java.util.Collections; +import java.util.HashMap; +import java.util.HashSet; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.concurrent.ConcurrentHashMap; +import java.util.concurrent.TimeUnit; + +import static org.apache.flink.configuration.HistoryServerOptions.HistoryServerArchiveLoadMode.EAGER; +import static org.apache.flink.configuration.HistoryServerOptions.HistoryServerArchiveLoadMode.LAZY; +import static org.apache.flink.runtime.webmonitor.history.HistoryServerArchiveFetcher.ArchiveEventType.CREATED; +import static org.apache.flink.runtime.webmonitor.history.HistoryServerArchiveFetcher.ArchiveEventType.DETAIL_PARSING; +import static org.apache.flink.runtime.webmonitor.history.HistoryServerArchiveFetcher.ArchiveEventType.OVERVIEW_CREATED; +import static org.apache.flink.runtime.webmonitor.history.HistoryServerTestUtils.OBJECT_MAPPER; +import static org.apache.flink.runtime.webmonitor.history.HistoryServerTestUtils.RETAIN_ALL; +import static org.apache.flink.runtime.webmonitor.history.HistoryServerTestUtils.createJobArchive; +import static org.apache.flink.runtime.webmonitor.history.HistoryServerTestUtils.createLegacyArchive; +import static org.apache.flink.runtime.webmonitor.history.HistoryServerTestUtils.createRefreshLocation; +import static org.apache.flink.runtime.webmonitor.history.HistoryServerTestUtils.waitForArchiveLoaded; +import static org.assertj.core.api.Assertions.assertThat; +import static org.assertj.core.api.Assertions.assertThatThrownBy; + +/** Tests for {@link HistoryServerArchiveFetcher}. */ +@ExtendWith(ParameterizedTestExtension.class) +class HistoryServerArchiveFetcherTest { + + @TempDir File remoteArchiveRootPath; + @TempDir File localArchiveRootPath; + + @Parameter public ArchiveStorageFactory storageFactory; + + private ArchiveStorage archiveStorage; + private ConcurrentHashMap archiveMetaInfoCache; + private List archiveEvents; + + @Parameters(name = "storageFactory={0}") + private static Collection> storageFactories() { + ArchiveStorageFactory fileArchiveStorageFactory = FileArchiveStorage::new; + ArchiveStorageFactory rocksDBStorageFactory = RocksDBArchiveStorage::new; + return List.of(fileArchiveStorageFactory, rocksDBStorageFactory); + } + + /** Creates an {@link ArchiveStorage} instance under the given temporary directory. */ + @FunctionalInterface + interface ArchiveStorageFactory { + ArchiveStorage create(File tempDir) throws Exception; + } + + @BeforeEach + void setUp() throws Exception { + archiveMetaInfoCache = new ConcurrentHashMap<>(); + archiveEvents = new ArrayList<>(); + archiveStorage = storageFactory.create(localArchiveRootPath); + } + + @AfterEach + void tearDown() throws Exception { + archiveEvents.clear(); + if (archiveStorage != null) { + archiveStorage.close(); + archiveStorage = null; + } + } + + /** + * Create {@link HistoryServerArchiveFetcher} instance with a custom {@link ArchiveStorage}. + * + * @param refreshDir archive scan directory + * @param cleanupExpiredJobs whether to enable expired archive cleanup + * @param storage the archive storage to use + */ + private HistoryServerArchiveFetcher createArchiveFetcher( + File refreshDir, boolean cleanupExpiredJobs, ArchiveStorage storage) + throws Exception { + List refreshDirs = + Collections.singletonList(createRefreshLocation(refreshDir)); + return new HistoryServerArchiveFetcher<>( + refreshDirs, + localArchiveRootPath, + event -> archiveEvents.add(event), + cleanupExpiredJobs, + RETAIN_ALL, + storage, + archiveMetaInfoCache, + 4); + } + + // ========================================================================= + // EAGER MODE TESTS + // ========================================================================= + + @TestTemplate + void testEagerModeLoadsAllFilesSync() throws Exception { + int numJobs = 3; + List jobIds = new ArrayList<>(); + for (int i = 0; i < numJobs; i++) { + JobID jobId = JobID.generate(); + jobIds.add(jobId); + createJobArchive(remoteArchiveRootPath, jobId, true); + } + + HistoryServerArchiveFetcher fetcher = + createArchiveFetcher(remoteArchiveRootPath, false, archiveStorage); + fetcher.fetchArchives(EAGER); + + assertThat(archiveEvents).hasSize(numJobs); + for (HistoryServerArchiveFetcher.ArchiveEvent event : archiveEvents) { + assertThat(event.getType()).isEqualTo(CREATED); + } + for (JobID jobId : jobIds) { + assertThat(archiveStorage.exists("overviews/" + jobId + ".json")).isTrue(); + assertThat(archiveStorage.exists("jobs/" + jobId + ".json")).isTrue(); + assertThat(archiveStorage.exists("jobs/" + jobId + "/config.json")).isTrue(); + } + assertThat(archiveStorage.exists("jobs/overview.json")).isTrue(); + } + + // ========================================================================= + // LAZY MODE TESTS + // ========================================================================= + + @TestTemplate + void testLazyModeDetailNotWrittenBeforeAsyncTaskCompleted() throws Exception { + JobID jobId = JobID.generate(); + createJobArchive(remoteArchiveRootPath, jobId, true); + + HistoryServerTestUtils.BlockingArchiveStorage blockingStorage = + new HistoryServerTestUtils.BlockingArchiveStorage<>( + archiveStorage, "jobs/" + jobId + "/config"); + // Replace the field so that close() in tearDown() releases the underlying storage too. + archiveStorage = blockingStorage; + + HistoryServerArchiveFetcher fetcher = + createArchiveFetcher(remoteArchiveRootPath, false, blockingStorage); + + fetcher.fetchArchives(LAZY); + + // Phase 1: overview archive is loaded synchronously, but detail archive haven't loaded yet. + boolean asyncReached = blockingStorage.asyncStartLatch.await(10, TimeUnit.SECONDS); + assertThat(asyncReached).isTrue(); + assertThat(archiveEvents.get(0).getType()).isEqualTo(OVERVIEW_CREATED); + assertThat(blockingStorage.exists("overviews/" + jobId + ".json")).isTrue(); + assertThat(blockingStorage.exists("jobs/" + jobId + ".json")).isTrue(); + assertThat(blockingStorage.exists("jobs/overview.json")).isTrue(); + assertThat(blockingStorage.exists("jobs/" + jobId + "/config.json")).isFalse(); + + // Phase 2: execute the asynchronous task + blockingStorage.releaseLatch.countDown(); + waitForArchiveLoaded(archiveMetaInfoCache, jobId.toString()); + + assertThat(archiveMetaInfoCache.get(jobId.toString()).getEventType()).isEqualTo(CREATED); + assertThat(blockingStorage.exists("jobs/" + jobId + "/config.json")).isTrue(); + } + + @TestTemplate + void testLazyModeLoadsAllFilesCompleted() throws Exception { + int numJobs = 5; + List jobIds = new ArrayList<>(); + for (int i = 0; i < numJobs; i++) { + JobID jobId = JobID.generate(); + jobIds.add(jobId); + createJobArchive(remoteArchiveRootPath, jobId, true); + } + + HistoryServerArchiveFetcher fetcher = + createArchiveFetcher(remoteArchiveRootPath, false, archiveStorage); + fetcher.fetchArchives(LAZY); + + assertThat(archiveEvents).hasSize(numJobs); + for (HistoryServerArchiveFetcher.ArchiveEvent event : archiveEvents) { + assertThat(event.getType()).isEqualTo(OVERVIEW_CREATED); + } + + for (JobID jobId : jobIds) { + waitForArchiveLoaded(archiveMetaInfoCache, jobId.toString()); + } + + // when async task completed, all detail archives should be loaded. + for (JobID jobId : jobIds) { + assertThat(archiveMetaInfoCache.get(jobId.toString()).getEventType()) + .isEqualTo(CREATED); + assertThat(archiveStorage.exists("jobs/" + jobId + "/config.json")).isTrue(); + } + } + + @TestTemplate + void testLazyProcessJobArchiveThrowsForEmptyArchive() throws Exception { + JobID jobId = JobID.generate(); + Path archivePath = new Path(remoteArchiveRootPath.toURI().toString(), jobId.toString()); + FsJsonArchivist.writeArchivedJsons(archivePath, Collections.emptyList()); + + HistoryServerArchiveFetcher fetcher = + createArchiveFetcher(remoteArchiveRootPath, false, archiveStorage); + + assertThatThrownBy(() -> fetcher.lazyProcessJobArchive(jobId.toString(), archivePath)) + .isInstanceOf(RuntimeException.class) + .hasMessage("Archive of job " + jobId + " is empty"); + + assertThat(archiveMetaInfoCache.containsKey(jobId.toString())).isFalse(); + } + + // ========================================================================= + // ArchiveMetaInfoCache STATE TRANSITION TESTS + // ========================================================================= + + /** STATE: PENDING -> OVERVIEW_PARSING -> OVERVIEW_CREATED -> DETAIL_PARSING -> CREATED. */ + @TestTemplate + void testArchiveStateTransition() throws Exception { + JobID jobIdWithDetail = JobID.generate(); + Path jobWithDetailArchivePath = + createJobArchive(remoteArchiveRootPath, jobIdWithDetail, true); + JobID jobIdWithoutDetail = JobID.generate(); + createJobArchive(remoteArchiveRootPath, jobIdWithoutDetail, false); + + HistoryServerTestUtils.BlockingArchiveStorage blockingStorage = + new HistoryServerTestUtils.BlockingArchiveStorage<>( + archiveStorage, "jobs/" + jobIdWithDetail + "/config"); + archiveStorage = blockingStorage; + + HistoryServerArchiveFetcher fetcher = + createArchiveFetcher(remoteArchiveRootPath, false, blockingStorage); + + fetcher.fetchArchives(LAZY); + + assertThat(archiveMetaInfoCache.size()).isEqualTo(2); + assertThat(archiveMetaInfoCache.containsKey(jobIdWithoutDetail.toString())).isTrue(); + assertThat(archiveMetaInfoCache.get(jobIdWithoutDetail.toString()).getEventType()) + .isEqualTo(OVERVIEW_CREATED); + + assertThat(archiveMetaInfoCache.containsKey(jobIdWithDetail.toString())).isTrue(); + // Phase 1: overview archive is loaded synchronously, but detail archive haven't loaded yet. + boolean asyncReached = blockingStorage.asyncStartLatch.await(10, TimeUnit.SECONDS); + assertThat(asyncReached).isTrue(); + assertThat(archiveMetaInfoCache.get(jobIdWithDetail.toString()).getEventType()) + .isEqualTo(DETAIL_PARSING); + + // try to call lazyProcessJobArchive again, should return DETAIL_PARSING. + HistoryServerArchiveFetcher.ArchiveEvent callAgainEvent = + fetcher.lazyProcessJobArchive(jobIdWithDetail.toString(), jobWithDetailArchivePath); + assertThat(callAgainEvent.getType()).isEqualTo(DETAIL_PARSING); + + // Phase 2: execute the asynchronous task + blockingStorage.releaseLatch.countDown(); + waitForArchiveLoaded(archiveMetaInfoCache, jobIdWithDetail.toString()); + assertThat(archiveMetaInfoCache.get(jobIdWithDetail.toString()).getEventType()) + .isEqualTo(CREATED); + + // Phase 3: remove all archives + Map> archivesToRemove = new HashMap<>(); + Set archiveIdsToRemove = new HashSet<>(); + archiveIdsToRemove.add(jobIdWithDetail.toString()); + archiveIdsToRemove.add(jobIdWithoutDetail.toString()); + archivesToRemove.put( + new Path(remoteArchiveRootPath.toURI().toString()), archiveIdsToRemove); + fetcher.cleanupExpiredArchives(archivesToRemove); + assertThat(archiveMetaInfoCache.size()).isEqualTo(0); + } + + // ========================================================================= + // Other Tests + // ========================================================================= + + /** + * This test reads {@code jobs/overview.json} directly from the local file system, so it only + * applies to the {@link FileArchiveStorage} backend. + */ + @TestTemplate + void testUpdateJobOverview() throws Exception { + JobID job1 = JobID.generate(); + JobID job2 = JobID.generate(); + createJobArchive(remoteArchiveRootPath, job1, true); + createJobArchive(remoteArchiveRootPath, job2, true); + + HistoryServerArchiveFetcher fetcher = + createArchiveFetcher(remoteArchiveRootPath, true, archiveStorage); + fetcher.fetchArchives(EAGER); + + Object overviewObject = archiveStorage.getEntry("jobs/overview.json"); + String overviewContent = archiveStorage.readArchiveContent(overviewObject); + MultipleJobsDetails overview = + OBJECT_MAPPER.readValue(overviewContent, MultipleJobsDetails.class); + + assertThat(overview.getJobs()).hasSize(2); + Set jobIds = new HashSet<>(); + for (JobDetails jobDetails : overview.getJobs()) { + jobIds.add(jobDetails.getJobId().toString()); + } + assertThat(jobIds).containsExactlyInAnyOrder(job1.toString(), job2.toString()); + + // remove job1 + new File(remoteArchiveRootPath, job1.toString()).delete(); + fetcher.fetchArchives(EAGER); + + // verify overview now only contains job2 + overviewObject = archiveStorage.getEntry("jobs/overview.json"); + overviewContent = archiveStorage.readArchiveContent(overviewObject); + overview = OBJECT_MAPPER.readValue(overviewContent, MultipleJobsDetails.class); + assertThat(overview.getJobs()).hasSize(1); + assertThat(overview.getJobs().iterator().next().getJobId()).isEqualTo(job2); + } + + @TestTemplate + void testLegacyJobOverviewMigration() throws Exception { + JobID jobId = createLegacyArchive(remoteArchiveRootPath.toPath(), false); + + HistoryServerArchiveFetcher fetcher = + createArchiveFetcher(remoteArchiveRootPath, false, archiveStorage); + fetcher.fetchArchives(LAZY); + + assertThat(archiveEvents).hasSize(1); + assertThat(archiveEvents.get(0).getType()).isEqualTo(OVERVIEW_CREATED); + + assertThat(archiveStorage.exists("overviews/" + jobId + ".json")).isTrue(); + assertThat(archiveStorage.exists("jobs/overview.json")).isTrue(); + } +} diff --git a/flink-runtime-web/src/test/java/org/apache/flink/runtime/webmonitor/history/HistoryServerTest.java b/flink-runtime-web/src/test/java/org/apache/flink/runtime/webmonitor/history/HistoryServerTest.java index 4c7cd990d23496..26fcceedf450a6 100644 --- a/flink-runtime-web/src/test/java/org/apache/flink/runtime/webmonitor/history/HistoryServerTest.java +++ b/flink-runtime-web/src/test/java/org/apache/flink/runtime/webmonitor/history/HistoryServerTest.java @@ -52,8 +52,6 @@ import org.apache.flink.util.FlinkException; import org.apache.flink.util.jackson.JacksonMapperFactory; -import org.apache.flink.shaded.jackson2.com.fasterxml.jackson.core.JsonFactory; -import org.apache.flink.shaded.jackson2.com.fasterxml.jackson.core.JsonGenerator; import org.apache.flink.shaded.jackson2.com.fasterxml.jackson.databind.DeserializationFeature; import org.apache.flink.shaded.jackson2.com.fasterxml.jackson.databind.ObjectMapper; @@ -68,7 +66,6 @@ import java.io.File; import java.io.IOException; -import java.io.StringWriter; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; @@ -87,16 +84,14 @@ import java.util.stream.Collectors; import java.util.stream.Stream; +import static org.apache.flink.runtime.webmonitor.history.HistoryServerTestUtils.createLegacyArchive; +import static org.apache.flink.runtime.webmonitor.history.HistoryServerTestUtils.createLegacyArchiveWithModifiedDate; import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThatThrownBy; /** Tests for the HistoryServer. */ class HistoryServerTest { - private static final JsonFactory JACKSON_FACTORY = - new JsonFactory() - .enable(JsonGenerator.Feature.AUTO_CLOSE_TARGET) - .disable(JsonGenerator.Feature.AUTO_CLOSE_JSON_CONTENT); private static final ObjectMapper OBJECT_MAPPER = JacksonMapperFactory.createObjectMapper() .enable(DeserializationFeature.FAIL_ON_MISSING_CREATOR_PROPERTIES); @@ -198,7 +193,7 @@ void testRemoveOldestModifiedArchivesBeyondHistorySizeLimit(final boolean versio for (int j = 0; j < numArchivesBeforeHsStarted; j++) { JobID jobId = - createLegacyArchive( + createLegacyArchiveWithModifiedDate( jmDirectory.toPath(), j * oneMinuteSinceEpoch, versionLessThan14); if (j >= numArchivesToRemoveUponHsStart) { expectedJobIdsToKeep.add(jobId); @@ -253,7 +248,7 @@ void testRemoveOldestModifiedArchivesBeyondHistorySizeLimit(final boolean versio j++) { expectedJobIdsToKeep.remove(0); expectedJobIdsToKeep.add( - createLegacyArchive( + createLegacyArchiveWithModifiedDate( jmDirectory.toPath(), j * oneMinuteSinceEpoch, versionLessThan14)); } assertThat(numArchivesCreatedTotal.await(10L, TimeUnit.SECONDS)).isTrue(); @@ -534,62 +529,6 @@ private static void runJob() throws Exception { env.execute(); } - private static JobID createLegacyArchive( - Path directory, long fileModifiedDate, boolean versionLessThan14) throws IOException { - JobID jobId = createLegacyArchive(directory, versionLessThan14); - File jobArchive = directory.resolve(jobId.toString()).toFile(); - jobArchive.setLastModified(fileModifiedDate); - return jobId; - } - - private static JobID createLegacyArchive(Path directory, boolean versionLessThan14) - throws IOException { - JobID jobId = JobID.generate(); - - StringWriter sw = new StringWriter(); - try (JsonGenerator gen = JACKSON_FACTORY.createGenerator(sw)) { - try (JsonObject root = new JsonObject(gen)) { - try (JsonArray finished = new JsonArray(gen, "finished")) { - try (JsonObject job = new JsonObject(gen)) { - gen.writeStringField("jid", jobId.toString()); - gen.writeStringField("name", "testjob"); - gen.writeStringField("state", JobStatus.FINISHED.name()); - - gen.writeNumberField("start-time", 0L); - gen.writeNumberField("end-time", 1L); - gen.writeNumberField("duration", 1L); - gen.writeNumberField("last-modification", 1L); - - try (JsonObject tasks = new JsonObject(gen, "tasks")) { - gen.writeNumberField("total", 0); - - if (versionLessThan14) { - gen.writeNumberField("pending", 0); - } else { - gen.writeNumberField("created", 0); - gen.writeNumberField("deploying", 0); - gen.writeNumberField("scheduled", 0); - } - gen.writeNumberField("running", 0); - gen.writeNumberField("finished", 0); - gen.writeNumberField("canceling", 0); - gen.writeNumberField("canceled", 0); - gen.writeNumberField("failed", 0); - } - } - } - } - } - String json = sw.toString(); - ArchivedJson archivedJson = new ArchivedJson("/joboverview", json); - FsJsonArchivist.writeArchivedJsons( - new org.apache.flink.core.fs.Path( - directory.toAbsolutePath().toString(), jobId.toString()), - Collections.singleton(archivedJson)); - - return jobId; - } - @Test void testApplicationAndJobArchives() throws Exception { int numApplications = 2; @@ -991,39 +930,4 @@ private void deleteApplicationArchiveDir(ApplicationID applicationId) throws IOE .getParent(); applicationArchiveDir.getFileSystem().delete(applicationArchiveDir, true); } - - private static final class JsonObject implements AutoCloseable { - - private final JsonGenerator gen; - - JsonObject(JsonGenerator gen) throws IOException { - this.gen = gen; - gen.writeStartObject(); - } - - private JsonObject(JsonGenerator gen, String name) throws IOException { - this.gen = gen; - gen.writeObjectFieldStart(name); - } - - @Override - public void close() throws IOException { - gen.writeEndObject(); - } - } - - private static final class JsonArray implements AutoCloseable { - - private final JsonGenerator gen; - - JsonArray(JsonGenerator gen, String name) throws IOException { - this.gen = gen; - gen.writeArrayFieldStart(name); - } - - @Override - public void close() throws IOException { - gen.writeEndArray(); - } - } } diff --git a/flink-runtime-web/src/test/java/org/apache/flink/runtime/webmonitor/history/HistoryServerTestUtils.java b/flink-runtime-web/src/test/java/org/apache/flink/runtime/webmonitor/history/HistoryServerTestUtils.java new file mode 100644 index 00000000000000..de42e501a711cb --- /dev/null +++ b/flink-runtime-web/src/test/java/org/apache/flink/runtime/webmonitor/history/HistoryServerTestUtils.java @@ -0,0 +1,295 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.flink.runtime.webmonitor.history; + +import org.apache.flink.api.common.JobID; +import org.apache.flink.api.common.JobStatus; +import org.apache.flink.core.fs.FileSystem; +import org.apache.flink.core.fs.Path; +import org.apache.flink.runtime.execution.ExecutionState; +import org.apache.flink.runtime.history.FsJsonArchivist; +import org.apache.flink.runtime.messages.webmonitor.JobDetails; +import org.apache.flink.runtime.messages.webmonitor.MultipleJobsDetails; +import org.apache.flink.runtime.rest.messages.JobsOverviewHeaders; +import org.apache.flink.runtime.webmonitor.history.retaining.ArchiveRetainedStrategy; +import org.apache.flink.util.jackson.JacksonMapperFactory; + +import org.apache.flink.shaded.jackson2.com.fasterxml.jackson.core.JsonFactory; +import org.apache.flink.shaded.jackson2.com.fasterxml.jackson.core.JsonGenerator; +import org.apache.flink.shaded.jackson2.com.fasterxml.jackson.databind.ObjectMapper; + +import javax.annotation.Nullable; + +import java.io.File; +import java.io.IOException; +import java.io.StringWriter; +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; +import java.util.Map; +import java.util.concurrent.CountDownLatch; +import java.util.concurrent.TimeUnit; + +import static org.apache.flink.runtime.webmonitor.history.HistoryServerArchiveFetcher.ArchiveEventType.CREATED; + +/** Common utilities for history server tests. */ +public class HistoryServerTestUtils { + + private static final JsonFactory JACKSON_FACTORY = + new JsonFactory() + .enable(JsonGenerator.Feature.AUTO_CLOSE_TARGET) + .disable(JsonGenerator.Feature.AUTO_CLOSE_JSON_CONTENT); + + public static final ObjectMapper OBJECT_MAPPER = JacksonMapperFactory.createObjectMapper(); + public static final ArchiveRetainedStrategy RETAIN_ALL = (file, index) -> true; + + static HistoryServer.RefreshLocation createRefreshLocation(File dir) throws Exception { + Path path = new Path(dir.toURI().toString()); + FileSystem fs = path.getFileSystem(); + return new HistoryServer.RefreshLocation(path, fs); + } + + /** + * Create a job archive at {@code baseDir/}. + * + * @param baseDir base directory under which the archive will be written + * @param jobId job id used as the archive file name + * @param withDetail whether to include the {@code /jobs//config} sub-archive + * @return the archive {@link Path} + */ + static Path createJobArchive(File baseDir, JobID jobId, boolean withDetail) throws Exception { + MultipleJobsDetails overview = + new MultipleJobsDetails( + Collections.singleton( + new JobDetails( + jobId, + "test-job", + 0L, + 1L, + 1L, + JobStatus.FINISHED, + 1L, + new int[ExecutionState.values().length], + 0))); + String overviewJson = OBJECT_MAPPER.writeValueAsString(overview); + ArchivedJson overviewArchive = new ArchivedJson(JobsOverviewHeaders.URL, overviewJson); + + // mock a simple /jobs/.json + String jobJson = "{\"jid\":\"" + jobId + "\"}"; + + List archives = new ArrayList<>(); + archives.add(overviewArchive); + archives.add(new ArchivedJson("/jobs/" + jobId, jobJson)); + + if (withDetail) { + String detailJson = "{\"jid\":\"" + jobId + "\",\"name\":\"test-job\"}"; + archives.add(new ArchivedJson("/jobs/" + jobId + "/config", detailJson)); + } + + Path archivePath = new Path(baseDir.toURI().toString(), jobId.toString()); + FsJsonArchivist.writeArchivedJsons(archivePath, archives); + return archivePath; + } + + /** Create a legacy job archive at {@code directory/} with only {@code /joboverview}. */ + public static JobID createLegacyArchive(java.nio.file.Path directory, boolean versionLessThan14) + throws IOException { + JobID jobId = JobID.generate(); + + StringWriter sw = new StringWriter(); + try (JsonGenerator gen = JACKSON_FACTORY.createGenerator(sw)) { + try (JsonObject root = new JsonObject(gen)) { + try (JsonArray finished = new JsonArray(gen, "finished")) { + try (JsonObject job = new JsonObject(gen)) { + gen.writeStringField("jid", jobId.toString()); + gen.writeStringField("name", "testjob"); + gen.writeStringField("state", JobStatus.FINISHED.name()); + + gen.writeNumberField("start-time", 0L); + gen.writeNumberField("end-time", 1L); + gen.writeNumberField("duration", 1L); + gen.writeNumberField("last-modification", 1L); + + try (JsonObject tasks = new JsonObject(gen, "tasks")) { + gen.writeNumberField("total", 0); + + if (versionLessThan14) { + gen.writeNumberField("pending", 0); + } else { + gen.writeNumberField("created", 0); + gen.writeNumberField("deploying", 0); + gen.writeNumberField("scheduled", 0); + } + gen.writeNumberField("running", 0); + gen.writeNumberField("finished", 0); + gen.writeNumberField("canceling", 0); + gen.writeNumberField("canceled", 0); + gen.writeNumberField("failed", 0); + } + } + } + } + } + String json = sw.toString(); + ArchivedJson archivedJson = new ArchivedJson("/joboverview", json); + FsJsonArchivist.writeArchivedJsons( + new Path(directory.toAbsolutePath().toString(), jobId.toString()), + Collections.singleton(archivedJson)); + + return jobId; + } + + public static JobID createLegacyArchiveWithModifiedDate( + java.nio.file.Path directory, long fileModifiedDate, boolean versionLessThan14) + throws IOException { + JobID jobId = createLegacyArchive(directory, versionLessThan14); + File jobArchive = directory.resolve(jobId.toString()).toFile(); + jobArchive.setLastModified(fileModifiedDate); + return jobId; + } + + /** + * Wait until {@code cache.get(archiveId).eventType == CREATED}. Throws {@link AssertionError} + * if the deadline is exceeded. + */ + static void waitForArchiveLoaded(Map cache, String archiveId) + throws InterruptedException { + long deadline = System.currentTimeMillis() + 10_000; + while (System.currentTimeMillis() < deadline) { + ArchiveMetaInfo metaInfo = cache.get(archiveId); + if (metaInfo != null && metaInfo.getEventType() == CREATED) { + return; + } + Thread.sleep(50); + } + throw new AssertionError( + "Timed out waiting for archive " + archiveId + " to reach CREATED state"); + } + + /** + * Blocking archive storage for testing the LAZY load mode. Calls to {@link + * #putArchiveContent(String, String)} whose key contains {@code blockOnKeyPrefix} will block + * until {@link #releaseLatch} is counted down. + * + *

This is a decorator that delegates to a wrapped {@link ArchiveStorage}, so it can be used + * with any storage backend (e.g. {@link FileArchiveStorage} or {@link RocksDBArchiveStorage}). + */ + public static class BlockingArchiveStorage implements ArchiveStorage { + + public final CountDownLatch asyncStartLatch = new CountDownLatch(1); + public final CountDownLatch releaseLatch = new CountDownLatch(1); + + private final ArchiveStorage delegate; + private final String blockOnKeyPrefix; + + public BlockingArchiveStorage(ArchiveStorage delegate, String blockOnKeyPrefix) { + this.delegate = delegate; + this.blockOnKeyPrefix = blockOnKeyPrefix; + } + + @Override + public boolean exists(String key) throws IOException { + return delegate.exists(key); + } + + @Nullable + @Override + public Entry getEntry(String key) throws IOException { + return delegate.getEntry(key); + } + + @Override + public void putArchiveContent(String key, String archiveContent) throws IOException { + if (key.contains(blockOnKeyPrefix)) { + asyncStartLatch.countDown(); + try { + boolean released = releaseLatch.await(10, TimeUnit.SECONDS); + if (!released) { + throw new IOException( + "BlockingArchiveStorage: timed out waiting for release latch"); + } + } catch (InterruptedException e) { + Thread.currentThread().interrupt(); + throw new IOException("BlockingArchiveStorage: interrupted", e); + } + } + delegate.putArchiveContent(key, archiveContent); + } + + @Override + public void delete(String key) throws IOException { + delegate.delete(key); + } + + @Override + public void deleteEntriesByPrefix(String keyPrefix) throws IOException { + delegate.deleteEntriesByPrefix(keyPrefix); + } + + @Override + public List getEntriesByPrefix(String prefix) throws IOException { + return delegate.getEntriesByPrefix(prefix); + } + + @Override + public String readArchiveContent(Entry entry) throws IOException { + return delegate.readArchiveContent(entry); + } + + @Override + public void close() throws IOException { + delegate.close(); + } + } + + private static final class JsonObject implements AutoCloseable { + + private final JsonGenerator gen; + + JsonObject(JsonGenerator gen) throws IOException { + this.gen = gen; + gen.writeStartObject(); + } + + private JsonObject(JsonGenerator gen, String name) throws IOException { + this.gen = gen; + gen.writeObjectFieldStart(name); + } + + @Override + public void close() throws IOException { + gen.writeEndObject(); + } + } + + private static final class JsonArray implements AutoCloseable { + + private final JsonGenerator gen; + + JsonArray(JsonGenerator gen, String name) throws IOException { + this.gen = gen; + gen.writeArrayFieldStart(name); + } + + @Override + public void close() throws IOException { + gen.writeEndArray(); + } + } +} From ae20292b5c151714f2f64d84398dd4e5020eb9fc Mon Sep 17 00:00:00 2001 From: Zihao Chen Date: Tue, 7 Jul 2026 14:43:07 +0800 Subject: [PATCH 17/32] [FLINK-40097][historyserver] Prioritize on-demand fetching for accessed jobs --- .../history_server_configuration.html | 6 + .../configuration/HistoryServerOptions.java | 11 + .../history/AbstractHistoryServerHandler.java | 131 +++++++++- .../webmonitor/history/ArchiveMetaInfo.java | 12 +- .../webmonitor/history/HistoryServer.java | 77 +++++- ...istoryServerApplicationArchiveFetcher.java | 12 +- .../history/HistoryServerArchiveFetcher.java | 124 +++++++++- .../history/HistoryServerRocksDBHandler.java | 10 +- .../HistoryServerStaticFileServerHandler.java | 19 +- .../AbstractHistoryServerHandlerTest.java | 226 ++++++++++++++++-- ...ryServerApplicationArchiveFetcherTest.java | 1 + .../HistoryServerArchiveFetcherTest.java | 78 +++++- .../utils/WebFrontendBootstrapTest.java | 8 +- 13 files changed, 657 insertions(+), 58 deletions(-) diff --git a/docs/layouts/shortcodes/generated/history_server_configuration.html b/docs/layouts/shortcodes/generated/history_server_configuration.html index 6048ea7d5ee4c7..ef521d5f999b58 100644 --- a/docs/layouts/shortcodes/generated/history_server_configuration.html +++ b/docs/layouts/shortcodes/generated/history_server_configuration.html @@ -68,6 +68,12 @@ Integer The size of the common pool for archive fetching. + +

historyserver.lazy.fetch.executor.individual.pool-size
+ 4 + Integer + The size of the individual pool for archive fetching. +
historyserver.log.jobmanager.url-pattern
(none) diff --git a/flink-core/src/main/java/org/apache/flink/configuration/HistoryServerOptions.java b/flink-core/src/main/java/org/apache/flink/configuration/HistoryServerOptions.java index 1e34bcc3656b9b..05de6dee6ba37a 100644 --- a/flink-core/src/main/java/org/apache/flink/configuration/HistoryServerOptions.java +++ b/flink-core/src/main/java/org/apache/flink/configuration/HistoryServerOptions.java @@ -284,6 +284,17 @@ public class HistoryServerOptions { .text("The size of the common pool for archive fetching.") .build()); + public static final ConfigOption + HISTORY_SERVER_LAZY_FETCH_EXECUTOR_INDIVIDUAL_POOL_SIZE = + key("historyserver.lazy.fetch.executor.individual.pool-size") + .intType() + .defaultValue(4) + .withDescription( + Description.builder() + .text( + "The size of the individual pool for archive fetching.") + .build()); + /** The type of archive storage. */ public enum HistoryServerArchiveStorageType { /** Local file system. */ diff --git a/flink-runtime-web/src/main/java/org/apache/flink/runtime/webmonitor/history/AbstractHistoryServerHandler.java b/flink-runtime-web/src/main/java/org/apache/flink/runtime/webmonitor/history/AbstractHistoryServerHandler.java index 8b93ef01349ff5..d86191d512fd3f 100644 --- a/flink-runtime-web/src/main/java/org/apache/flink/runtime/webmonitor/history/AbstractHistoryServerHandler.java +++ b/flink-runtime-web/src/main/java/org/apache/flink/runtime/webmonitor/history/AbstractHistoryServerHandler.java @@ -19,12 +19,17 @@ package org.apache.flink.runtime.webmonitor.history; +import org.apache.flink.configuration.HistoryServerOptions; +import org.apache.flink.core.fs.Path; import org.apache.flink.runtime.rest.NotFoundException; import org.apache.flink.runtime.rest.handler.RestHandlerException; import org.apache.flink.runtime.rest.handler.legacy.files.StaticFileServerHandler; import org.apache.flink.runtime.rest.handler.router.RoutedRequest; import org.apache.flink.runtime.rest.handler.util.HandlerUtils; +import org.apache.flink.runtime.rest.messages.ApplicationsOverviewHeaders; import org.apache.flink.runtime.rest.messages.ErrorResponseBody; +import org.apache.flink.runtime.rest.messages.JobsOverviewHeaders; +import org.apache.flink.util.Preconditions; import org.apache.flink.shaded.netty4.io.netty.channel.ChannelFuture; import org.apache.flink.shaded.netty4.io.netty.channel.ChannelFutureListener; @@ -45,6 +50,8 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import javax.annotation.Nullable; + import java.io.File; import java.io.FileNotFoundException; import java.io.IOException; @@ -57,7 +64,11 @@ import java.util.Collections; import java.util.Date; import java.util.Locale; +import java.util.regex.Matcher; +import java.util.regex.Pattern; +import static org.apache.flink.configuration.HistoryServerOptions.HistoryServerArchiveLoadMode.LAZY; +import static org.apache.flink.runtime.webmonitor.history.HistoryServerArchiveFetcher.JSON_FILE_ENDING; import static org.apache.flink.shaded.netty4.io.netty.handler.codec.http.HttpHeaderNames.CONNECTION; import static org.apache.flink.shaded.netty4.io.netty.handler.codec.http.HttpHeaderNames.IF_MODIFIED_SINCE; import static org.apache.flink.shaded.netty4.io.netty.handler.codec.http.HttpResponseStatus.INTERNAL_SERVER_ERROR; @@ -73,14 +84,34 @@ public abstract class AbstractHistoryServerHandler private static final Logger LOG = LoggerFactory.getLogger(AbstractHistoryServerHandler.class); + /** Matches jobs/{jobId} or jobs/{jobId}/... paths. */ + private static final Pattern JOB_ID_PATTERN = Pattern.compile("^jobs/([^/]+)(?:/.*)?$"); + + /** Matches applications/{appId}. */ + private static final Pattern APPLICATION_ID_PATTERN = Pattern.compile("^applications/([^/]+)$"); + /** The path in which the static documents are. */ protected final File rootPath; protected final ArchiveStorage archiveStorage; - protected AbstractHistoryServerHandler(ArchiveStorage archiveStorage, File rootPath) + private final HistoryServerOptions.HistoryServerArchiveLoadMode archiveLoadMode; + + // for lazy load + @Nullable protected HistoryServerArchiveFetcher archiveFetcher; + @Nullable protected HistoryServerApplicationArchiveFetcher applicationArchiveFetcher; + + protected AbstractHistoryServerHandler( + ArchiveStorage archiveStorage, + HistoryServerOptions.HistoryServerArchiveLoadMode archiveLoadMode, + @Nullable HistoryServerArchiveFetcher archiveFetcher, + @Nullable HistoryServerApplicationArchiveFetcher applicationArchiveFetcher, + File rootPath) throws IOException { this.archiveStorage = archiveStorage; + this.archiveLoadMode = archiveLoadMode; + this.archiveFetcher = archiveFetcher; + this.applicationArchiveFetcher = applicationArchiveFetcher; this.rootPath = checkNotNull(rootPath).getCanonicalFile(); } @@ -136,11 +167,12 @@ protected void respondToRequest(ChannelHandlerContext ctx, RoutedRequest routedR requestPath = requestPath + "index.html"; } - if (!requestPath.contains(".")) { // we assume that the path ends in either .html or .js + // we assume that the path ends in either .html or .js + if (!requestPath.contains(".")) { requestPath = requestPath + ".json"; LOG.debug("Responding to request for path {}", requestPath); - Entry resource = loadResource(requestPath); + Entry resource = loadResource(requestPath, archiveLoadMode); if (resource == null) { LOG.debug("Unable to load requested resource {}", requestPath); @@ -266,14 +298,67 @@ protected void responseWithFile( /** * Loads the resource for the given request path from the archive storage. * + *

The resource has four cases: + * + *

1. /index.html or other web resource files, should be loaded from classloader {@link + * #tryLoadFromClassloader} + * + *

2. /config.json, will be created when HistoryServer started + * + *

3. /jobs/overview.json (and /jobs/jobid.json) or /applications/overview.json (and + * /applications/applicationid.json), will be loaded synchronously + * + *

4. /jobs/<jobid>/.. will be loaded asynchronously + * * @param requestPath The request path + * @param archiveLoadMode The archive load mode * @return The resource for the given request path, or null if not found */ - private Entry loadResource(String requestPath) throws Exception { + private Entry loadResource( + String requestPath, HistoryServerOptions.HistoryServerArchiveLoadMode archiveLoadMode) + throws Exception { String requestKey = requestPath.startsWith("/") ? requestPath.substring(1) : requestPath; + + if (LAZY.equals(archiveLoadMode)) { + Preconditions.checkNotNull(archiveFetcher); + Preconditions.checkNotNull(applicationArchiveFetcher); + // need to update for overview + if (requestKey.equals(JobsOverviewHeaders.URL.substring(1) + JSON_FILE_ENDING) + || requestKey.equals( + ApplicationsOverviewHeaders.URL.substring(1) + JSON_FILE_ENDING)) { + archiveFetcher.fetchArchives(archiveLoadMode); + applicationArchiveFetcher.fetchArchives(archiveLoadMode); + return archiveStorage.getEntry(requestKey); + } + // for application/${applicationId}, return directly + String applicationId = extractApplicationId(requestKey); + if (applicationId != null) { + return archiveStorage.getEntry(requestKey); + } + // for job/${jobId}... + String jobId = extractJobId(requestKey); + if (jobId != null) { + if (archiveStorage.exists(requestKey)) { + return archiveStorage.getEntry(requestKey); + } + ArchiveMetaInfo jobArchiveMetaInfo = archiveFetcher.getArchiveMetaInfo(jobId); + if (archiveFetcher.needLazyLoadIndividually(jobId)) { + Path archivePath = + jobArchiveMetaInfo == null ? null : jobArchiveMetaInfo.getArchivePath(); + archiveFetcher.lazyFetchArchiveProactively(jobId, archivePath); + } + // wait for the job archive to be loaded + if (!requestKey.endsWith(jobId + JSON_FILE_ENDING)) { + archiveFetcher.waitLazyFetchArchiveFinished(jobId); + } + return archiveStorage.getEntry(requestKey); + } + } + if (archiveStorage.exists(requestKey)) { return archiveStorage.getEntry(requestKey); } + return null; } @@ -320,4 +405,42 @@ protected void tryLoadFromClassloader(File destFile, String requestPath) throws } } } + + /** + * Extracts the job ID from the request path. + * + * @param requestPath Request path, e.g., {@code /jobs/abc123.../vertices} + * @return jobId string; returns {@code null} if path does not match + */ + @Nullable + protected static String extractJobId(String requestPath) { + Matcher matcher = JOB_ID_PATTERN.matcher(requestPath); + if (matcher.matches()) { + return matcher.group(1); + } + return null; + } + + /** + * Extracts the application ID from the request path. + * + * @param requestPath Request path, e.g., {@code /applications/abc123...} + * @return applicationId string; returns {@code null} if path does not match + */ + @Nullable + protected static String extractApplicationId(String requestPath) { + Matcher matcher = APPLICATION_ID_PATTERN.matcher(requestPath); + if (matcher.matches()) { + return matcher.group(1); + } + return null; + } + + /** Factory for creating instances of {@link AbstractHistoryServerHandler}. */ + public interface HistoryServerHandlerFactory { + AbstractHistoryServerHandler createHistoryServerHandler( + HistoryServerArchiveFetcher archiveFetcher, + HistoryServerApplicationArchiveFetcher applicationArchiveFetcher) + throws IOException; + } } diff --git a/flink-runtime-web/src/main/java/org/apache/flink/runtime/webmonitor/history/ArchiveMetaInfo.java b/flink-runtime-web/src/main/java/org/apache/flink/runtime/webmonitor/history/ArchiveMetaInfo.java index 710868803ddce6..7a520506034e9e 100644 --- a/flink-runtime-web/src/main/java/org/apache/flink/runtime/webmonitor/history/ArchiveMetaInfo.java +++ b/flink-runtime-web/src/main/java/org/apache/flink/runtime/webmonitor/history/ArchiveMetaInfo.java @@ -18,16 +18,22 @@ package org.apache.flink.runtime.webmonitor.history; +import org.apache.flink.core.fs.Path; + /** Meta info for archived job. */ public class ArchiveMetaInfo { private final String archiveId; private volatile HistoryServerArchiveFetcher.ArchiveEventType eventType; + private final Path archivePath; public ArchiveMetaInfo( - String archiveId, HistoryServerArchiveFetcher.ArchiveEventType eventType) { + String archiveId, + HistoryServerArchiveFetcher.ArchiveEventType eventType, + Path archivePath) { this.archiveId = archiveId; this.eventType = eventType; + this.archivePath = archivePath; } public String getArchiveId() { @@ -41,4 +47,8 @@ public HistoryServerArchiveFetcher.ArchiveEventType getEventType() { public void setEventType(HistoryServerArchiveFetcher.ArchiveEventType eventType) { this.eventType = eventType; } + + public Path getArchivePath() { + return archivePath; + } } diff --git a/flink-runtime-web/src/main/java/org/apache/flink/runtime/webmonitor/history/HistoryServer.java b/flink-runtime-web/src/main/java/org/apache/flink/runtime/webmonitor/history/HistoryServer.java index d3e77c035da689..151fd43b8233f3 100644 --- a/flink-runtime-web/src/main/java/org/apache/flink/runtime/webmonitor/history/HistoryServer.java +++ b/flink-runtime-web/src/main/java/org/apache/flink/runtime/webmonitor/history/HistoryServer.java @@ -77,6 +77,8 @@ import java.util.function.Consumer; import static org.apache.flink.configuration.HistoryServerOptions.HISTORY_SERVER_LAZY_FETCH_EXECUTOR_COMMON_POOL_SIZE; +import static org.apache.flink.configuration.HistoryServerOptions.HISTORY_SERVER_LAZY_FETCH_EXECUTOR_INDIVIDUAL_POOL_SIZE; +import static org.apache.flink.configuration.HistoryServerOptions.HistoryServerArchiveLoadMode.LAZY; import static org.apache.flink.runtime.webmonitor.history.HistoryServerApplicationArchiveFetcher.APPLICATIONS_SUBDIR; import static org.apache.flink.runtime.webmonitor.history.HistoryServerApplicationArchiveFetcher.APPLICATION_OVERVIEWS_SUBDIR; import static org.apache.flink.runtime.webmonitor.history.HistoryServerArchiveFetcher.JOBS_SUBDIR; @@ -259,6 +261,7 @@ public HistoryServer( archiveLoadMode = config.get(HistoryServerOptions.HISTORY_SERVER_ARCHIVE_LOAD_MODE); HistoryServerOptions.HistoryServerArchiveStorageType archiveStorageType = config.get(HistoryServerOptions.HISTORY_SERVER_ARCHIVE_STORAGE_TYPE); + AbstractHistoryServerHandler.HistoryServerHandlerFactory historyServerHandlerFactory; switch (archiveStorageType) { case FILE: // create directories for job and application overview updates @@ -267,17 +270,15 @@ public HistoryServer( Files.createDirectories(webDir.toPath().resolve(APPLICATIONS_SUBDIR)); Files.createDirectories(webDir.toPath().resolve(APPLICATION_OVERVIEWS_SUBDIR)); archiveStorage = new FileArchiveStorage(webDir); - historyServerHandler = - new HistoryServerStaticFileServerHandler( - (FileArchiveStorage) archiveStorage, webDir); + historyServerHandlerFactory = + createFileHandlerFactory((FileArchiveStorage) archiveStorage, webDir); break; case ROCKSDB: File dbPath = new File(webDir, "rocksdb-" + UUID.randomUUID()); Files.createDirectories(dbPath.toPath()); archiveStorage = new RocksDBArchiveStorage(dbPath, config); - historyServerHandler = - new HistoryServerRocksDBHandler( - (RocksDBArchiveStorage) archiveStorage, webDir); + historyServerHandlerFactory = + createRocksDBHandlerFactory((RocksDBArchiveStorage) archiveStorage, webDir); break; default: throw new FlinkException("Unsupported archive storage type: " + archiveStorageType); @@ -288,6 +289,8 @@ public HistoryServer( new ConcurrentHashMap<>(); int lazyFetchExecutorCommonPoolSize = config.get(HISTORY_SERVER_LAZY_FETCH_EXECUTOR_COMMON_POOL_SIZE); + int lazyFetchExecutorIndividualPoolSize = + config.get(HISTORY_SERVER_LAZY_FETCH_EXECUTOR_INDIVIDUAL_POOL_SIZE); archiveFetcher = new HistoryServerArchiveFetcher<>( refreshDirs, @@ -297,7 +300,8 @@ public HistoryServer( CompositeArchiveRetainedStrategy.createForJobFromConfig(config), archiveStorage, archiveMetaInfoCache, - lazyFetchExecutorCommonPoolSize); + lazyFetchExecutorCommonPoolSize, + lazyFetchExecutorIndividualPoolSize); applicationArchiveFetcher = new HistoryServerApplicationArchiveFetcher<>( refreshDirs, @@ -308,7 +312,12 @@ public HistoryServer( archiveStorage, archiveMetaInfoCache, applicationArchiveMetaInfoCache, - lazyFetchExecutorCommonPoolSize); + lazyFetchExecutorCommonPoolSize, + lazyFetchExecutorIndividualPoolSize); + + historyServerHandler = + historyServerHandlerFactory.createHistoryServerHandler( + archiveFetcher, applicationArchiveFetcher); this.shutdownHook = ShutdownHookUtil.addShutdownHook( @@ -364,6 +373,30 @@ public void run() { } } + @SuppressWarnings("unchecked") + private AbstractHistoryServerHandler.HistoryServerHandlerFactory createFileHandlerFactory( + FileArchiveStorage fileArchiveStorage, File webDir) { + return (archiveFetcher, applicationArchiveFetcher) -> + new HistoryServerStaticFileServerHandler( + fileArchiveStorage, + archiveLoadMode, + (HistoryServerArchiveFetcher) archiveFetcher, + (HistoryServerApplicationArchiveFetcher) applicationArchiveFetcher, + webDir); + } + + @SuppressWarnings("unchecked") + private AbstractHistoryServerHandler.HistoryServerHandlerFactory createRocksDBHandlerFactory( + RocksDBArchiveStorage rocksDBArchiveStorage, File webDir) { + return (archiveFetcher, applicationArchiveFetcher) -> + new HistoryServerRocksDBHandler( + rocksDBArchiveStorage, + archiveLoadMode, + (HistoryServerArchiveFetcher) archiveFetcher, + (HistoryServerApplicationArchiveFetcher) applicationArchiveFetcher, + webDir); + } + // ------------------------------------------------------------------------ // Life-cycle // ------------------------------------------------------------------------ @@ -399,11 +432,20 @@ void start() throws IOException, InterruptedException { createDashboardConfigFile(); router.addGet("/:*", historyServerHandler); - executor.scheduleWithFixedDelay( - getArchiveFetchingRunnable(archiveLoadMode), - 0, - refreshIntervalMillis, - TimeUnit.MILLISECONDS); + if (LAZY.equals(archiveLoadMode)) { + executor.submit(getArchiveFetchingRunnable(archiveLoadMode)); + executor.scheduleWithFixedDelay( + getArchiveCleaningRunnable(), + refreshIntervalMillis, + refreshIntervalMillis, + TimeUnit.MILLISECONDS); + } else { + executor.scheduleWithFixedDelay( + getArchiveFetchingRunnable(archiveLoadMode), + 0, + refreshIntervalMillis, + TimeUnit.MILLISECONDS); + } netty = new WebFrontendBootstrap( @@ -421,6 +463,15 @@ private Runnable getArchiveFetchingRunnable( FatalExitExceptionHandler.INSTANCE); } + private Runnable getArchiveCleaningRunnable() { + return Runnables.withUncaughtExceptionHandler( + () -> { + archiveFetcher.cleanUpArchives(archiveLoadMode); + applicationArchiveFetcher.cleanUpArchives(archiveLoadMode); + }, + FatalExitExceptionHandler.INSTANCE); + } + void stop() { if (shutdownRequested.compareAndSet(false, true)) { synchronized (startupShutdownLock) { diff --git a/flink-runtime-web/src/main/java/org/apache/flink/runtime/webmonitor/history/HistoryServerApplicationArchiveFetcher.java b/flink-runtime-web/src/main/java/org/apache/flink/runtime/webmonitor/history/HistoryServerApplicationArchiveFetcher.java index f3b479aaf16aa7..038abc856323cc 100644 --- a/flink-runtime-web/src/main/java/org/apache/flink/runtime/webmonitor/history/HistoryServerApplicationArchiveFetcher.java +++ b/flink-runtime-web/src/main/java/org/apache/flink/runtime/webmonitor/history/HistoryServerApplicationArchiveFetcher.java @@ -89,7 +89,9 @@ public class HistoryServerApplicationArchiveFetcher ArchiveStorage archiveStorage, ConcurrentHashMap archiveMetaInfoCache, ConcurrentHashMap applicationArchiveMetaInfoCache, - int lazyFetchExecutorCommonPoolSize) { + int lazyFetchExecutorCommonPoolSize, + int lazyFetchExecutorIndividualPoolSize) + throws IOException { super( refreshDirs, webDir, @@ -98,7 +100,8 @@ public class HistoryServerApplicationArchiveFetcher retainedStrategy, archiveStorage, archiveMetaInfoCache, - lazyFetchExecutorCommonPoolSize); + lazyFetchExecutorCommonPoolSize, + lazyFetchExecutorIndividualPoolSize); this.applicationArchiveMetaInfoCache = applicationArchiveMetaInfoCache; for (HistoryServer.RefreshLocation refreshDir : refreshDirs) { @@ -186,7 +189,7 @@ List processArchive( .add(jobId); ArchiveEvent processArchiveEvents = LAZY.equals(archiveLoadMode) - ? lazyProcessJobArchive(jobId, jobArchive.getPath()) + ? lazyProcessJobArchive(jobId, jobArchive.getPath(), false) : processJobArchive(jobId, jobArchive.getPath()); events.add(processArchiveEvents); } @@ -314,7 +317,8 @@ private void updateApplicationOverview() { List lazyProcessArchive(String archiveId, Path archivePath, Path refreshDir) throws Exception { List events = new ArrayList<>(); - ArchiveMetaInfo archiveMetaInfo = new ArchiveMetaInfo(archiveId, OVERVIEW_PARSING); + ArchiveMetaInfo archiveMetaInfo = + new ArchiveMetaInfo(archiveId, OVERVIEW_PARSING, archivePath); ArchiveMetaInfo existing = applicationArchiveMetaInfoCache.putIfAbsent(archiveId, archiveMetaInfo); if (existing != null) { diff --git a/flink-runtime-web/src/main/java/org/apache/flink/runtime/webmonitor/history/HistoryServerArchiveFetcher.java b/flink-runtime-web/src/main/java/org/apache/flink/runtime/webmonitor/history/HistoryServerArchiveFetcher.java index 2de41ed8091d1c..e667d9cd365214 100644 --- a/flink-runtime-web/src/main/java/org/apache/flink/runtime/webmonitor/history/HistoryServerArchiveFetcher.java +++ b/flink-runtime-web/src/main/java/org/apache/flink/runtime/webmonitor/history/HistoryServerArchiveFetcher.java @@ -18,6 +18,7 @@ package org.apache.flink.runtime.webmonitor.history; +import org.apache.flink.annotation.VisibleForTesting; import org.apache.flink.api.common.JobID; import org.apache.flink.api.common.JobStatus; import org.apache.flink.configuration.HistoryServerOptions; @@ -40,6 +41,8 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import javax.annotation.Nullable; + import java.io.File; import java.io.IOException; import java.io.StringWriter; @@ -135,7 +138,9 @@ public ArchiveEventType getType() { /** Executor for loading archives. */ private final ExecutorService commonFetchExecutor; + private final ExecutorService individualFetchExecutor; private final Map> commonFetchTasks; + private final Map> individualFetchTasks; private final ConcurrentHashMap archiveMetaInfoCache; HistoryServerArchiveFetcher( @@ -146,7 +151,9 @@ public ArchiveEventType getType() { ArchiveRetainedStrategy retainedStrategy, ArchiveStorage archiveStorage, ConcurrentHashMap archiveMetaInfoCache, - int lazyFetchExecutorCommonPoolSize) { + int lazyFetchExecutorCommonPoolSize, + int lazyFetchExecutorIndividualPoolSize) + throws IOException { this.refreshDirs = checkNotNull(refreshDirs); this.archiveEventListener = archiveEventListener; this.processExpiredArchiveDeletion = cleanupExpiredArchives; @@ -162,7 +169,12 @@ public ArchiveEventType getType() { Executors.newFixedThreadPool( lazyFetchExecutorCommonPoolSize, new ExecutorThreadFactory("HistoryServer-commonFetchExecutor")); + this.individualFetchExecutor = + Executors.newFixedThreadPool( + lazyFetchExecutorIndividualPoolSize, + new ExecutorThreadFactory("HistoryServer-individualFetchExecutor")); this.commonFetchTasks = new ConcurrentHashMap<>(); + this.individualFetchTasks = new ConcurrentHashMap<>(); updateJobOverview(); if (LOG.isInfoEnabled()) { @@ -174,6 +186,12 @@ public ArchiveEventType getType() { void fetchArchives(HistoryServerOptions.HistoryServerArchiveLoadMode archiveLoadMode) { LOG.debug("Starting archive fetching."); + scanArchives(archiveLoadMode, true); + } + + void scanArchives( + HistoryServerOptions.HistoryServerArchiveLoadMode archiveLoadMode, boolean fetch) { + LOG.debug("Starting archive fetching."); try { List events = new ArrayList<>(); Map> archivesToRemove = new HashMap<>(); @@ -211,7 +229,9 @@ void fetchArchives(HistoryServerOptions.HistoryServerArchiveLoadMode archiveLoad continue; } - fetchArchive(refreshDir, archiveId, archivePath, archiveLoadMode, events); + if (fetch) { + fetchArchive(refreshDir, archiveId, archivePath, archiveLoadMode, events); + } } } @@ -228,7 +248,7 @@ void fetchArchives(HistoryServerOptions.HistoryServerArchiveLoadMode archiveLoad updateOverview(); } events.forEach(archiveEventListener); - LOG.debug("Finished archive fetching."); + LOG.debug("Finished archive scan."); } catch (Exception e) { LOG.error("Critical failure while fetching/processing archives.", e); } @@ -510,17 +530,30 @@ void updateJobOverview() { // -------------------------------- Lazy Load ---------------------------------------- List lazyProcessArchive(String archiveId, Path archivePath, Path refreshDir) throws Exception { - return Collections.singletonList(lazyProcessJobArchive(archiveId, archivePath)); + return Collections.singletonList(lazyProcessJobArchive(archiveId, archivePath, false)); } - ArchiveEvent lazyProcessJobArchive(String jobId, Path jobArchive) throws Exception { - final ArchiveMetaInfo archiveMetaInfo = new ArchiveMetaInfo(jobId, PENDING); + ArchiveEvent lazyProcessJobArchive(String jobId, Path jobArchive, boolean individual) + throws Exception { + final ArchiveMetaInfo archiveMetaInfo = new ArchiveMetaInfo(jobId, PENDING, jobArchive); ArchiveMetaInfo existing = archiveMetaInfoCache.putIfAbsent(jobId, archiveMetaInfo); if (existing != null) { return new ArchiveEvent(jobId, existing.getEventType()); } archiveMetaInfo.setEventType(ArchiveEventType.OVERVIEW_PARSING); + ExecutorService fetchExecutor; + Map> fetchTasks; + if (individual) { + fetchExecutor = individualFetchExecutor; + fetchTasks = individualFetchTasks; + } else { + fetchExecutor = commonFetchExecutor; + fetchTasks = commonFetchTasks; + } + + archiveMetaInfo.setEventType(ArchiveEventType.OVERVIEW_PARSING); + Collection archivedJsons = FsJsonArchivist.readArchivedJsons(jobArchive); List detailArchives = new ArrayList<>(); boolean overviewCreated = false; @@ -554,7 +587,7 @@ ArchiveEvent lazyProcessJobArchive(String jobId, Path jobArchive) throws Excepti if (!detailArchives.isEmpty()) { Future future = - commonFetchExecutor.submit( + fetchExecutor.submit( () -> { try { archiveMetaInfo.setEventType(ArchiveEventType.DETAIL_PARSING); @@ -577,12 +610,15 @@ ArchiveEvent lazyProcessJobArchive(String jobId, Path jobArchive) throws Excepti } } archiveMetaInfo.setEventType(ArchiveEventType.CREATED); + if (individual) { + updateOverview(); + } LOG.debug("Async detail parsing for job {} finished.", jobId); } finally { - commonFetchTasks.remove(jobId); + fetchTasks.remove(jobId); } }); - commonFetchTasks.put(jobId, future); + fetchTasks.put(jobId, future); } ArchiveEventType archiveEventType = @@ -591,15 +627,85 @@ ArchiveEvent lazyProcessJobArchive(String jobId, Path jobArchive) throws Excepti return new ArchiveEvent(jobId, archiveEventType); } + void lazyFetchArchiveProactively(String jobId, @Nullable Path archivePath) throws Exception { + resetWhenTriggerLazyFetch(jobId); + + if (archivePath != null) { + lazyProcessJobArchive(jobId, archivePath, true); + return; + } + + for (HistoryServer.RefreshLocation refreshDir : refreshDirs) { + archivePath = new Path(refreshDir.getPath(), jobId); + if (refreshDir.getFs().exists(archivePath)) { + lazyProcessJobArchive(jobId, archivePath, true); + } + } + } + + void cleanUpArchives(HistoryServerOptions.HistoryServerArchiveLoadMode archiveLoadMode) { + LOG.debug("Starting archive cleanup."); + scanArchives(archiveLoadMode, false); + } + + boolean needLazyLoadIndividually(String jobId) { + ArchiveMetaInfo archiveMetaInfo = archiveMetaInfoCache.get(jobId); + if (archiveMetaInfo == null) { + return true; + } + + switch (archiveMetaInfo.getEventType()) { + case PENDING: + case OVERVIEW_PARSING: + case OVERVIEW_CREATED: + return commonFetchTasks.containsKey(jobId) + && !individualFetchTasks.containsKey(jobId); + default: + return false; + } + } + void cleanUpLazyFetchTask(String jobId) { Future commonFetchTask = commonFetchTasks.get(jobId); if (commonFetchTask != null) { commonFetchTask.cancel(true); + commonFetchTasks.remove(jobId); + } + Future individualFetchTask = individualFetchTasks.get(jobId); + if (individualFetchTask != null) { + individualFetchTask.cancel(true); + individualFetchTasks.remove(jobId); } } @Override public void close() { ExecutorUtils.gracefulShutdown(1L, TimeUnit.SECONDS, commonFetchExecutor); + ExecutorUtils.gracefulShutdown(1L, TimeUnit.SECONDS, individualFetchExecutor); + } + + @VisibleForTesting + Future getCommonFetchTask(String jobId) { + return commonFetchTasks.get(jobId); + } + + void resetWhenTriggerLazyFetch(String jobId) { + archiveMetaInfoCache.remove(jobId); + cleanUpLazyFetchTask(jobId); + } + + void waitLazyFetchArchiveFinished(String jobId) throws Exception { + Future commonFetchTask = commonFetchTasks.get(jobId); + if (commonFetchTask != null) { + commonFetchTask.get(); + } + Future individualFetchTask = individualFetchTasks.get(jobId); + if (individualFetchTask != null) { + individualFetchTask.get(); + } + } + + ArchiveMetaInfo getArchiveMetaInfo(String jobId) { + return archiveMetaInfoCache.get(jobId); } } diff --git a/flink-runtime-web/src/main/java/org/apache/flink/runtime/webmonitor/history/HistoryServerRocksDBHandler.java b/flink-runtime-web/src/main/java/org/apache/flink/runtime/webmonitor/history/HistoryServerRocksDBHandler.java index 147bc93eaf9408..f6b5a67a0ce48d 100644 --- a/flink-runtime-web/src/main/java/org/apache/flink/runtime/webmonitor/history/HistoryServerRocksDBHandler.java +++ b/flink-runtime-web/src/main/java/org/apache/flink/runtime/webmonitor/history/HistoryServerRocksDBHandler.java @@ -19,6 +19,7 @@ package org.apache.flink.runtime.webmonitor.history; +import org.apache.flink.configuration.HistoryServerOptions; import org.apache.flink.runtime.rest.handler.util.HandlerUtils; import org.apache.flink.shaded.netty4.io.netty.channel.ChannelHandler; @@ -40,9 +41,14 @@ @ChannelHandler.Sharable public class HistoryServerRocksDBHandler extends AbstractHistoryServerHandler { - public HistoryServerRocksDBHandler(RocksDBArchiveStorage rocksDBArchiveStorage, File rootPath) + public HistoryServerRocksDBHandler( + ArchiveStorage archiveStorage, + HistoryServerOptions.HistoryServerArchiveLoadMode archiveLoadMode, + HistoryServerArchiveFetcher archiveFetcher, + HistoryServerApplicationArchiveFetcher applicationArchiveFetcher, + File rootPath) throws IOException { - super(rocksDBArchiveStorage, rootPath); + super(archiveStorage, archiveLoadMode, archiveFetcher, applicationArchiveFetcher, rootPath); } @Override diff --git a/flink-runtime-web/src/main/java/org/apache/flink/runtime/webmonitor/history/HistoryServerStaticFileServerHandler.java b/flink-runtime-web/src/main/java/org/apache/flink/runtime/webmonitor/history/HistoryServerStaticFileServerHandler.java index 695f8edfffeb3b..28e0e0b7a7cbd5 100644 --- a/flink-runtime-web/src/main/java/org/apache/flink/runtime/webmonitor/history/HistoryServerStaticFileServerHandler.java +++ b/flink-runtime-web/src/main/java/org/apache/flink/runtime/webmonitor/history/HistoryServerStaticFileServerHandler.java @@ -26,6 +26,8 @@ * https://github.com/netty/netty/blob/4.0/example/src/main/java/io/netty/example/http/file/HttpStaticFileServerHandler.java * *************************************************************************** */ +import org.apache.flink.annotation.VisibleForTesting; +import org.apache.flink.configuration.HistoryServerOptions; import org.apache.flink.runtime.rest.handler.legacy.files.StaticFileServerHandler; import org.apache.flink.shaded.netty4.io.netty.channel.ChannelHandler; @@ -35,6 +37,8 @@ import java.io.File; import java.io.IOException; +import static org.apache.flink.configuration.HistoryServerOptions.HistoryServerArchiveLoadMode.EAGER; + /** * Simple file server handler used by the {@link HistoryServer} that serves requests to web * frontend's static files, such as HTML, CSS, JS or JSON files. @@ -52,13 +56,20 @@ public class HistoryServerStaticFileServerHandler extends AbstractHistoryServerH // ------------------------------------------------------------------------ - public HistoryServerStaticFileServerHandler(File rootPath) throws IOException { - this(new FileArchiveStorage(rootPath), rootPath); + @VisibleForTesting + public HistoryServerStaticFileServerHandler(ArchiveStorage archiveStorage, File rootPath) + throws IOException { + this(archiveStorage, EAGER, null, null, rootPath); } public HistoryServerStaticFileServerHandler( - FileArchiveStorage fileArchiveStorage, File rootPath) throws IOException { - super(fileArchiveStorage, rootPath); + ArchiveStorage archiveStorage, + HistoryServerOptions.HistoryServerArchiveLoadMode archiveLoadMode, + HistoryServerArchiveFetcher archiveFetcher, + HistoryServerApplicationArchiveFetcher applicationArchiveFetcher, + File rootPath) + throws IOException { + super(archiveStorage, archiveLoadMode, archiveFetcher, applicationArchiveFetcher, rootPath); } // ------------------------------------------------------------------------ diff --git a/flink-runtime-web/src/test/java/org/apache/flink/runtime/webmonitor/history/AbstractHistoryServerHandlerTest.java b/flink-runtime-web/src/test/java/org/apache/flink/runtime/webmonitor/history/AbstractHistoryServerHandlerTest.java index 479f3dcb07b539..cbff6ef4496980 100644 --- a/flink-runtime-web/src/test/java/org/apache/flink/runtime/webmonitor/history/AbstractHistoryServerHandlerTest.java +++ b/flink-runtime-web/src/test/java/org/apache/flink/runtime/webmonitor/history/AbstractHistoryServerHandlerTest.java @@ -18,8 +18,10 @@ package org.apache.flink.runtime.webmonitor.history; +import org.apache.flink.api.common.JobID; import org.apache.flink.api.java.tuple.Tuple2; import org.apache.flink.configuration.Configuration; +import org.apache.flink.configuration.HistoryServerOptions.HistoryServerArchiveLoadMode; import org.apache.flink.runtime.rest.handler.router.Router; import org.apache.flink.runtime.webmonitor.testutils.HttpUtils; import org.apache.flink.runtime.webmonitor.utils.WebFrontendBootstrap; @@ -35,12 +37,23 @@ import org.slf4j.LoggerFactory; import java.io.File; +import java.io.IOException; import java.nio.file.Files; import java.nio.file.Path; import java.util.Arrays; import java.util.Collection; +import java.util.Collections; +import java.util.List; import java.util.UUID; +import java.util.concurrent.CompletableFuture; +import java.util.concurrent.ConcurrentHashMap; +import java.util.concurrent.TimeUnit; +import java.util.concurrent.atomic.AtomicReference; +import static org.apache.flink.configuration.HistoryServerOptions.HistoryServerArchiveLoadMode.EAGER; +import static org.apache.flink.configuration.HistoryServerOptions.HistoryServerArchiveLoadMode.LAZY; +import static org.apache.flink.runtime.webmonitor.history.HistoryServerTestUtils.createJobArchive; +import static org.apache.flink.runtime.webmonitor.history.HistoryServerTestUtils.createRefreshLocation; import static org.assertj.core.api.Assertions.assertThat; /** @@ -50,10 +63,37 @@ @ExtendWith(ParameterizedTestExtension.class) public class AbstractHistoryServerHandlerTest { + @Parameter public HandlerFactory handlerFactory; + + @TempDir private Path tmpDir; + private Path uploadDir; + private Path remoteArchiveRootPath; + + private Path webDir; + private AbstractHistoryServerHandler handler; + private WebFrontendBootstrap webUI; + private String baseUrl; + /** Factory that creates a concrete handler bound to the given web directory. */ @FunctionalInterface public interface HandlerFactory { - AbstractHistoryServerHandler create(File webDir) throws Exception; + AbstractHistoryServerHandler create( + File webDir, + HistoryServerArchiveLoadMode archiveLoadMode, + List refreshDirs) + throws Exception; + } + + /** Constructor reference for a concrete {@link AbstractHistoryServerHandler} subclass. */ + @FunctionalInterface + private interface HandlerConstructor { + AbstractHistoryServerHandler create( + ArchiveStorage archiveStorage, + HistoryServerArchiveLoadMode archiveLoadMode, + HistoryServerArchiveFetcher archiveFetcher, + HistoryServerApplicationArchiveFetcher applicationArchiveFetcher, + File webDir) + throws IOException; } /** @@ -62,32 +102,98 @@ public interface HandlerFactory { */ @Parameters(name = "handlerFactory={0}") private static Collection handlerFactories() { - HandlerFactory staticFileServerHandlerFactory = HistoryServerStaticFileServerHandler::new; + HandlerFactory staticFileServerHandlerFactory = + (webDir, mode, refreshDirs) -> + buildHandler( + webDir, + mode, + refreshDirs, + new FileArchiveStorage(webDir), + HistoryServerStaticFileServerHandler::new); + HandlerFactory rocksDBHandlerFactory = - webDir -> - new HistoryServerRocksDBHandler( - new RocksDBArchiveStorage( - new File(webDir, "rocksdb-" + UUID.randomUUID()), - new Configuration()), - webDir); + (webDir, mode, refreshDirs) -> { + File dbPath = new File(webDir, "rocksdb-" + UUID.randomUUID()); + Files.createDirectories(dbPath.toPath()); + return buildHandler( + webDir, + mode, + refreshDirs, + new RocksDBArchiveStorage(dbPath, new Configuration()), + HistoryServerRocksDBHandler::new); + }; + return Arrays.asList(staticFileServerHandlerFactory, rocksDBHandlerFactory); } - @Parameter public HandlerFactory handlerFactory; + private static AbstractHistoryServerHandler buildHandler( + File webDir, + HistoryServerArchiveLoadMode mode, + List refreshDirs, + ArchiveStorage baseStorage, + HandlerConstructor handlerCtor) + throws Exception { + ArchiveStorage storage = + LAZY == mode + ? new HistoryServerTestUtils.BlockingArchiveStorage<>( + baseStorage, "/config") + : baseStorage; - @TempDir private Path tmpDir; + ConcurrentHashMap jobMetaInfoCache = new ConcurrentHashMap<>(); + ConcurrentHashMap applicationMetaInfoCache = + new ConcurrentHashMap<>(); - private Path webDir; - private AbstractHistoryServerHandler handler; - private WebFrontendBootstrap webUI; - private String baseUrl; + HistoryServerArchiveFetcher archiveFetcher = + new HistoryServerArchiveFetcher<>( + refreshDirs, + webDir, + ignored -> {}, + false, + HistoryServerTestUtils.RETAIN_ALL, + storage, + jobMetaInfoCache, + 4, + 4); + HistoryServerApplicationArchiveFetcher applicationArchiveFetcher = + new HistoryServerApplicationArchiveFetcher<>( + refreshDirs, + webDir, + ignored -> {}, + false, + HistoryServerTestUtils.RETAIN_ALL, + storage, + jobMetaInfoCache, + applicationMetaInfoCache, + 4, + 4); + + return handlerCtor.create(storage, mode, archiveFetcher, applicationArchiveFetcher, webDir); + } @BeforeEach void setUp() throws Exception { webDir = Files.createDirectory(tmpDir.resolve("webDir")); - final Path uploadDir = Files.createDirectory(tmpDir.resolve("uploadDir")); + uploadDir = Files.createDirectory(tmpDir.resolve("uploadDir")); + remoteArchiveRootPath = Files.createDirectories(tmpDir.resolve("remote")); + + // Default: eager mode + startServer(EAGER); + } + + @AfterEach + void tearDown() { + stopServer(); + } + + /** Support recreates the handler and web frontend for the given load mode. */ + private void startServer(HistoryServerArchiveLoadMode archiveLoadMode) throws Exception { + stopServer(); + + List refreshDirs = + Collections.singletonList(createRefreshLocation(remoteArchiveRootPath.toFile())); + + this.handler = handlerFactory.create(webDir.toFile(), archiveLoadMode, refreshDirs); - handler = handlerFactory.create(webDir.toFile()); Router router = new Router().addGet("/:*", handler); webUI = new WebFrontendBootstrap( @@ -101,10 +207,10 @@ void setUp() throws Exception { baseUrl = "http://localhost:" + webUI.getServerPort(); } - @AfterEach - void tearDown() { + private void stopServer() { if (webUI != null) { webUI.shutdown(); + webUI = null; } } @@ -184,4 +290,88 @@ void testRespondWithResource() throws Exception { assertThat(missing.f0).isEqualTo(404); assertThat(missing.f1).contains("not found"); } + + /** + * Tests {@code AbstractHistoryServerHandler#loadResource} in {@code LAZY} mode using a {@link + * HistoryServerTestUtils.BlockingArchiveStorage} to suspend writes for the detail key {@code + * jobs//config}. + * + *

Verifies the three core lazy-load behaviours: + * + *

    + *
  • requesting {@code /jobs/overview} triggers a synchronous phase-1 fetch that writes the + * overview keys but leaves the detail key blocked in an asynchronous task; + *
  • once phase-1 has completed, requesting {@code /jobs/} is served immediately from + * the archive storage without waiting for the asynchronous detail task; + *
  • requesting {@code /jobs//config} blocks until the asynchronous detail task is + * allowed to finish, after which the response is served successfully. + *
+ */ + @TestTemplate + void testLazyModeLoadResource() throws Exception { + // Default mode is EAGER, we need to recreate the handler for LAZY mode with + // BlockingArchiveStorage. + startServer(LAZY); + + JobID jobId = JobID.generate(); + createJobArchive(remoteArchiveRootPath.toFile(), jobId, true); + + // Phase 1: requesting /jobs/overview triggers a synchronous fetch + // that writes the overview keys; the detail key is queued for an + // asynchronous write that is now blocked on releaseLatch. + Tuple2 overviewResponse = + HttpUtils.getFromHTTP(baseUrl + "/jobs/overview"); + assertThat(overviewResponse.f0).isEqualTo(200); + assertThat(overviewResponse.f1).contains(jobId.toString()); + + // The asynchronous detail write must have been reached by now. + assertThat(handler.archiveStorage) + .isInstanceOf(HistoryServerTestUtils.BlockingArchiveStorage.class); + HistoryServerTestUtils.BlockingArchiveStorage blockingArchiveStorage = + (HistoryServerTestUtils.BlockingArchiveStorage) handler.archiveStorage; + boolean asyncReached = blockingArchiveStorage.asyncStartLatch.await(10, TimeUnit.SECONDS); + assertThat(asyncReached).isTrue(); + + // Phase 1 keys are present, but the detail key is still blocked. + assertThat(blockingArchiveStorage.exists("overviews/" + jobId + ".json")).isTrue(); + assertThat(blockingArchiveStorage.exists("jobs/" + jobId + ".json")).isTrue(); + assertThat(blockingArchiveStorage.exists("jobs/overview.json")).isTrue(); + assertThat(blockingArchiveStorage.exists("jobs/" + jobId + "/config.json")).isFalse(); + + // Phase 2: a request for /jobs/ can be served immediately + // from the storage even though the detail task is still blocked. + Tuple2 jobResponse = HttpUtils.getFromHTTP(baseUrl + "/jobs/" + jobId); + assertThat(jobResponse.f0).isEqualTo(200); + assertThat(jobResponse.f1).contains(jobId.toString()); + assertThat(blockingArchiveStorage.exists("jobs/" + jobId + "/config.json")).isFalse(); + + // Phase 3: a request for /jobs//config will wait for the + // asynchronous detail task to finish. Issue it on a separate + // thread, verify it is still in flight, then release the latch. + AtomicReference> detailResponse = new AtomicReference<>(); + CompletableFuture detailFuture = + CompletableFuture.runAsync( + () -> { + try { + detailResponse.set( + HttpUtils.getFromHTTP( + baseUrl + "/jobs/" + jobId + "/config")); + } catch (Exception e) { + throw new RuntimeException(e); + } + }); + + // Give the detail request enough time to reach + // waitLazyFetchArchiveFinished and block on the still-suspended async + // detail task. It must not have completed yet. + Thread.sleep(500); + assertThat(detailFuture.isDone()).isFalse(); + + blockingArchiveStorage.releaseLatch.countDown(); + + detailFuture.get(10, TimeUnit.SECONDS); + assertThat(detailResponse.get().f0).isEqualTo(200); + assertThat(detailResponse.get().f1).contains(jobId.toString()); + assertThat(blockingArchiveStorage.exists("jobs/" + jobId + "/config.json")).isTrue(); + } } diff --git a/flink-runtime-web/src/test/java/org/apache/flink/runtime/webmonitor/history/HistoryServerApplicationArchiveFetcherTest.java b/flink-runtime-web/src/test/java/org/apache/flink/runtime/webmonitor/history/HistoryServerApplicationArchiveFetcherTest.java index 8775be5eb7aaef..05f5e168389d9d 100644 --- a/flink-runtime-web/src/test/java/org/apache/flink/runtime/webmonitor/history/HistoryServerApplicationArchiveFetcherTest.java +++ b/flink-runtime-web/src/test/java/org/apache/flink/runtime/webmonitor/history/HistoryServerApplicationArchiveFetcherTest.java @@ -194,6 +194,7 @@ private HistoryServerApplicationArchiveFetcher createApplicationArchiveF storage, jobMetaInfoCache, applicationMetaInfoCache, + 4, 4); } diff --git a/flink-runtime-web/src/test/java/org/apache/flink/runtime/webmonitor/history/HistoryServerArchiveFetcherTest.java b/flink-runtime-web/src/test/java/org/apache/flink/runtime/webmonitor/history/HistoryServerArchiveFetcherTest.java index ff929837fd96c2..612d156f244206 100644 --- a/flink-runtime-web/src/test/java/org/apache/flink/runtime/webmonitor/history/HistoryServerArchiveFetcherTest.java +++ b/flink-runtime-web/src/test/java/org/apache/flink/runtime/webmonitor/history/HistoryServerArchiveFetcherTest.java @@ -121,6 +121,7 @@ private HistoryServerArchiveFetcher createArchiveFetcher( RETAIN_ALL, storage, archiveMetaInfoCache, + 4, 4); } @@ -231,7 +232,8 @@ void testLazyProcessJobArchiveThrowsForEmptyArchive() throws Exception { HistoryServerArchiveFetcher fetcher = createArchiveFetcher(remoteArchiveRootPath, false, archiveStorage); - assertThatThrownBy(() -> fetcher.lazyProcessJobArchive(jobId.toString(), archivePath)) + assertThatThrownBy( + () -> fetcher.lazyProcessJobArchive(jobId.toString(), archivePath, false)) .isInstanceOf(RuntimeException.class) .hasMessage("Archive of job " + jobId + " is empty"); @@ -275,7 +277,8 @@ void testArchiveStateTransition() throws Exception { // try to call lazyProcessJobArchive again, should return DETAIL_PARSING. HistoryServerArchiveFetcher.ArchiveEvent callAgainEvent = - fetcher.lazyProcessJobArchive(jobIdWithDetail.toString(), jobWithDetailArchivePath); + fetcher.lazyProcessJobArchive( + jobIdWithDetail.toString(), jobWithDetailArchivePath, false); assertThat(callAgainEvent.getType()).isEqualTo(DETAIL_PARSING); // Phase 2: execute the asynchronous task @@ -352,4 +355,75 @@ void testLegacyJobOverviewMigration() throws Exception { assertThat(archiveStorage.exists("overviews/" + jobId + ".json")).isTrue(); assertThat(archiveStorage.exists("jobs/overview.json")).isTrue(); } + + @TestTemplate + void testScanArchivesWithoutFetch() throws Exception { + JobID jobId = JobID.generate(); + createJobArchive(remoteArchiveRootPath, jobId, true); + + HistoryServerArchiveFetcher fetcher = + createArchiveFetcher(remoteArchiveRootPath, true, archiveStorage); + + fetcher.scanArchives(EAGER, false); + assertThat(archiveEvents).isEmpty(); + assertThat(archiveStorage.exists("overviews/" + jobId + ".json")).isFalse(); + } + + @TestTemplate + void testLazyFetchArchiveProactively() throws Exception { + // with explicit path + JobID jobId = JobID.generate(); + Path archivePath = createJobArchive(remoteArchiveRootPath, jobId, true); + + HistoryServerArchiveFetcher fetcher = + createArchiveFetcher(remoteArchiveRootPath, false, archiveStorage); + + fetcher.lazyFetchArchiveProactively(jobId.toString(), archivePath); + waitForArchiveLoaded(archiveMetaInfoCache, jobId.toString()); + + assertThat(archiveMetaInfoCache.get(jobId.toString()).getEventType()).isEqualTo(CREATED); + assertThat(archiveStorage.exists("overviews/" + jobId + ".json")).isTrue(); + assertThat(archiveStorage.exists("jobs/" + jobId + ".json")).isTrue(); + assertThat(archiveStorage.exists("jobs/" + jobId + "/config.json")).isTrue(); + + // without explicit path + jobId = JobID.generate(); + createJobArchive(remoteArchiveRootPath, jobId, true); + + // call without explicit path; the fetcher should locate the archive in refreshDirs. + fetcher.lazyFetchArchiveProactively(jobId.toString(), null); + waitForArchiveLoaded(archiveMetaInfoCache, jobId.toString()); + + assertThat(archiveMetaInfoCache.get(jobId.toString()).getEventType()).isEqualTo(CREATED); + assertThat(archiveStorage.exists("overviews/" + jobId + ".json")).isTrue(); + assertThat(archiveStorage.exists("jobs/" + jobId + ".json")).isTrue(); + assertThat(archiveStorage.exists("jobs/" + jobId + "/config.json")).isTrue(); + } + + @TestTemplate + void testCleanUpLazyFetchTaskCancelsRunningFuture() throws Exception { + JobID jobId = JobID.generate(); + createJobArchive(remoteArchiveRootPath, jobId, true); + + HistoryServerTestUtils.BlockingArchiveStorage blockingStorage = + new HistoryServerTestUtils.BlockingArchiveStorage<>( + archiveStorage, "jobs/" + jobId + "/config"); + archiveStorage = blockingStorage; + + HistoryServerArchiveFetcher fetcher = + createArchiveFetcher(remoteArchiveRootPath, false, blockingStorage); + fetcher.fetchArchives(LAZY); + // make sure the async detail task has started + assertThat(blockingStorage.asyncStartLatch.await(10, TimeUnit.SECONDS)).isTrue(); + assertThat(fetcher.getCommonFetchTask(jobId.toString())).isNotNull(); + assertThat(fetcher.getCommonFetchTask(jobId.toString())).isNotDone(); + + // cancel the in-flight task + fetcher.cleanUpLazyFetchTask(jobId.toString()); + + assertThat(fetcher.getCommonFetchTask(jobId.toString())).isNull(); + assertThat(archiveStorage.exists("overviews/" + jobId + ".json")).isTrue(); + assertThat(archiveStorage.exists("jobs/" + jobId + ".json")).isTrue(); + assertThat(archiveStorage.exists("jobs/" + jobId + "/config.json")).isFalse(); + } } diff --git a/flink-runtime-web/src/test/java/org/apache/flink/runtime/webmonitor/utils/WebFrontendBootstrapTest.java b/flink-runtime-web/src/test/java/org/apache/flink/runtime/webmonitor/utils/WebFrontendBootstrapTest.java index 968dcf73a7d17f..6a4bc3f97150b1 100644 --- a/flink-runtime-web/src/test/java/org/apache/flink/runtime/webmonitor/utils/WebFrontendBootstrapTest.java +++ b/flink-runtime-web/src/test/java/org/apache/flink/runtime/webmonitor/utils/WebFrontendBootstrapTest.java @@ -24,6 +24,7 @@ import org.apache.flink.runtime.io.network.netty.Prio0InboundChannelHandlerFactory; import org.apache.flink.runtime.io.network.netty.Prio1InboundChannelHandlerFactory; import org.apache.flink.runtime.rest.handler.router.Router; +import org.apache.flink.runtime.webmonitor.history.FileArchiveStorage; import org.apache.flink.runtime.webmonitor.history.HistoryServerStaticFileServerHandler; import org.apache.flink.runtime.webmonitor.testutils.HttpUtils; import org.apache.flink.testutils.junit.extensions.ContextClassLoaderExtension; @@ -34,6 +35,7 @@ import org.junit.jupiter.api.io.TempDir; import org.slf4j.LoggerFactory; +import java.io.File; import java.nio.file.Files; import java.nio.file.Path; @@ -57,12 +59,16 @@ class WebFrontendBootstrapTest { @Test void testHandlersMustBeLoaded() throws Exception { Path webDir = Files.createDirectories(tmp.resolve("webDir")); + File webDirFile = webDir.toFile(); Configuration configuration = new Configuration(); configuration.set(Prio0InboundChannelHandlerFactory.REDIRECT_FROM_URL, "/nonExisting"); configuration.set(Prio0InboundChannelHandlerFactory.REDIRECT_TO_URL, "/index.html"); Router router = new Router<>() - .addGet("/:*", new HistoryServerStaticFileServerHandler(webDir.toFile())); + .addGet( + "/:*", + new HistoryServerStaticFileServerHandler( + new FileArchiveStorage(webDirFile), webDirFile)); WebFrontendBootstrap webUI = new WebFrontendBootstrap( router, From d8660309854d02a3f55e50f8d80b64c23bb76f55 Mon Sep 17 00:00:00 2001 From: Zihao Chen Date: Tue, 7 Jul 2026 17:44:23 +0800 Subject: [PATCH 18/32] [FLINK-40097][docs] Document archive load modes of HistoryServer --- .../docs/deployment/advanced/historyserver.md | 18 ++++++++++++++++++ .../docs/deployment/advanced/historyserver.md | 18 ++++++++++++++++++ 2 files changed, 36 insertions(+) diff --git a/docs/content.zh/docs/deployment/advanced/historyserver.md b/docs/content.zh/docs/deployment/advanced/historyserver.md index 748dbd867fc456..21ef3728c23002 100644 --- a/docs/content.zh/docs/deployment/advanced/historyserver.md +++ b/docs/content.zh/docs/deployment/advanced/historyserver.md @@ -98,6 +98,24 @@ HistoryServer 支æŒé€šè¿‡ `historyserver.archive.storage.type` 选择本地存 historyserver.archive.storage.type: ROCKSDB ``` +**加载模å¼** + +HistoryServer 支æŒä¸¤ç§åŠ è½½æ¨¡å¼ï¼Œé€šè¿‡ `historyserver.archive.load.mode` é…置: + +* `EAGER`(默认):通过周期性的åŽå°åˆ·æ–°ï¼Œè‡ªåЍã€åŒæ­¥åœ°å°†å­˜æ¡£ä¸‹è½½åˆ°æœ¬åœ°å­˜å‚¨ã€‚ +* `LAZY`:存档会立å³å±•示在 Web 界é¢ä¸Šï¼Œåº•层数æ®åˆ™åœ¨åŽå°å¼‚步拉å–。如果æŸä¸ªå­˜æ¡£åœ¨å…¶åŽå°ä¸‹è½½å®Œæˆä¹‹å‰è¢«è®¿é—®ï¼Œç³»ç»Ÿä¼šä¼˜å…ˆæŒ‰éœ€æ‹‰å–该存档。 + +å¯ç”¨æ‡’加载模å¼ç¤ºä¾‹ï¼š + +```yaml +historyserver.archive.load.mode: LAZY +``` + +在 `LAZY` 模å¼ä¸‹ï¼ŒæŒ‰éœ€æ‹‰å–使用两个线程池: + +* `historyserver.lazy.fetch.executor.common.pool-size` —— 用于常规åŽå°å­˜æ¡£æ‹‰å–的共享线程池的大å°ã€‚ +* `historyserver.lazy.fetch.executor.individual.pool-size` —— 专用于按需拉å–å•个存档(例如用户访问æŸä¸ªå­˜æ¡£æ—¶ï¼‰çš„高优先级线程池的大å°ã€‚ + ## æ—¥å¿—é›†æˆ Flink æœ¬èº«å¹¶ä¸æä¾›å·²å®Œæˆä½œä¸šçš„æ—¥å¿—收集功能。 diff --git a/docs/content/docs/deployment/advanced/historyserver.md b/docs/content/docs/deployment/advanced/historyserver.md index 607f08b826b07e..842b73e3a0b6b6 100644 --- a/docs/content/docs/deployment/advanced/historyserver.md +++ b/docs/content/docs/deployment/advanced/historyserver.md @@ -92,6 +92,24 @@ Example for enabling the RocksDB backend: historyserver.archive.storage.type: ROCKSDB ``` +**Archive Load Mode** + +The HistoryServer supports two modes for loading archives, selected via `historyserver.archive.load.mode`: + +* `EAGER` (default): Archives are automatically and synchronously downloaded to local storage via periodic background refreshes. +* `LAZY`: Archives are displayed on the web interface immediately, while the underlying data is fetched asynchronously in the background. If a specific archive is accessed before its background download completes, the system will prioritize and fetch it on demand. + +Example for enabling the lazy loading: + +```yaml +historyserver.archive.load.mode: LAZY +``` + +In `LAZY` mode, on-demand fetches use two thread pools: + +* `historyserver.lazy.fetch.executor.common.pool-size` — The size of the shared thread pool used for routine, background archive fetching. +* `historyserver.lazy.fetch.executor.individual.pool-size` — The size of the high-priority thread pool dedicated to fetching individual archives on demand (e.g., when a user accesses them). + ## Log Integration Flink does not provide built-in methods for archiving logs of completed jobs. From c762aa5948c277d130f68daaa5d0443f73da8f01 Mon Sep 17 00:00:00 2001 From: Sergey Nuyanzin Date: Wed, 22 Jul 2026 09:44:50 +0200 Subject: [PATCH 19/32] [FLINK-40205][table] PTF are failing in case of usage multiple `PARTITION`/`ORDER BY` --- .../src/main/codegen/templates/Parser.jj | 3 +- .../sql/SqlSetSemanticsTableOperator.java | 91 +++++++++++++++++++ .../ProcessTableFunctionSemanticTests.java | 2 + .../ProcessTableFunctionTestPrograms.java | 82 +++++++++++++++++ 4 files changed, 177 insertions(+), 1 deletion(-) create mode 100644 flink-table/flink-table-planner/src/main/java/org/apache/calcite/sql/SqlSetSemanticsTableOperator.java diff --git a/flink-table/flink-sql-parser/src/main/codegen/templates/Parser.jj b/flink-table/flink-sql-parser/src/main/codegen/templates/Parser.jj index cb9121e97d183a..a031434e8ca709 100644 --- a/flink-table/flink-sql-parser/src/main/codegen/templates/Parser.jj +++ b/flink-table/flink-sql-parser/src/main/codegen/templates/Parser.jj @@ -1658,7 +1658,8 @@ SqlNode PartitionedQueryOrQueryOrExpr(ExprContext exprContext) : SqlNode e; } { - e = OrderedQueryOrExpr(exprContext) + // QueryOrExpr, not OrderedQueryOrExpr: ORDER BY is handled by PartitionedByAndOrderBy below. + e = QueryOrExpr(exprContext) e = PartitionedByAndOrderBy(e) { return e; } diff --git a/flink-table/flink-table-planner/src/main/java/org/apache/calcite/sql/SqlSetSemanticsTableOperator.java b/flink-table/flink-table-planner/src/main/java/org/apache/calcite/sql/SqlSetSemanticsTableOperator.java new file mode 100644 index 00000000000000..385b866c724c1b --- /dev/null +++ b/flink-table/flink-table-planner/src/main/java/org/apache/calcite/sql/SqlSetSemanticsTableOperator.java @@ -0,0 +1,91 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to you under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.calcite.sql; + +import org.apache.calcite.rel.type.RelDataType; +import org.apache.calcite.sql.parser.SqlParserPos; +import org.apache.calcite.sql.validate.SqlValidator; +import org.apache.calcite.sql.validate.SqlValidatorScope; +import org.checkerframework.checker.nullness.qual.Nullable; + +import java.util.List; + +import static java.util.Objects.requireNonNull; + +/** + * Copied from Calcite because of CALCITE-7660. Should be removed after upgrade to Calcite 1.43.0. + */ +public class SqlSetSemanticsTableOperator extends SqlInternalOperator { + + // ~ Constructors ----------------------------------------------------------- + + public SqlSetSemanticsTableOperator() { + super("SET_SEMANTICS_TABLE", SqlKind.SET_SEMANTICS_TABLE); + } + + @Override + public SqlCall createCall( + @Nullable SqlLiteral functionQualifier, + SqlParserPos pos, + @Nullable SqlNode... operands) { + assert operands.length == 3; + SqlNode partitionList = operands[1]; + SqlNode orderList = operands[2]; + assert (partitionList != null && !SqlNodeList.isEmptyList(partitionList)) + || (orderList != null && !SqlNodeList.isEmptyList(orderList)); + return super.createCall(functionQualifier, pos, operands); + } + + @Override + public void unparse(SqlWriter writer, SqlCall call, int leftPrec, int rightPrec) { + call.operand(0).unparse(writer, 0, 0); + + SqlNodeList partitionList = call.operand(1); + if (!partitionList.isEmpty()) { + writer.sep("PARTITION BY"); + // FLINK MODIFICATION BEGIN + final SqlWriter.Frame partitionFrame = + partitionList.size() == 1 + ? writer.startList("", "") + : writer.startList("(", ")"); + // FLINK MODIFICATION END + partitionList.unparse(writer, 0, 0); + writer.endList(partitionFrame); + } + SqlNodeList orderList = call.operand(2); + if (!orderList.isEmpty()) { + writer.sep("ORDER BY"); + // FLINK MODIFICATION BEGIN + final SqlWriter.Frame orderFrame = + orderList.size() == 1 ? writer.startList("", "") : writer.startList("(", ")"); + orderList.unparse(writer, 0, 0); + writer.endList(orderFrame); + // FLINK MODIFICATION END + } + } + + @Override + public RelDataType deriveType(SqlValidator validator, SqlValidatorScope scope, SqlCall call) { + final List operands = call.getOperandList(); + return requireNonNull(validator.deriveType(scope, operands.get(0))); + } + + @Override + public boolean argumentMustBeScalar(int ordinal) { + return false; + } +} diff --git a/flink-table/flink-table-planner/src/test/java/org/apache/flink/table/planner/plan/nodes/exec/stream/ProcessTableFunctionSemanticTests.java b/flink-table/flink-table-planner/src/test/java/org/apache/flink/table/planner/plan/nodes/exec/stream/ProcessTableFunctionSemanticTests.java index 39131ff4ed3c97..2357235b11864b 100644 --- a/flink-table/flink-table-planner/src/test/java/org/apache/flink/table/planner/plan/nodes/exec/stream/ProcessTableFunctionSemanticTests.java +++ b/flink-table/flink-table-planner/src/test/java/org/apache/flink/table/planner/plan/nodes/exec/stream/ProcessTableFunctionSemanticTests.java @@ -42,6 +42,8 @@ public List programs() { ProcessTableFunctionTestPrograms.PROCESS_SET_SEMANTIC_TABLE_TABLE_API_INLINE, ProcessTableFunctionTestPrograms.PROCESS_SET_SEMANTIC_TABLE_TABLE_API_INLINE_NAMED, ProcessTableFunctionTestPrograms.PROCESS_TYPED_SET_SEMANTIC_TABLE, + ProcessTableFunctionTestPrograms.PROCESS_MULTI_PARTITION_BY, + ProcessTableFunctionTestPrograms.PROCESS_MULTI_PARTITION_BY_AND_ORDER_BY, ProcessTableFunctionTestPrograms.PROCESS_TYPED_SET_SEMANTIC_TABLE_TABLE_API, ProcessTableFunctionTestPrograms.PROCESS_POJO_ARGS, ProcessTableFunctionTestPrograms.PROCESS_INTERVAL_DAY_ARGS, diff --git a/flink-table/flink-table-planner/src/test/java/org/apache/flink/table/planner/plan/nodes/exec/stream/ProcessTableFunctionTestPrograms.java b/flink-table/flink-table-planner/src/test/java/org/apache/flink/table/planner/plan/nodes/exec/stream/ProcessTableFunctionTestPrograms.java index 7ea4950c23fe25..327c3167fe53dc 100644 --- a/flink-table/flink-table-planner/src/test/java/org/apache/flink/table/planner/plan/nodes/exec/stream/ProcessTableFunctionTestPrograms.java +++ b/flink-table/flink-table-planner/src/test/java/org/apache/flink/table/planner/plan/nodes/exec/stream/ProcessTableFunctionTestPrograms.java @@ -1961,4 +1961,86 @@ public class ProcessTableFunctionTestPrograms { // Also in constructed types: ROW (table input) vs. STRUCTURED (expected). .runSql("INSERT INTO sink SELECT * FROM f(p => TABLE v, b => 42)") .build(); + + public static final TableTestProgram PROCESS_MULTI_PARTITION_BY = + TableTestProgram.of( + "process-set-from-session-view-with-multi-partition-by", + "set semantic table partitioned by multiple columns, sourced from a view wrapping a SESSION window aggregate") + .setupTemporarySystemFunction("f", SetSemanticTableFunction.class) + .setupTableSource( + SourceTestStep.newBuilder("t") + .addSchema( + "suite_name STRING", + "test_name STRING", + "ts TIMESTAMP_LTZ(3)", + "WATERMARK FOR ts AS ts - INTERVAL '0.001' SECOND") + .producedValues( + Row.of("suiteA", "test1", Instant.ofEpochMilli(0)), + Row.of("suiteB", "test2", Instant.ofEpochMilli(1)), + Row.of("suiteA", "test1", Instant.ofEpochMilli(2)), + Row.of("suiteA", "test1", Instant.ofEpochMilli(3)), + Row.of("suiteA", "test1", Instant.ofEpochMilli(4)), + Row.of("suiteA", "test1", Instant.ofEpochMilli(5)), + Row.of("suiteA", "test1", Instant.ofEpochMilli(6))) + .build()) + .setupSql( + "CREATE VIEW v AS " + + "SELECT suite_name, test_name, COUNT(*) AS c " + + "FROM SESSION(TABLE t PARTITION BY (suite_name, test_name), DESCRIPTOR(ts), INTERVAL '0.002' SECOND) " + + "GROUP BY suite_name, test_name, window_start, window_end") + .setupTableSink( + SinkTestStep.newBuilder("sink") + .addSchema( + "`suite_name` STRING", + "`test_name` STRING", + "`out` STRING") + .consumedValues( + "+I[suiteB, test2, {+I[suiteB, test2, 1], 1}]", + "+I[suiteA, test1, {+I[suiteA, test1, 6], 1}]") + .build()) + .runSql( + "INSERT INTO sink SELECT * FROM f(r => TABLE v PARTITION BY (suite_name, test_name), i => 1)") + .build(); + + public static final TableTestProgram PROCESS_MULTI_PARTITION_BY_AND_ORDER_BY = + TableTestProgram.of( + "process-order-by-multi-partition-key-and-order-by", + "set semantic table partitioned and ordered by multiple columns, sourced from a view wrapping a SESSION window aggregate") + .setupTemporarySystemFunction("f", SetSemanticTableFunction.class) + .setupTableSource( + SourceTestStep.newBuilder("t") + .addSchema( + "suite_name STRING", + "test_name STRING", + "`group` STRING", + "ts TIMESTAMP_LTZ(3)", + "WATERMARK FOR ts AS ts - INTERVAL '0.001' SECOND") + .producedValues( + // group is only used to force two independent SESSION + // windows for suiteA/test1 whose window_time ties. + Row.of("suiteA", "test1", "x", Instant.ofEpochMilli(0)), + Row.of("suiteB", "test2", "x", Instant.ofEpochMilli(1)), + Row.of("suiteA", "test1", "x", Instant.ofEpochMilli(2)), + Row.of("suiteA", "test1", "y", Instant.ofEpochMilli(2))) + .build()) + .setupSql( + "CREATE VIEW v AS " + + "SELECT suite_name, test_name, window_time, COUNT(*) AS c " + + "FROM SESSION(TABLE t PARTITION BY (suite_name, test_name, `group`), DESCRIPTOR(ts), INTERVAL '0.002' SECOND) " + + "GROUP BY suite_name, test_name, `group`, window_start, window_end, window_time") + .setupTableSink( + SinkTestStep.newBuilder("sink") + .addSchema( + "`suite_name` STRING", + "`test_name` STRING", + "`out` STRING") + .consumedValues( + "+I[suiteB, test2, {+I[suiteB, test2, 1970-01-01T00:00:00.002Z, 1], 1}]", + "+I[suiteA, test1, {+I[suiteA, test1, 1970-01-01T00:00:00.003Z, 2], 1}]", + "+I[suiteA, test1, {+I[suiteA, test1, 1970-01-01T00:00:00.003Z, 1], 1}]") + .build()) + .runSql( + "INSERT INTO sink SELECT * FROM f(" + + "r => TABLE v PARTITION BY (suite_name, test_name) ORDER BY (window_time ASC, c DESC), i => 1)") + .build(); } From 9c4a95c067a4e8dd3bb300ac748d2716d349a5b3 Mon Sep 17 00:00:00 2001 From: David Anderson Date: Wed, 22 Jul 2026 08:09:35 -0400 Subject: [PATCH 20/32] [FLINK-40020][release] Generate reference data for state migration tests based on release-2.3.0 (#28785) --- .../serializer-snapshot | Bin 0 -> 187 bytes .../writeable-serializer-2.3/test-data | Bin 0 -> 7 bytes .../serializer-snapshot | Bin 0 -> 94 bytes .../big-dec-serializer-2.3/test-data | Bin 0 -> 24 bytes .../serializer-snapshot | Bin 0 -> 94 bytes .../big-int-serializer-2.3/test-data | Bin 0 -> 19 bytes .../bitmap-serializer-2.3/serializer-snapshot | Bin 0 -> 94 bytes .../resources/bitmap-serializer-2.3/test-data | Bin 0 -> 32 bytes .../serializer-snapshot | Bin 0 -> 130 bytes .../test-data | Bin 0 -> 6 bytes .../serializer-snapshot | Bin 0 -> 96 bytes .../boolean-serializer-2.3/test-data | 1 + .../serializer-snapshot | Bin 0 -> 106 bytes .../boolean-value-serializer-2.3/test-data | 1 + .../serializer-snapshot | Bin 0 -> 124 bytes .../test-data | Bin 0 -> 14 bytes .../byte-serializer-2.3/serializer-snapshot | Bin 0 -> 90 bytes .../resources/byte-serializer-2.3/test-data | 1 + .../serializer-snapshot | Bin 0 -> 100 bytes .../byte-value-serializer-2.3/test-data | 1 + .../serializer-snapshot | Bin 0 -> 124 bytes .../test-data | Bin 0 -> 24 bytes .../char-serializer-2.3/serializer-snapshot | Bin 0 -> 90 bytes .../resources/char-serializer-2.3/test-data | 1 + .../serializer-snapshot | Bin 0 -> 100 bytes .../char-value-serializer-2.3/test-data | Bin 0 -> 2 bytes .../serializer-snapshot | Bin 0 -> 199 bytes .../copyable-value-serializer-2.3/test-data | Bin 0 -> 8 bytes .../date-serializer-2.3/serializer-snapshot | Bin 0 -> 90 bytes .../resources/date-serializer-2.3/test-data | Bin 0 -> 8 bytes .../serializer-snapshot | Bin 0 -> 128 bytes .../test-data | Bin 0 -> 84 bytes .../double-serializer-2.3/serializer-snapshot | Bin 0 -> 94 bytes .../resources/double-serializer-2.3/test-data | 1 + .../serializer-snapshot | Bin 0 -> 104 bytes .../double-value-serializer-2.3/test-data | 1 + .../either-serializer-2.3/serializer-snapshot | Bin 0 -> 276 bytes .../resources/either-serializer-2.3/test-data | 1 + .../enum-serializer-2.3/serializer-snapshot | Bin 0 -> 188 bytes .../resources/enum-serializer-2.3/test-data | Bin 0 -> 4 bytes .../serializer-snapshot | Bin 0 -> 163 bytes .../enum-serializerreconfig-2.3/test-data | Bin 0 -> 4 bytes .../serializer-snapshot | Bin 0 -> 126 bytes .../test-data | Bin 0 -> 44 bytes .../float-serializer-2.3/serializer-snapshot | Bin 0 -> 92 bytes .../resources/float-serializer-2.3/test-data | 1 + .../serializer-snapshot | Bin 0 -> 102 bytes .../float-value-serializer-2.3/test-data | 1 + .../serializer-snapshot | Bin 0 -> 211 bytes .../generic-array-serializer-2.3/test-data | Bin 0 -> 19 bytes .../serializer-snapshot | Bin 0 -> 122 bytes .../test-data | Bin 0 -> 44 bytes .../int-serializer-2.3/serializer-snapshot | Bin 0 -> 88 bytes .../resources/int-serializer-2.3/test-data | Bin 0 -> 4 bytes .../serializer-snapshot | Bin 0 -> 98 bytes .../int-value-serializer-2.3/test-data | Bin 0 -> 4 bytes .../serializer-snapshot | Bin 0 -> 1718 bytes .../test-data | 1 + .../serializer-snapshot | Bin 0 -> 1525 bytes .../test-data | 1 + .../serializer-snapshot | Bin 0 -> 745 bytes .../test-data | Bin 0 -> 88 bytes .../serializer-snapshot | Bin 0 -> 745 bytes .../test-data | Bin 0 -> 88 bytes .../list-serializer-2.3/serializer-snapshot | Bin 0 -> 185 bytes .../resources/list-serializer-2.3/test-data | Bin 0 -> 17 bytes .../serializer-snapshot | Bin 0 -> 124 bytes .../test-data | Bin 0 -> 84 bytes .../long-serializer-2.3/serializer-snapshot | Bin 0 -> 90 bytes .../resources/long-serializer-2.3/test-data | Bin 0 -> 8 bytes .../serializer-snapshot | Bin 0 -> 100 bytes .../long-value-serializer-2.3/test-data | Bin 0 -> 8 bytes .../map-serializer-2.3/serializer-snapshot | Bin 0 -> 268 bytes .../resources/map-serializer-2.3/test-data | Bin 0 -> 25 bytes .../serializer-snapshot | Bin 0 -> 100 bytes .../null-value-serializer-2.3/test-data | 0 .../serializer-snapshot | Bin 0 -> 209 bytes .../test-data | 1 + .../serializer-snapshot | Bin 0 -> 209 bytes .../nullable-padded-serializer-2.3/test-data | Bin 0 -> 9 bytes .../serializer-snapshot | Bin 0 -> 1214 bytes .../test-data | Bin 0 -> 21 bytes .../serializer-snapshot | Bin 0 -> 294 bytes .../test-data | Bin 0 -> 6 bytes .../serializer-snapshot | Bin 0 -> 2570 bytes .../test-data | Bin 0 -> 24 bytes .../serializer-snapshot | Bin 0 -> 4372 bytes .../test-data | Bin 0 -> 21 bytes .../serializer-snapshot | Bin 0 -> 4372 bytes .../test-data | Bin 0 -> 21 bytes .../serializer-snapshot | Bin 0 -> 686 bytes .../test-data | Bin 0 -> 28 bytes .../serializer-snapshot | Bin 0 -> 1082 bytes .../test-data | Bin 0 -> 27 bytes .../serializer-snapshot | Bin 0 -> 4372 bytes .../test-data | Bin 0 -> 21 bytes .../serializer-snapshot | Bin 0 -> 2789 bytes .../test-data | Bin 0 -> 134 bytes .../serializer-snapshot | Bin 0 -> 2789 bytes .../test-data | Bin 0 -> 134 bytes .../row-serializer-2.3/serializer-snapshot | Bin 0 -> 466 bytes .../resources/row-serializer-2.3/test-data | Bin 0 -> 20 bytes .../set-serializer-2.3/serializer-snapshot | Bin 0 -> 184 bytes .../resources/set-serializer-2.3/test-data | Bin 0 -> 19 bytes .../serializer-snapshot | Bin 0 -> 126 bytes .../test-data | Bin 0 -> 24 bytes .../short-serializer-2.3/serializer-snapshot | Bin 0 -> 92 bytes .../resources/short-serializer-2.3/test-data | Bin 0 -> 2 bytes .../serializer-snapshot | Bin 0 -> 102 bytes .../short-value-serializer-2.3/test-data | Bin 0 -> 2 bytes .../serializer-snapshot | Bin 0 -> 96 bytes .../sql-date-serializer-2.3/test-data | Bin 0 -> 8 bytes .../serializer-snapshot | Bin 0 -> 96 bytes .../sql-time-serializer-2.3/test-data | Bin 0 -> 8 bytes .../serializer-snapshot | Bin 0 -> 106 bytes .../sql-timestamp-serializer-2.3/test-data | Bin 0 -> 12 bytes .../serializer-snapshot | Bin 0 -> 110 bytes .../string-array-serializer-2.3/test-data | Bin 0 -> 24 bytes .../string-serializer-2.3/serializer-snapshot | Bin 0 -> 94 bytes .../resources/string-serializer-2.3/test-data | 1 + .../serializer-snapshot | Bin 0 -> 104 bytes .../string-value-serializer-2.3/test-data | 1 + .../tuple-serializer-2.3/serializer-snapshot | Bin 0 -> 401 bytes .../resources/tuple-serializer-2.3/test-data | Bin 0 -> 22 bytes .../value-serializer-2.3/serializer-snapshot | Bin 0 -> 175 bytes .../resources/value-serializer-2.3/test-data | Bin 0 -> 9 bytes .../serializer-snapshot | Bin 0 -> 96 bytes .../variant-serializer-2.3/test-data | Bin 0 -> 80 bytes .../serializer-snapshot | Bin 0 -> 369 bytes .../generic-avro-serializer-2.3/test-data | Bin 0 -> 51 bytes .../serializer-snapshot | Bin 0 -> 379 bytes .../specific-avro-serializer-2.3/test-data | Bin 0 -> 51 bytes ...ation-test-1784576564638-flink2.3-snapshot | Bin 0 -> 325 bytes .../reader-migration-test-flink2.3-snapshot | Bin 0 -> 2623 bytes ...igration-after-branching-flink2.3-snapshot | Bin 0 -> 5856 bytes ...cep-migration-conditions-flink2.3-snapshot | Bin 0 -> 5461 bytes ...ingle-pattern-afterwards-flink2.3-snapshot | Bin 0 -> 5204 bytes ...ion-starting-new-pattern-flink2.3-snapshot | Bin 0 -> 5652 bytes .../serializer-snapshot | Bin 0 -> 98 bytes .../dewey-number-serializer-2.3/test-data | Bin 0 -> 8 bytes .../serializer-snapshot | Bin 0 -> 99 bytes .../event-id-serializer-2.3/test-data | Bin 0 -> 12 bytes .../serializer-snapshot | Bin 0 -> 188 bytes .../lockable-type-serializer-2.3/test-data | Bin 0 -> 10 bytes .../serializer-snapshot | Bin 0 -> 478 bytes .../nfa-state-serializer-2.3/test-data | Bin 0 -> 8 bytes .../serializer-snapshot | Bin 0 -> 211 bytes .../node-id-serializer-2.3/test-data | Bin 0 -> 18 bytes .../serializer-snapshot | Bin 0 -> 447 bytes .../test-data | Bin 0 -> 26 bytes .../serializer-snapshot | Bin 0 -> 178 bytes .../arraylist-serializer-2.3/test-data | Bin 0 -> 17 bytes .../serializer-snapshot | Bin 0 -> 214 bytes .../buffer-entry-serializer-2.3/test-data | Bin 0 -> 7 bytes .../serializer-snapshot | Bin 0 -> 113 bytes .../global-window-serializer-2.3/test-data | Bin 0 -> 1 bytes .../java-serializer-2.3/serializer-snapshot | Bin 0 -> 78 bytes .../resources/java-serializer-2.3/test-data | Bin 0 -> 81 bytes .../serializer-snapshot | Bin 0 -> 223 bytes .../stream-element-serializer-2.3/test-data | Bin 0 -> 13 bytes .../serializer-snapshot | Bin 0 -> 109 bytes .../time-window-serializer-2.3/test-data | Bin 0 -> 16 bytes .../timer-serializer-2.3/serializer-snapshot | Bin 0 -> 268 bytes .../resources/timer-serializer-2.3/test-data | Bin 0 -> 16 bytes .../serializer-snapshot | Bin 0 -> 162 bytes .../test-data | 1 + .../serializer-snapshot | Bin 0 -> 346 bytes .../test-data | Bin 0 -> 21 bytes .../ttl-serializer-2.3/serializer-snapshot | Bin 0 -> 278 bytes .../resources/ttl-serializer-2.3/test-data | Bin 0 -> 21 bytes .../serializer-snapshot | Bin 0 -> 288 bytes .../union-serializer-one-2.3/test-data | 1 + .../serializer-snapshot | Bin 0 -> 288 bytes .../union-serializer-two-2.3/test-data | Bin 0 -> 9 bytes .../serializer-snapshot | Bin 0 -> 96 bytes .../void-namespace-serializer-2.3/test-data | Bin 0 -> 1 bytes ...on-test-apply-event-time-flink2.3-snapshot | Bin 0 -> 1799 bytes ...st-apply-processing-time-flink2.3-snapshot | Bin 0 -> 1691 bytes ...test-kryo-serialized-key-flink2.3-snapshot | Bin 0 -> 4021 bytes ...n-test-reduce-event-time-flink2.3-snapshot | Bin 0 -> 1655 bytes ...t-reduce-processing-time-flink2.3-snapshot | Bin 0 -> 1596 bytes ...on-with-stateful-trigger-flink2.3-snapshot | Bin 0 -> 2707 bytes ...th-stateful-trigger-mint-flink2.3-snapshot | Bin 0 -> 2201 bytes .../serializer-snapshot | Bin 0 -> 319 bytes .../scala-case-class-serializer-2.3/test-data | Bin 0 -> 10 bytes .../serializer-snapshot | Bin 0 -> 270 bytes .../scala-either-serializer-2.3/test-data | Bin 0 -> 13 bytes .../serializer-snapshot | Bin 0 -> 146 bytes .../scala-enum-serializer-2.3/test-data | Bin 0 -> 4 bytes .../serializer-snapshot | Bin 0 -> 186 bytes .../scala-option-serializer-2.3/test-data | Bin 0 -> 1 bytes .../serializer-snapshot | Bin 0 -> 672 bytes .../scala-try-serializer-2.3/test-data | Bin 0 -> 2572 bytes .../serializer-snapshot | Bin 0 -> 286 bytes .../test-data | Bin 0 -> 19 bytes .../serializer-snapshot | Bin 0 -> 270 bytes .../test-data | Bin 0 -> 19 bytes .../serializer-snapshot | Bin 0 -> 302 bytes .../test-data | Bin 0 -> 19 bytes .../serializer-snapshot | Bin 0 -> 320 bytes .../test-data | Bin 0 -> 19 bytes .../serializer-snapshot | Bin 0 -> 479 bytes .../traversable-serializer-map-2.3/test-data | Bin 0 -> 27 bytes .../serializer-snapshot | Bin 0 -> 256 bytes .../traversable-serializer-seq-2.3/test-data | Bin 0 -> 19 bytes .../serializer-snapshot | Bin 0 -> 256 bytes .../traversable-serializer-set-2.3/test-data | Bin 0 -> 19 bytes .../serializer-snapshot | Bin 0 -> 485 bytes .../test-data | Bin 0 -> 27 bytes .../serializer-snapshot | Bin 0 -> 977 bytes .../test-data | Bin 0 -> 33 bytes .../serializer-snapshot | Bin 0 -> 207 bytes .../linked-list-serializer-2.3/test-data | Bin 0 -> 45 bytes .../migration-flink-2.3-HEAP-V1-snapshot | Bin 0 -> 2584 bytes .../migration-flink-2.3-HEAP-V2-snapshot | Bin 0 -> 2625 bytes .../migration-flink-2.3-ROCKSDB-V1-snapshot | Bin 0 -> 16131 bytes .../migration-flink-2.3-ROCKSDB-V2-snapshot | Bin 0 -> 16144 bytes .../resources/most_recently_published_version | 2 +- .../072d2681-63b7-4c7b-80f6-40bef19f27e3 | Bin 0 -> 347 bytes .../1b0148d4-1999-4687-969d-22e0e623000f | Bin 0 -> 705 bytes .../1dff9aa3-919c-445c-9020-1ffcf84f8c96 | Bin 0 -> 786 bytes .../227f3b81-d934-4ba8-aa2d-b3dcd6bed2d7 | Bin 0 -> 282 bytes .../2f96c9f3-1ba8-440f-9d60-259c817db230 | Bin 0 -> 786 bytes .../35e533a3-7385-47d1-86a4-642f1e33ecaa | Bin 0 -> 347 bytes .../3cae0bc8-b3d8-4cb5-84fc-e3e9770af29a | Bin 0 -> 347 bytes .../3e30c60b-69d0-429d-b872-e0e65dbdd94b | Bin 0 -> 705 bytes .../432717c3-5612-4571-87db-71017780a90a | Bin 0 -> 786 bytes .../4853f6b6-ad8a-4677-823f-4e2eb2d56828 | Bin 0 -> 786 bytes .../685d3dc8-d1fa-4f34-a085-83d7d339a821 | Bin 0 -> 282 bytes .../6c6b8709-117a-4b3d-bf10-56135a412d7d | Bin 0 -> 786 bytes .../876da3c2-29b2-4c19-bea0-c6172e3ca685 | Bin 0 -> 347 bytes .../_metadata | Bin 0 -> 3618 bytes .../a8ff8410-6e60-48b1-a959-50a575973f57 | Bin 0 -> 293 bytes .../b02aaf8e-c39c-41b5-868f-4a96919d4b7a | Bin 0 -> 786 bytes .../b07cb79e-92dd-452a-9d6a-e0c3110f7b3d | Bin 0 -> 786 bytes .../e27c68e5-70fa-4c5a-845f-a67d1555c18b | Bin 0 -> 705 bytes .../e91fc44d-2321-4318-bcab-f4791f6e09bd | Bin 0 -> 293 bytes .../f17fda57-d832-4d2d-a2f7-e93d3cc5e3bf | Bin 0 -> 786 bytes .../fbeea499-c8a6-4724-abbe-d4e1a0bcddb2 | Bin 0 -> 705 bytes .../0254150e-e19b-42a5-8b5e-0cd267700a90 | Bin 0 -> 786 bytes .../175bd4b8-0f44-4bd9-a646-bf0232aac778 | Bin 0 -> 786 bytes .../241c0d48-7e88-4f94-8fce-80fbf17c0383 | Bin 0 -> 347 bytes .../29c5745d-8ad6-4f59-9464-ddd0468077f0 | Bin 0 -> 786 bytes .../3cdd3a80-f974-4799-a62c-0d5584b81eca | Bin 0 -> 347 bytes .../3f411ee6-daf7-43bf-a75d-470b827c9903 | Bin 0 -> 282 bytes .../4b1978f4-0aa4-44a7-8ec8-2baf7c18b840 | Bin 0 -> 347 bytes .../4c52b484-4a4d-406c-8152-cad35d667728 | Bin 0 -> 705 bytes .../4fb46874-d9f8-4bbe-afd0-ec8d92552380 | Bin 0 -> 786 bytes .../51d94027-781f-4928-b92a-e3f62217ffee | Bin 0 -> 705 bytes .../691d0b5e-b9fa-4d8e-930d-889389c6cd4f | Bin 0 -> 786 bytes .../_metadata | Bin 0 -> 3756 bytes .../a0d9fe75-f916-46e9-8bcd-542fa1e94823 | Bin 0 -> 786 bytes .../a5ddb891-c417-4496-a106-f98dda39c291 | Bin 0 -> 347 bytes .../c11b2683-674c-4b65-9475-2f00c68344a9 | Bin 0 -> 705 bytes .../c3b57c60-2989-4dec-b8c9-7683e1324de7 | Bin 0 -> 293 bytes .../c546110f-c69b-4df5-acbe-ba86ef4c0ace | Bin 0 -> 786 bytes .../cfb0a9a3-a903-4e01-b25f-dfcc9b94e88e | Bin 0 -> 786 bytes .../ded470f0-de4f-456f-8a40-d2931c643cab | Bin 0 -> 282 bytes .../e9264ddd-9dc6-4199-9257-9488c9777950 | Bin 0 -> 705 bytes .../eb28972e-cca9-468c-b6e1-c5546f1abe21 | Bin 0 -> 293 bytes .../0c598f38-4b73-4bb2-b7ee-26c1ff1900f0 | Bin 0 -> 347 bytes .../20d3afb2-b900-4e31-b056-5ca08c9ad6b7 | Bin 0 -> 347 bytes .../3740676a-9d6a-4a1c-9b16-d44028a588f0 | Bin 0 -> 293 bytes .../3f69c997-de8e-4284-9db9-6e717b85f25f | Bin 0 -> 770 bytes .../401a8148-e43c-4ae1-9c77-0f26bd125bc4 | Bin 0 -> 705 bytes .../46cae258-01e6-4861-8b5e-787c84208067 | Bin 0 -> 293 bytes .../5fea057a-54ed-4b1d-afa1-210bc98b310a | Bin 0 -> 770 bytes .../6502c41b-d28d-4fdf-8b19-981412484cfd | Bin 0 -> 705 bytes .../65618368-85c8-4fe2-8a32-e2a0f715e53f | Bin 0 -> 770 bytes .../76860612-4931-4996-a221-55654dba3172 | Bin 0 -> 770 bytes .../863a5a3c-ff1c-48f1-a342-62f431b626ee | Bin 0 -> 770 bytes .../8a747645-d445-470c-8eb3-d8cae8629ca6 | Bin 0 -> 770 bytes .../8ecbdad6-d14a-464c-aaf3-5db55e52c2f6 | Bin 0 -> 705 bytes .../_metadata | Bin 0 -> 3455 bytes .../bdc79a1e-5432-49ec-bb1c-6bc96eee23c6 | Bin 0 -> 770 bytes .../e148bc0a-2707-4366-9ce6-23a665679a37 | Bin 0 -> 705 bytes .../e23d0934-4fdf-4278-a5a0-1e6ffe4265c0 | Bin 0 -> 347 bytes .../e3ba9568-1e04-4468-b7f2-3647c91d736e | Bin 0 -> 282 bytes .../ebdcc597-63e2-48fb-852f-f20a52cf4f2e | Bin 0 -> 347 bytes .../ec8df3dd-6c2a-47f8-b678-d5adc0bafff7 | Bin 0 -> 282 bytes .../f1530039-b1f6-4625-be1d-ee3e0e5fc315 | Bin 0 -> 770 bytes .../01197b86-dabe-4c37-8fcf-90fe677c0fcc | 1 + .../0d3d34c4-343c-42b3-b05f-c0c60c13dde3 | 1 + .../1b3a9340-8eb2-44df-8e1a-d6e83df16a02 | 429 ++++++++++++++ .../1b8040a8-ae25-4296-91fd-6e4de18f1501 | Bin 0 -> 770 bytes .../1d60e78f-1b06-4c8c-8e44-058f8bf49f7c | Bin 0 -> 293 bytes .../219b149c-ac5c-4b3c-9f8f-415028d63b82 | Bin 0 -> 237 bytes .../2c78b5e2-da30-41c6-bfbc-b203d506365c | Bin 0 -> 705 bytes .../2dcc0143-a438-4104-ab36-ddad184fda25 | 429 ++++++++++++++ .../36bfc42a-6d2b-4a1c-bcc7-016cd97900ad | 1 + .../401683f2-6977-4cde-9a24-2aa6cc363d4a | 1 + .../432949de-9ad7-4ee6-a83b-961c162df0fb | Bin 0 -> 282 bytes .../4a6a884b-1027-4697-a39b-56cc7a1a948e | Bin 0 -> 770 bytes .../532e33e2-cba6-41f5-ab2f-2c539c17eb5d | Bin 0 -> 237 bytes .../58138011-d05c-491a-8f7d-72e233a73ab1 | Bin 0 -> 237 bytes .../5b450560-72ea-4daf-8056-faae820d3245 | Bin 0 -> 705 bytes .../643281f6-6893-4b63-8d07-01493527f163 | Bin 0 -> 347 bytes .../65449348-b3e4-4b73-b59c-2e5e3b930ba1 | Bin 0 -> 237 bytes .../6bf4774f-25b1-4059-b557-07b2f6dfb820 | Bin 0 -> 293 bytes .../6d64adea-4d82-481f-a74b-2387d20fe413 | 1 + .../6da281da-a137-4bb9-a970-865d55de12bb | 1 + .../769640d8-9e47-445e-bfab-6d9584ed4a5c | Bin 0 -> 282 bytes .../769c6c3f-47ff-4428-96a0-087ddf701f40 | 429 ++++++++++++++ .../78d26e5c-c70a-432b-b78b-2c14a5f4cb7a | 429 ++++++++++++++ .../7ea2ec98-d255-448b-a70b-ca3c4c8115fc | Bin 0 -> 770 bytes .../91be4aef-69d0-4a1b-a855-edc760636719 | 1 + .../951de9c3-ba23-4036-a5c8-fbd0dc7bceb4 | Bin 0 -> 705 bytes .../_metadata | Bin 0 -> 5514 bytes .../a9b395c2-ddbc-4501-bcd8-3fc8bb87e217 | 429 ++++++++++++++ .../b5c838c7-d458-40c6-9fe0-683a6f4fc58b | 1 + .../c0297b23-1374-471d-9cc7-120a1e825b74 | Bin 0 -> 347 bytes .../c09ec99f-89fd-4786-a535-701f6b6794b6 | Bin 0 -> 347 bytes .../c1c6fa62-9f6b-4fce-bc05-6c0888dc5681 | Bin 0 -> 237 bytes .../d0ebb7b8-ff96-40d7-a8e1-162949ed36ea | Bin 0 -> 237 bytes .../d89254ac-1992-41cb-9905-017e78adcab3 | Bin 0 -> 770 bytes .../db593648-50aa-49b3-ad55-9e497de5e369 | Bin 0 -> 237 bytes .../e2d0994d-fe90-4051-8dc9-6f5f418c140d | 429 ++++++++++++++ .../e5a904c3-56b5-4965-8b26-99373feaebb0 | Bin 0 -> 347 bytes .../e681adcf-84e7-40f5-9a04-0292f75db142 | Bin 0 -> 770 bytes .../e7822fdd-7038-4066-b5f6-cf06b8d09500 | Bin 0 -> 705 bytes .../e8322799-4490-42b9-a653-6d2425bcfb42 | Bin 0 -> 770 bytes .../ea779b8b-8d8e-4ab6-bac6-395eb429b749 | Bin 0 -> 237 bytes .../f5014293-9647-47ab-8685-fec899807da2 | Bin 0 -> 770 bytes .../f6a6fbb1-d2c0-459f-9079-e783131cd2f4 | 429 ++++++++++++++ .../fa00dc04-f764-442f-ab24-00312bc33788 | 429 ++++++++++++++ .../fa27bf38-eeff-46a6-90ef-abc2dafc2a48 | Bin 0 -> 770 bytes .../01fb91fc-8e84-4e12-8a44-bb2b546b4787 | Bin 0 -> 347 bytes .../0732b46b-af1e-49e8-b7c4-c71c265c3755 | Bin 0 -> 705 bytes .../0820f20c-f077-4d74-97a4-65f3999758b1 | Bin 0 -> 705 bytes .../0d3ad900-46cd-42a6-8bb8-a11f885fc90f | Bin 0 -> 293 bytes .../1038cde8-e97f-4a38-8cdf-03af8145b6d7 | Bin 0 -> 237 bytes .../135da05c-1a8f-490b-b1ca-500a5811666a | Bin 0 -> 770 bytes .../23602bb1-4778-4d05-a53d-e5285b6c4844 | 1 + .../239c5d4f-5a1d-4d82-94cc-8ebee5dd77b1 | 1 + .../28ade820-f6c1-456c-982d-9292118d8948 | Bin 0 -> 237 bytes .../3409cc82-59da-4248-8e82-d5b4481e3e9a | Bin 0 -> 237 bytes .../39f83302-8ef4-4e4e-add2-59c2c34fd59e | 429 ++++++++++++++ .../3d66b41a-c24a-4b95-8547-51dea66dce54 | 429 ++++++++++++++ .../4baf8c14-d5d1-46c6-a22b-6cf01b015fd5 | 1 + .../520f29a7-9ddd-4bac-ba41-550bb701a0ef | 1 + .../6f7d7bf7-df0d-4488-9c77-a2ffddace92f | 429 ++++++++++++++ .../776a81d6-b722-4468-acde-8d1bd79a7e90 | 429 ++++++++++++++ .../79b9437d-ee76-411a-9759-6e220e5fb58b | 1 + .../7db9c167-b8ca-455c-b0ab-aa3612ad1e7d | Bin 0 -> 770 bytes .../833084b5-0e6a-47f7-9c15-fe99efa35dba | 429 ++++++++++++++ .../83ef3b5d-8be9-47ab-95b4-a498934c73df | Bin 0 -> 282 bytes .../87fc8e49-ed6e-4abb-b28f-a64106810954 | Bin 0 -> 770 bytes .../980e34c7-19d2-460b-97ca-5ef0935af84f | Bin 0 -> 770 bytes .../98486669-d06d-4542-b4e7-75a645019924 | Bin 0 -> 293 bytes .../9b7ef958-6f0b-4f71-a94d-f46dacbab5b1 | 1 + .../9c9b0059-0d9c-4b13-b39d-3b264253f867 | Bin 0 -> 770 bytes .../9ccbe2cb-48b2-4832-b382-4aa3b977bc0f | Bin 0 -> 347 bytes .../_metadata | Bin 0 -> 5652 bytes .../a2a9d08a-37f0-4e18-ad91-d4daea99360b | Bin 0 -> 705 bytes .../a7886ab2-3f30-42c7-997d-a135d957ef70 | 429 ++++++++++++++ .../a7a60edd-501b-4239-b25f-6998471bfff4 | Bin 0 -> 237 bytes .../ad98e1eb-4239-4773-b56f-d90baa191c63 | Bin 0 -> 237 bytes .../b4e6e54c-7d83-4755-921e-c2f7a4f11374 | Bin 0 -> 770 bytes .../b516b1f8-f3a1-48af-a399-a06dc6925d4c | Bin 0 -> 770 bytes .../c5904d8e-f8c3-48e1-ba83-d4ddbd34f298 | 1 + .../d35d6576-d4d7-47ff-a3ba-47f471a77a7f | Bin 0 -> 347 bytes .../d7fa4f76-34ac-4d74-b4d1-05f849e50f05 | Bin 0 -> 237 bytes .../d92d5d95-5d6e-4b9b-a81d-d13f7d29145a | Bin 0 -> 770 bytes .../db0a028e-b85b-4095-8266-c86722a9f3d4 | 1 + .../dc537dc6-012e-49ec-af31-2d19442b4350 | Bin 0 -> 705 bytes .../e0cc4b62-857d-4339-81c2-a286f6bdc860 | 429 ++++++++++++++ .../ef2429f6-5c70-4717-bd71-225d54589059 | Bin 0 -> 237 bytes .../f267cf3d-c032-4014-ba7d-1645d4a09bcb | 429 ++++++++++++++ .../f42dbd75-7256-4fb8-b02e-689381c24aa6 | Bin 0 -> 347 bytes .../f544f6ee-24e5-442d-a48b-6e8b0c4e6257 | Bin 0 -> 237 bytes .../fa75483b-2b31-4800-b1a5-e8da5365470c | Bin 0 -> 282 bytes .../0d494c52-b6ba-4a4c-8945-9d005e9076d7 | Bin 0 -> 705 bytes .../1c04996a-c2b0-461e-ba2f-6b9421422eaa | Bin 0 -> 770 bytes .../23226810-7944-4f58-810b-b67f0e9e4714 | Bin 0 -> 770 bytes .../2c1e43a4-a684-4c08-93e5-6703d5afc981 | Bin 0 -> 770 bytes .../4e6ffb17-b32d-42d2-beeb-96b8f8089e20 | Bin 0 -> 347 bytes .../51d51ace-9822-4bb6-b545-5826e83d85eb | Bin 0 -> 282 bytes .../53ddf49d-a390-4cb1-96ee-93ce3ee5383b | Bin 0 -> 770 bytes .../54532690-d6cf-4018-a474-e1d7381db82b | Bin 0 -> 770 bytes .../548cfd37-4e78-4044-90a9-0d25025b9676 | Bin 0 -> 770 bytes .../6130062c-fc07-4fdc-a83d-dc12f1ca43e8 | Bin 0 -> 347 bytes .../74b89435-4357-491b-964e-71ad08801e67 | Bin 0 -> 770 bytes .../765e995a-2c1b-4d8c-a748-807a7f009d8f | Bin 0 -> 705 bytes .../7b921a60-0480-4cb2-b932-7be5cb9751dc | Bin 0 -> 293 bytes .../_metadata | Bin 0 -> 3455 bytes .../b0596240-bb80-4ed2-982a-70d50266490e | Bin 0 -> 347 bytes .../bccf06b8-9cae-4ab7-b1e8-c6934c20fc9f | Bin 0 -> 347 bytes .../c0719ae1-222b-41b5-b6d7-46c9b45c164c | Bin 0 -> 705 bytes .../f4303062-bd50-4a4b-9120-8ecf367c4dea | Bin 0 -> 293 bytes .../f68fc0e0-58dd-4dd1-bfbb-c084d30912f6 | Bin 0 -> 705 bytes .../f8db5709-13f7-4160-ae7e-f30730fd66b6 | Bin 0 -> 282 bytes .../fe68e282-fca1-4546-af59-520965d3f07d | Bin 0 -> 770 bytes .../0fafc3b1-2e14-4e96-a743-cb60274183e8 | Bin 0 -> 549 bytes .../1b797e8a-b107-474d-87d7-cabcead69566 | Bin 0 -> 282 bytes .../1f490290-e01a-49ab-88e7-bcf8ab5013a9 | Bin 0 -> 1580 bytes .../4dbe42e6-3d46-46c7-814b-2920346542c8 | Bin 0 -> 532 bytes .../52f3cba8-a6cf-4504-bf99-7589c5220091 | Bin 0 -> 1508 bytes .../7a5ca5f3-c8c0-47b2-a032-be17db22401f | Bin 0 -> 1161 bytes .../898c9b7d-7420-462e-95f2-3e510a2f8320 | Bin 0 -> 1508 bytes .../9c594fd9-33e6-4e29-a6bf-ead5ebbc9eb3 | Bin 0 -> 1580 bytes .../9ecc3371-f3e0-45bd-b7b7-edc593bd3663 | Bin 0 -> 549 bytes .../_metadata | Bin 0 -> 3346 bytes .../bdf02913-f03e-4a7e-abb2-5e96cc6e9cba | Bin 0 -> 1508 bytes .../c617bc43-e885-4b1c-a3cc-5453afc0b9f6 | Bin 0 -> 532 bytes .../c750b486-f90f-4df5-9346-5e3677dfac75 | Bin 0 -> 532 bytes .../d109679b-99ed-45eb-a118-0b031e0ea0b2 | Bin 0 -> 1508 bytes .../dc9d41ba-33e3-4faa-81a8-2d05014eb1c4 | Bin 0 -> 1161 bytes .../eeed3950-5111-4cb6-9707-51a2eed5207a | Bin 0 -> 293 bytes .../fbdfafe2-ad27-4f56-8107-7c68ceb0b78e | Bin 0 -> 532 bytes .../0d56b254-d4d2-4226-8e67-53343fb829da | Bin 0 -> 293 bytes .../198994c5-87c9-45c3-a0db-17f4b52a2068 | Bin 0 -> 1508 bytes .../47ac03eb-4cdd-4995-a09b-ec167dd569ef | Bin 0 -> 1161 bytes .../54881c11-6731-49fc-95ff-b7380b267b3c | Bin 0 -> 1580 bytes .../5b3c1cbc-a071-40ce-93a1-6ea0248c3ed9 | Bin 0 -> 1580 bytes .../6144de29-daca-41b8-9091-d698397c6b1a | Bin 0 -> 532 bytes .../738ada90-e74f-49ac-9d78-5c7f9e5bb599 | Bin 0 -> 1508 bytes .../746408cf-cdb8-4341-90ed-0e8e537776d9 | Bin 0 -> 1508 bytes .../82c38e44-ac91-47ac-a3cc-fb76736ca71c | Bin 0 -> 532 bytes .../936a7b39-75a0-4657-bf5f-f295ffb34c79 | Bin 0 -> 532 bytes .../_metadata | Bin 0 -> 3484 bytes .../ab25e2b9-0168-490c-9e69-2be833dcc353 | Bin 0 -> 1508 bytes .../ab44c145-c837-4862-b0e5-a9f3e6d6a353 | Bin 0 -> 1161 bytes .../d7585297-5b26-4ff3-9590-6f40b5a30c7c | Bin 0 -> 549 bytes .../ea039358-a684-455d-b8d8-098af219c0ea | Bin 0 -> 532 bytes .../f6c8c93d-551e-437e-9705-ac0dea275783 | Bin 0 -> 282 bytes .../fa413e74-7411-4abb-89a1-90e492721580 | Bin 0 -> 549 bytes .../07c6ae20-da34-494f-b0df-5af6b753d676 | Bin 0 -> 1521 bytes .../0e072358-d5a9-4485-99df-815c3bf7c82b | Bin 0 -> 561 bytes .../1244f5ff-6c1b-4387-898b-41b875dadd94 | Bin 0 -> 1620 bytes .../271c51f9-ee0d-4fd9-8e93-19fd92f42a21 | Bin 0 -> 1521 bytes .../3308ecd2-84c1-4743-886c-4e211ce781e3 | Bin 0 -> 1521 bytes .../58c296ae-1728-44c1-8906-6c287ccdef10 | Bin 0 -> 1145 bytes .../63be2c2f-3f94-432c-8e12-2111d32d8259 | Bin 0 -> 282 bytes .../78d70a3a-33b3-47b7-a56b-98e36e1a599e | Bin 0 -> 1521 bytes .../7ccc1ae0-7621-4931-899d-a630a9caf807 | Bin 0 -> 535 bytes .../86a44de5-99ac-4ad2-aae2-1f01d7e8347f | Bin 0 -> 561 bytes .../88cb2bb0-e37f-4859-8266-6df52c3bddec | Bin 0 -> 293 bytes .../8c2d1a1b-debb-4750-b6f2-260fe94c5869 | Bin 0 -> 535 bytes .../_metadata | Bin 0 -> 2955 bytes .../a4c13094-c6e2-4d05-9958-6caca82b26f9 | Bin 0 -> 535 bytes .../e96e1b5d-a394-49c1-a2b2-62fb188ad953 | Bin 0 -> 1620 bytes .../f59d2379-9d30-4383-8608-35853ca9b1c8 | Bin 0 -> 535 bytes .../fc90f5f2-5b58-42ac-a127-6c3a9dbba40a | Bin 0 -> 1145 bytes .../077484c0-5e19-436f-bfb0-84f42b476f81 | Bin 0 -> 505 bytes .../07b4db4d-9266-4bfa-b04a-12ef0d1016dd | 1 + .../089196b8-e406-4e62-a65c-acef06aafa68 | 541 ++++++++++++++++++ .../0b46e588-c8f8-407e-9551-44c624b3576c | Bin 0 -> 1414 bytes .../0db591bd-5a43-4c20-beed-57d95e0335ca | Bin 0 -> 1414 bytes .../0e7f5ab5-f1ca-4ffc-8210-d1cd323daaec | Bin 0 -> 1123 bytes .../10a90885-081e-495b-a4bb-581bfc15f5b3 | Bin 0 -> 505 bytes .../141372b9-6605-477b-abcb-38f68b761350 | 317 ++++++++++ .../1867edd7-fea1-47ca-aa9b-0efa10336f4d | Bin 0 -> 1084 bytes .../19ca0409-d61a-4bb2-bc4f-1dcf578f55b8 | Bin 0 -> 1084 bytes .../21ec736f-8eb6-465d-8211-7493e1f68aae | 1 + .../29779921-ddc6-4961-92cd-76658b8cb36b | Bin 0 -> 1110 bytes .../2f2bd39e-11c0-4e4e-9514-4637528ebbc5 | Bin 0 -> 260 bytes .../361dfc6c-e533-4a2e-bd89-f2c0e78ac821 | Bin 0 -> 1128 bytes .../37eb0a14-acc4-40cc-a1b9-b93fef5c6c81 | Bin 0 -> 1414 bytes .../3cd5632d-9b87-4837-91bf-7144ff50475e | 317 ++++++++++ .../40753da1-4b3c-487f-b7f9-913ccc5b5fa9 | Bin 0 -> 1414 bytes .../419ea493-eb76-4b4f-a824-44f26ec4abc7 | Bin 0 -> 260 bytes .../44f696f8-a99c-4607-98c6-784497efc0fe | Bin 0 -> 1099 bytes .../49817ff0-028b-4f91-9523-a176abd0fd63 | Bin 0 -> 747 bytes .../4a44398c-bf64-4982-90f2-51c2e8b7db91 | 1 + .../4d6e907f-83e1-42d6-aca4-65c51814208f | Bin 0 -> 505 bytes .../594f69f3-2448-400a-91e2-c1e8ec1df26a | Bin 0 -> 1145 bytes .../5cc02864-4379-4391-83d2-f66f341bce0a | Bin 0 -> 505 bytes .../5f51a027-431a-4163-8052-4accc7924269 | 429 ++++++++++++++ .../5f67e42e-3a37-48a8-a6af-7e9b8849f096 | Bin 0 -> 747 bytes .../65afb798-744c-446a-ae93-79f6a0d39f44 | Bin 0 -> 1145 bytes .../65d7affe-e53d-4c89-ba95-6c29315a8a66 | Bin 0 -> 1083 bytes .../679bef9a-7383-490c-9f71-e25fe0a8024c | Bin 0 -> 1076 bytes .../6a38f8a7-234a-4f4d-925c-ec009cbe30ef | Bin 0 -> 1083 bytes .../6db805a0-39bf-4dcd-8437-b8849feae0b7 | Bin 0 -> 1123 bytes .../6f3394ca-a742-4217-b760-4d6d2a133076 | 317 ++++++++++ .../6fc258f2-7197-4f82-8a6a-7b3276b8388f | Bin 0 -> 225 bytes .../71f680a8-f58f-4147-ac88-71f8aa3cd52e | Bin 0 -> 1086 bytes .../763f1f04-100a-4b26-9db2-40ad7a7008e1 | Bin 0 -> 1084 bytes .../78b9528d-4b5a-4adb-b9d2-91b71b224f1b | Bin 0 -> 505 bytes .../797e42be-9ffb-41b7-b6c9-f7ff31723365 | Bin 0 -> 1073 bytes .../7d704553-4d4d-468c-beb8-e477b7c7b431 | 1 + .../80cf218e-9aed-4d83-8771-e810a2900fe9 | Bin 0 -> 293 bytes .../818df800-fd2c-4b30-96d4-367532290fc0 | 1 + .../88203641-edd9-49f3-8ada-379556908c20 | Bin 0 -> 1099 bytes .../89cb3686-20a7-49cc-829a-d2b613fa5d27 | Bin 0 -> 1084 bytes .../8a3a5998-08e6-4b69-b8bd-a1d6bc6b4eb1 | Bin 0 -> 505 bytes .../8f08d36a-7b6f-4779-a57f-2da89facf68d | 317 ++++++++++ .../9170c08c-8c89-4e11-863d-6916574b32ee | 1 + .../91e74daf-23bf-4e9e-b3d8-88c86e5cb7c0 | Bin 0 -> 1076 bytes .../94e347a5-ffb7-4042-a984-7da49a8889da | Bin 0 -> 1128 bytes .../95d078d3-fc51-423c-96ec-e6773f8d8487 | Bin 0 -> 1123 bytes .../9962d291-cbeb-42f5-b3d3-e8d9cad92d91 | Bin 0 -> 1099 bytes .../9cbdfdb9-732d-487c-860f-74ad0503e6fa | Bin 0 -> 747 bytes .../_metadata | Bin 0 -> 8080 bytes .../a2cfdcbb-ebc7-4665-b3e9-6478d2d6157d | 541 ++++++++++++++++++ .../a2edf219-5899-4af0-9ecb-e7ccc022b829 | 1 + .../a85b94c3-b539-43ff-93a3-1a9c592f96ae | Bin 0 -> 1086 bytes .../abdf15c6-c997-4607-989c-7b793f81ac0f | 317 ++++++++++ .../ad91efab-f85b-4c40-93c8-01f9044236de | 1 + .../ae233392-97f4-44a4-ac68-6a04e8b61272 | 541 ++++++++++++++++++ .../b31ff795-33f9-46ab-9abe-d5c35655f495 | Bin 0 -> 1414 bytes .../b40ae522-462d-4a51-84bf-6c87ba43144c | Bin 0 -> 1099 bytes .../b56e42a8-7fb6-41e3-8014-1945ac5a3b0b | Bin 0 -> 1110 bytes .../bacd5e3c-d8dc-4b22-a006-c4b244e9b971 | 1 + .../bcc393d8-6a41-4a81-8553-b5934af6d401 | Bin 0 -> 260 bytes .../c139387a-072f-4d4d-a1d3-befd96664480 | Bin 0 -> 282 bytes .../c1c8b265-bad3-450e-824f-067ef47e7827 | 1 + .../ccec00d0-f5d5-4914-8d3b-d2a35c4bc1fd | 1 + .../d18f7d4f-2fa2-4d17-98bb-6cef47d6727b | 541 ++++++++++++++++++ .../d4edb439-a170-4dac-b979-bebbcec9e1e8 | Bin 0 -> 260 bytes .../d72b5a6b-9257-4022-92a6-6fa017a597de | 541 ++++++++++++++++++ .../e014c2fe-bbd7-43d8-862b-cc8587090e10 | 317 ++++++++++ .../e0262725-8956-4c47-a422-30fbe07be4fb | 541 ++++++++++++++++++ .../e0c2b3ea-eada-47f3-8006-6a755abdfb7d | Bin 0 -> 1123 bytes .../e5ef7089-6903-460b-8d27-79dedce80e6e | 429 ++++++++++++++ .../eb095a55-f2f7-429e-af83-18710f80d06e | Bin 0 -> 1414 bytes .../ed943c2b-f675-4504-84e4-8085fd654c5d | Bin 0 -> 260 bytes .../ee3f8736-d574-4d69-8f0c-1ae2b30b050f | Bin 0 -> 260 bytes .../efb842f1-03a4-4407-9c39-2e7af130d3f5 | Bin 0 -> 1073 bytes .../f32012a4-c5f2-4be5-bae9-e9b83d0bebd1 | Bin 0 -> 747 bytes .../f3f6ef36-d2d8-48b3-8ba1-1fa8169a2447 | 1 + .../f61d7a83-ccc8-4afb-8976-9290ba8b035a | Bin 0 -> 747 bytes .../f75af3d2-d7eb-40cb-a1af-3a8e15de4d7f | 1 + .../fba42b4d-7bfe-44dc-874a-79e91d0c97be | Bin 0 -> 747 bytes .../fd754104-527e-4a75-9dee-2445886f6df7 | 1 + .../ff75b468-a725-47e6-a410-c823acceda2a | Bin 0 -> 225 bytes .../03556267-d317-4389-b2c5-cb6617380c53 | Bin 0 -> 260 bytes .../03e98b55-2752-4826-8058-5f7cad4dc8f8 | Bin 0 -> 282 bytes .../05a3364c-418a-4c99-bc58-5f6ceeac38e0 | Bin 0 -> 505 bytes .../070bb171-8a9a-4004-a8fc-3db8d05fc83a | Bin 0 -> 747 bytes .../086b1ce2-8f44-42ad-85e5-85d3cfa8c57f | Bin 0 -> 1414 bytes .../09f2f282-2230-4b03-923b-5f2c68ad1e05 | 1 + .../0b5f99eb-04ae-4c30-a75c-7a2ccc9598d4 | 1 + .../0f22c723-413f-49b7-835b-320cdc92cb4f | Bin 0 -> 1145 bytes .../150f4489-f3a5-4904-a8f5-173cb35e20ff | Bin 0 -> 1083 bytes .../16ae77d4-2921-416e-b8fa-47d5f5361524 | Bin 0 -> 1073 bytes .../18fb8fde-3c37-4241-8da7-f7d2cc95dd1e | Bin 0 -> 293 bytes .../1a5ff059-f7cc-4a08-9268-ea271230f700 | Bin 0 -> 1414 bytes .../1cc27bb1-7d76-4735-a3c8-11f5ee6b230e | 1 + .../2415c309-e747-40fd-a1e7-459ce0464ea7 | 541 ++++++++++++++++++ .../2709bf7b-c933-422d-aa8e-4cecea552b5a | Bin 0 -> 1131 bytes .../29c885c5-5589-4326-9ef4-c549ab5a0390 | 1 + .../3291a378-5337-4a40-9458-8d7df6d10de0 | 317 ++++++++++ .../348a6733-e54e-470e-836a-5073245deade | Bin 0 -> 1123 bytes .../35417483-2bb7-4f9b-aa9e-552c88aed0de | 1 + .../35e45c86-b8fd-46b5-85e6-832acc3f493c | Bin 0 -> 1076 bytes .../3d509781-f361-42fc-a7ea-954a22768146 | 317 ++++++++++ .../3d678140-61cb-4c68-9ba0-f89c0c4fe939 | Bin 0 -> 747 bytes .../41748b1a-6316-4530-b896-b51a989e89b3 | Bin 0 -> 260 bytes .../449b6ac3-3ba0-416d-a4d3-178da0fe8c77 | Bin 0 -> 505 bytes .../47160329-3ea0-4f05-85bd-70a87d4f3627 | Bin 0 -> 1414 bytes .../47ee7a83-1e54-417c-85c7-91b72b9b8c37 | 1 + .../4a754c38-a466-4175-9a7a-6f126005430e | Bin 0 -> 260 bytes .../4bafff49-50ea-469a-a2c3-527f61e25d31 | Bin 0 -> 1086 bytes .../50202154-7876-435a-9ff8-34204b1e19da | 317 ++++++++++ .../505b515d-57da-48eb-94d5-e391e2fd516e | Bin 0 -> 747 bytes .../51d89b34-07e7-4bab-bd29-2216fddb3caa | Bin 0 -> 505 bytes .../5b1a53ac-0ad7-4861-8681-5eb44ba9705a | Bin 0 -> 225 bytes .../5bdaf88d-2d20-43a4-8306-0279d5c8744c | 317 ++++++++++ .../62ef218e-909f-4e75-8f51-d39a30023388 | Bin 0 -> 1099 bytes .../645fb0e7-0ef4-4f23-8f9e-8196a2970e15 | 1 + .../6ac0ed05-5d16-4887-8b26-7dcd3b966967 | Bin 0 -> 225 bytes .../6ebe22d9-dc15-4be3-b2a4-1653125675af | Bin 0 -> 1099 bytes .../73ba66fa-7390-464e-8ddb-e71d430490ca | Bin 0 -> 747 bytes .../776ccf69-6562-4a5d-9967-302b4ece524f | 317 ++++++++++ .../7eaea792-d4cc-438b-9f74-85166e55cf00 | Bin 0 -> 1414 bytes .../7f75438b-7d6d-4ddc-a263-f8cf860b6eb8 | 1 + .../814d4827-402c-4e78-89e8-b7e00cd5dbe8 | 541 ++++++++++++++++++ .../84c0fb0f-7fba-4420-a016-bc24fa634f9b | Bin 0 -> 505 bytes .../8561dd76-162f-4fb5-a4f9-9347202551c5 | 1 + .../935aaf85-d5a7-4f09-af90-969d38c5dd68 | Bin 0 -> 260 bytes .../95906873-6d01-477f-9635-1ad2793ba481 | Bin 0 -> 1086 bytes .../98257f69-3296-4878-aa9c-2a163d8cb054 | Bin 0 -> 1414 bytes .../9a6ce57c-e2f8-4997-8db1-d7375ba5c460 | 541 ++++++++++++++++++ .../_metadata | Bin 0 -> 8218 bytes .../a0fbfc64-ee05-4b65-bd97-4e3f0bf99fce | Bin 0 -> 260 bytes .../a189e40c-9258-41f6-8ce0-255377864817 | 541 ++++++++++++++++++ .../a76017f0-1ad5-4319-b708-b15571374e64 | Bin 0 -> 1123 bytes .../a8804acc-bdd7-438b-ba59-c4675c52a058 | Bin 0 -> 1123 bytes .../a9a379c6-a867-4868-89f0-26140cf5b239 | 1 + .../aaf53af4-642a-4210-a448-e2c18d0db5de | Bin 0 -> 1083 bytes .../aafbb7c7-566f-4d29-bb41-d12b72dbcbb1 | 1 + .../af3112be-ef01-4097-b74e-b07eb0ec5323 | Bin 0 -> 1084 bytes .../afb50700-193c-4af8-9a4d-b9de4c10ce9c | Bin 0 -> 1084 bytes .../b5cccf36-4ecb-4af2-aca7-4d6d5a634a4d | 429 ++++++++++++++ .../b66b2a07-f7ca-4f65-b3a3-707931a98fd4 | Bin 0 -> 505 bytes .../c1100c71-5003-4482-bf79-729522742cc8 | Bin 0 -> 1099 bytes .../c6e8b907-5478-47c5-9312-07b765266a6f | Bin 0 -> 747 bytes .../c769407a-edea-49d0-baa4-d5daf8615a40 | Bin 0 -> 505 bytes .../cf1e716c-ed57-40b5-85b2-6cd298f3548c | Bin 0 -> 1131 bytes .../cf80c6cb-5402-45a0-a85c-c2c55b414cf3 | Bin 0 -> 747 bytes .../d0d60567-280c-4575-a4b5-0c0070644b27 | 1 + .../d3088d8c-2125-4785-b90f-5ef3b399fb42 | 317 ++++++++++ .../d42488e5-a66c-4fec-82b9-61ea4becd459 | 1 + .../da2cf4b5-4677-4b06-abbd-47425720a028 | Bin 0 -> 1084 bytes .../dac0243f-a584-4fbc-a7a7-e64178d45a62 | 541 ++++++++++++++++++ .../dd9c1ff3-8b3e-4808-8c94-9010f4d7cb32 | Bin 0 -> 1123 bytes .../e0fc93c9-38c2-4158-870b-7d1526bd43a1 | Bin 0 -> 1145 bytes .../e287854c-2d28-43a1-b135-3dba557fd931 | Bin 0 -> 1110 bytes .../e562bd54-e2e2-433f-b949-5862c99e14ec | Bin 0 -> 1414 bytes .../ed34b883-5715-4d7c-b615-2047f373e577 | Bin 0 -> 1084 bytes .../ee044c64-31e8-4095-a544-d9237a43ba34 | Bin 0 -> 1073 bytes .../ee29cbb0-871b-4c85-86d5-ecc26d97c6c9 | 429 ++++++++++++++ .../f0e14849-57ed-4e18-86a9-7055c7ce842a | Bin 0 -> 1076 bytes .../f2665fcd-edaa-4615-ace5-2c6585d452f3 | 1 + .../f593321c-a39c-43de-b237-d8d3b33f2000 | 541 ++++++++++++++++++ .../f6c86361-507f-4ca3-8caa-7c7ce9a436d2 | Bin 0 -> 1099 bytes .../f723fcb2-45bd-4b08-a2a9-d6a50c867e4d | Bin 0 -> 1110 bytes .../f80c5516-caec-4cdf-b6f6-2ebdc70048ce | Bin 0 -> 260 bytes .../09acd476-c8f9-4ca1-8930-81c553fee23d | Bin 0 -> 293 bytes .../154ce638-772d-46d3-a024-281019dd952f | Bin 0 -> 1521 bytes .../1a63ad9c-6dae-4cb6-b5de-3af680c67fb9 | Bin 0 -> 535 bytes .../1b156e31-3761-4b44-b4e0-de8d66daafb9 | Bin 0 -> 1620 bytes .../1fb1db0e-a888-4276-8b9d-2b866f7f3f5b | Bin 0 -> 1145 bytes .../249b04db-dcd1-4cd7-a86c-2d8c8c07b508 | Bin 0 -> 1521 bytes .../50bc8b6b-0473-4858-9cba-c6d9ad6b6b3c | Bin 0 -> 1145 bytes .../651cc0dc-210b-47e4-82ef-b6597840cdfc | Bin 0 -> 535 bytes .../7e01a7dd-0775-4b68-bb05-1656ca68db63 | Bin 0 -> 282 bytes .../986d29ea-a289-4d70-8955-a4955ba26596 | Bin 0 -> 561 bytes .../_metadata | Bin 0 -> 2955 bytes .../a1c0337a-8fc4-4dee-9af9-3320ae772edb | Bin 0 -> 1521 bytes .../b141d405-9cb3-4811-ae5f-ce95eb4cf972 | Bin 0 -> 561 bytes .../b601976c-7434-4928-8cfa-47a0688c75e5 | Bin 0 -> 535 bytes .../d21dd724-7b5c-48a7-8cb4-1ac66ecdbd01 | Bin 0 -> 1620 bytes .../d431a59d-f25c-471a-b389-12d46d10d4bd | Bin 0 -> 535 bytes .../ee9ff9f9-03b7-4642-809c-dbeae15aefeb | Bin 0 -> 1521 bytes .../complexKeyed-flink2.3/_metadata | Bin 0 -> 14598 bytes .../operatorstate/nonKeyed-flink2.3/_metadata | Bin 0 -> 4519 bytes 628 files changed, 18938 insertions(+), 1 deletion(-) create mode 100644 flink-connectors/flink-hadoop-compatibility/src/test/resources/writeable-serializer-2.3/serializer-snapshot create mode 100644 flink-connectors/flink-hadoop-compatibility/src/test/resources/writeable-serializer-2.3/test-data create mode 100644 flink-core/src/test/resources/big-dec-serializer-2.3/serializer-snapshot create mode 100644 flink-core/src/test/resources/big-dec-serializer-2.3/test-data create mode 100644 flink-core/src/test/resources/big-int-serializer-2.3/serializer-snapshot create mode 100644 flink-core/src/test/resources/big-int-serializer-2.3/test-data create mode 100644 flink-core/src/test/resources/bitmap-serializer-2.3/serializer-snapshot create mode 100644 flink-core/src/test/resources/bitmap-serializer-2.3/test-data create mode 100644 flink-core/src/test/resources/boolean-primitive-array-serializer-2.3/serializer-snapshot create mode 100644 flink-core/src/test/resources/boolean-primitive-array-serializer-2.3/test-data create mode 100644 flink-core/src/test/resources/boolean-serializer-2.3/serializer-snapshot create mode 100644 flink-core/src/test/resources/boolean-serializer-2.3/test-data create mode 100644 flink-core/src/test/resources/boolean-value-serializer-2.3/serializer-snapshot create mode 100644 flink-core/src/test/resources/boolean-value-serializer-2.3/test-data create mode 100644 flink-core/src/test/resources/byte-primitive-array-serializer-2.3/serializer-snapshot create mode 100644 flink-core/src/test/resources/byte-primitive-array-serializer-2.3/test-data create mode 100644 flink-core/src/test/resources/byte-serializer-2.3/serializer-snapshot create mode 100644 flink-core/src/test/resources/byte-serializer-2.3/test-data create mode 100644 flink-core/src/test/resources/byte-value-serializer-2.3/serializer-snapshot create mode 100644 flink-core/src/test/resources/byte-value-serializer-2.3/test-data create mode 100644 flink-core/src/test/resources/char-primitive-array-serializer-2.3/serializer-snapshot create mode 100644 flink-core/src/test/resources/char-primitive-array-serializer-2.3/test-data create mode 100644 flink-core/src/test/resources/char-serializer-2.3/serializer-snapshot create mode 100644 flink-core/src/test/resources/char-serializer-2.3/test-data create mode 100644 flink-core/src/test/resources/char-value-serializer-2.3/serializer-snapshot create mode 100644 flink-core/src/test/resources/char-value-serializer-2.3/test-data create mode 100644 flink-core/src/test/resources/copyable-value-serializer-2.3/serializer-snapshot create mode 100644 flink-core/src/test/resources/copyable-value-serializer-2.3/test-data create mode 100644 flink-core/src/test/resources/date-serializer-2.3/serializer-snapshot create mode 100644 flink-core/src/test/resources/date-serializer-2.3/test-data create mode 100644 flink-core/src/test/resources/double-primitive-array-serializer-2.3/serializer-snapshot create mode 100644 flink-core/src/test/resources/double-primitive-array-serializer-2.3/test-data create mode 100644 flink-core/src/test/resources/double-serializer-2.3/serializer-snapshot create mode 100644 flink-core/src/test/resources/double-serializer-2.3/test-data create mode 100644 flink-core/src/test/resources/double-value-serializer-2.3/serializer-snapshot create mode 100644 flink-core/src/test/resources/double-value-serializer-2.3/test-data create mode 100644 flink-core/src/test/resources/either-serializer-2.3/serializer-snapshot create mode 100644 flink-core/src/test/resources/either-serializer-2.3/test-data create mode 100644 flink-core/src/test/resources/enum-serializer-2.3/serializer-snapshot create mode 100644 flink-core/src/test/resources/enum-serializer-2.3/test-data create mode 100644 flink-core/src/test/resources/enum-serializerreconfig-2.3/serializer-snapshot create mode 100644 flink-core/src/test/resources/enum-serializerreconfig-2.3/test-data create mode 100644 flink-core/src/test/resources/float-primitive-array-serializer-2.3/serializer-snapshot create mode 100644 flink-core/src/test/resources/float-primitive-array-serializer-2.3/test-data create mode 100644 flink-core/src/test/resources/float-serializer-2.3/serializer-snapshot create mode 100644 flink-core/src/test/resources/float-serializer-2.3/test-data create mode 100644 flink-core/src/test/resources/float-value-serializer-2.3/serializer-snapshot create mode 100644 flink-core/src/test/resources/float-value-serializer-2.3/test-data create mode 100644 flink-core/src/test/resources/generic-array-serializer-2.3/serializer-snapshot create mode 100644 flink-core/src/test/resources/generic-array-serializer-2.3/test-data create mode 100644 flink-core/src/test/resources/int-primitive-array-serializer-2.3/serializer-snapshot create mode 100644 flink-core/src/test/resources/int-primitive-array-serializer-2.3/test-data create mode 100644 flink-core/src/test/resources/int-serializer-2.3/serializer-snapshot create mode 100644 flink-core/src/test/resources/int-serializer-2.3/test-data create mode 100644 flink-core/src/test/resources/int-value-serializer-2.3/serializer-snapshot create mode 100644 flink-core/src/test/resources/int-value-serializer-2.3/test-data create mode 100644 flink-core/src/test/resources/kryo-custom-type-serializer-changed-registration-order-2.3/serializer-snapshot create mode 100644 flink-core/src/test/resources/kryo-custom-type-serializer-changed-registration-order-2.3/test-data create mode 100644 flink-core/src/test/resources/kryo-type-serializer-changed-registration-order-2.3/serializer-snapshot create mode 100644 flink-core/src/test/resources/kryo-type-serializer-changed-registration-order-2.3/test-data create mode 100644 flink-core/src/test/resources/kryo-type-serializer-empty-config-2.3/serializer-snapshot create mode 100644 flink-core/src/test/resources/kryo-type-serializer-empty-config-2.3/test-data create mode 100644 flink-core/src/test/resources/kryo-type-serializer-unrelated-config-after-restore-2.3/serializer-snapshot create mode 100644 flink-core/src/test/resources/kryo-type-serializer-unrelated-config-after-restore-2.3/test-data create mode 100644 flink-core/src/test/resources/list-serializer-2.3/serializer-snapshot create mode 100644 flink-core/src/test/resources/list-serializer-2.3/test-data create mode 100644 flink-core/src/test/resources/long-primitive-array-serializer-2.3/serializer-snapshot create mode 100644 flink-core/src/test/resources/long-primitive-array-serializer-2.3/test-data create mode 100644 flink-core/src/test/resources/long-serializer-2.3/serializer-snapshot create mode 100644 flink-core/src/test/resources/long-serializer-2.3/test-data create mode 100644 flink-core/src/test/resources/long-value-serializer-2.3/serializer-snapshot create mode 100644 flink-core/src/test/resources/long-value-serializer-2.3/test-data create mode 100644 flink-core/src/test/resources/map-serializer-2.3/serializer-snapshot create mode 100644 flink-core/src/test/resources/map-serializer-2.3/test-data create mode 100644 flink-core/src/test/resources/null-value-serializer-2.3/serializer-snapshot create mode 100644 flink-core/src/test/resources/null-value-serializer-2.3/test-data create mode 100644 flink-core/src/test/resources/nullable-not-padded-serializer-2.3/serializer-snapshot create mode 100644 flink-core/src/test/resources/nullable-not-padded-serializer-2.3/test-data create mode 100644 flink-core/src/test/resources/nullable-padded-serializer-2.3/serializer-snapshot create mode 100644 flink-core/src/test/resources/nullable-padded-serializer-2.3/test-data create mode 100644 flink-core/src/test/resources/pojo-serializer-identical-schema-2.3/serializer-snapshot create mode 100644 flink-core/src/test/resources/pojo-serializer-identical-schema-2.3/test-data create mode 100644 flink-core/src/test/resources/pojo-serializer-with-different-field-types-2.3/serializer-snapshot create mode 100644 flink-core/src/test/resources/pojo-serializer-with-different-field-types-2.3/test-data create mode 100644 flink-core/src/test/resources/pojo-serializer-with-different-field-types-in-registered-subclass-2.3/serializer-snapshot create mode 100644 flink-core/src/test/resources/pojo-serializer-with-different-field-types-in-registered-subclass-2.3/test-data create mode 100644 flink-core/src/test/resources/pojo-serializer-with-different-subclass-registration-order-2.3/serializer-snapshot create mode 100644 flink-core/src/test/resources/pojo-serializer-with-different-subclass-registration-order-2.3/test-data create mode 100644 flink-core/src/test/resources/pojo-serializer-with-missing-registered-subclass-2.3/serializer-snapshot create mode 100644 flink-core/src/test/resources/pojo-serializer-with-missing-registered-subclass-2.3/test-data create mode 100644 flink-core/src/test/resources/pojo-serializer-with-modified-schema-2.3/serializer-snapshot create mode 100644 flink-core/src/test/resources/pojo-serializer-with-modified-schema-2.3/test-data create mode 100644 flink-core/src/test/resources/pojo-serializer-with-modified-schema-in-registered-subclass-2.3/serializer-snapshot create mode 100644 flink-core/src/test/resources/pojo-serializer-with-modified-schema-in-registered-subclass-2.3/test-data create mode 100644 flink-core/src/test/resources/pojo-serializer-with-new-and-missing-registered-subclasses-2.3/serializer-snapshot create mode 100644 flink-core/src/test/resources/pojo-serializer-with-new-and-missing-registered-subclasses-2.3/test-data create mode 100644 flink-core/src/test/resources/pojo-serializer-with-new-registered-subclass-2.3/serializer-snapshot create mode 100644 flink-core/src/test/resources/pojo-serializer-with-new-registered-subclass-2.3/test-data create mode 100644 flink-core/src/test/resources/pojo-serializer-with-non-registered-subclass-2.3/serializer-snapshot create mode 100644 flink-core/src/test/resources/pojo-serializer-with-non-registered-subclass-2.3/test-data create mode 100644 flink-core/src/test/resources/row-serializer-2.3/serializer-snapshot create mode 100644 flink-core/src/test/resources/row-serializer-2.3/test-data create mode 100644 flink-core/src/test/resources/set-serializer-2.3/serializer-snapshot create mode 100644 flink-core/src/test/resources/set-serializer-2.3/test-data create mode 100644 flink-core/src/test/resources/short-primitive-array-serializer-2.3/serializer-snapshot create mode 100644 flink-core/src/test/resources/short-primitive-array-serializer-2.3/test-data create mode 100644 flink-core/src/test/resources/short-serializer-2.3/serializer-snapshot create mode 100644 flink-core/src/test/resources/short-serializer-2.3/test-data create mode 100644 flink-core/src/test/resources/short-value-serializer-2.3/serializer-snapshot create mode 100644 flink-core/src/test/resources/short-value-serializer-2.3/test-data create mode 100644 flink-core/src/test/resources/sql-date-serializer-2.3/serializer-snapshot create mode 100644 flink-core/src/test/resources/sql-date-serializer-2.3/test-data create mode 100644 flink-core/src/test/resources/sql-time-serializer-2.3/serializer-snapshot create mode 100644 flink-core/src/test/resources/sql-time-serializer-2.3/test-data create mode 100644 flink-core/src/test/resources/sql-timestamp-serializer-2.3/serializer-snapshot create mode 100644 flink-core/src/test/resources/sql-timestamp-serializer-2.3/test-data create mode 100644 flink-core/src/test/resources/string-array-serializer-2.3/serializer-snapshot create mode 100644 flink-core/src/test/resources/string-array-serializer-2.3/test-data create mode 100644 flink-core/src/test/resources/string-serializer-2.3/serializer-snapshot create mode 100644 flink-core/src/test/resources/string-serializer-2.3/test-data create mode 100644 flink-core/src/test/resources/string-value-serializer-2.3/serializer-snapshot create mode 100644 flink-core/src/test/resources/string-value-serializer-2.3/test-data create mode 100644 flink-core/src/test/resources/tuple-serializer-2.3/serializer-snapshot create mode 100644 flink-core/src/test/resources/tuple-serializer-2.3/test-data create mode 100644 flink-core/src/test/resources/value-serializer-2.3/serializer-snapshot create mode 100644 flink-core/src/test/resources/value-serializer-2.3/test-data create mode 100644 flink-core/src/test/resources/variant-serializer-2.3/serializer-snapshot create mode 100644 flink-core/src/test/resources/variant-serializer-2.3/test-data create mode 100644 flink-formats/flink-avro/src/test/resources/generic-avro-serializer-2.3/serializer-snapshot create mode 100644 flink-formats/flink-avro/src/test/resources/generic-avro-serializer-2.3/test-data create mode 100644 flink-formats/flink-avro/src/test/resources/specific-avro-serializer-2.3/serializer-snapshot create mode 100644 flink-formats/flink-avro/src/test/resources/specific-avro-serializer-2.3/test-data create mode 100644 flink-fs-tests/src/test/resources/monitoring-function-migration-test-1784576564638-flink2.3-snapshot create mode 100644 flink-fs-tests/src/test/resources/reader-migration-test-flink2.3-snapshot create mode 100644 flink-libraries/flink-cep/src/test/resources/cep-migration-after-branching-flink2.3-snapshot create mode 100644 flink-libraries/flink-cep/src/test/resources/cep-migration-conditions-flink2.3-snapshot create mode 100644 flink-libraries/flink-cep/src/test/resources/cep-migration-single-pattern-afterwards-flink2.3-snapshot create mode 100644 flink-libraries/flink-cep/src/test/resources/cep-migration-starting-new-pattern-flink2.3-snapshot create mode 100644 flink-libraries/flink-cep/src/test/resources/dewey-number-serializer-2.3/serializer-snapshot create mode 100644 flink-libraries/flink-cep/src/test/resources/dewey-number-serializer-2.3/test-data create mode 100644 flink-libraries/flink-cep/src/test/resources/event-id-serializer-2.3/serializer-snapshot create mode 100644 flink-libraries/flink-cep/src/test/resources/event-id-serializer-2.3/test-data create mode 100644 flink-libraries/flink-cep/src/test/resources/lockable-type-serializer-2.3/serializer-snapshot create mode 100644 flink-libraries/flink-cep/src/test/resources/lockable-type-serializer-2.3/test-data create mode 100644 flink-libraries/flink-cep/src/test/resources/nfa-state-serializer-2.3/serializer-snapshot create mode 100644 flink-libraries/flink-cep/src/test/resources/nfa-state-serializer-2.3/test-data create mode 100644 flink-libraries/flink-cep/src/test/resources/node-id-serializer-2.3/serializer-snapshot create mode 100644 flink-libraries/flink-cep/src/test/resources/node-id-serializer-2.3/test-data create mode 100644 flink-libraries/flink-cep/src/test/resources/shared-buffer-edge-serializer-2.3/serializer-snapshot create mode 100644 flink-libraries/flink-cep/src/test/resources/shared-buffer-edge-serializer-2.3/test-data create mode 100644 flink-runtime/src/test/resources/arraylist-serializer-2.3/serializer-snapshot create mode 100644 flink-runtime/src/test/resources/arraylist-serializer-2.3/test-data create mode 100644 flink-runtime/src/test/resources/buffer-entry-serializer-2.3/serializer-snapshot create mode 100644 flink-runtime/src/test/resources/buffer-entry-serializer-2.3/test-data create mode 100644 flink-runtime/src/test/resources/global-window-serializer-2.3/serializer-snapshot create mode 100644 flink-runtime/src/test/resources/global-window-serializer-2.3/test-data create mode 100644 flink-runtime/src/test/resources/java-serializer-2.3/serializer-snapshot create mode 100644 flink-runtime/src/test/resources/java-serializer-2.3/test-data create mode 100644 flink-runtime/src/test/resources/stream-element-serializer-2.3/serializer-snapshot create mode 100644 flink-runtime/src/test/resources/stream-element-serializer-2.3/test-data create mode 100644 flink-runtime/src/test/resources/time-window-serializer-2.3/serializer-snapshot create mode 100644 flink-runtime/src/test/resources/time-window-serializer-2.3/test-data create mode 100644 flink-runtime/src/test/resources/timer-serializer-2.3/serializer-snapshot create mode 100644 flink-runtime/src/test/resources/timer-serializer-2.3/test-data create mode 100644 flink-runtime/src/test/resources/ttl-aware-serializer-string-value-2.3/serializer-snapshot create mode 100644 flink-runtime/src/test/resources/ttl-aware-serializer-string-value-2.3/test-data create mode 100644 flink-runtime/src/test/resources/ttl-aware-serializer-ttl-value-2.3/serializer-snapshot create mode 100644 flink-runtime/src/test/resources/ttl-aware-serializer-ttl-value-2.3/test-data create mode 100644 flink-runtime/src/test/resources/ttl-serializer-2.3/serializer-snapshot create mode 100644 flink-runtime/src/test/resources/ttl-serializer-2.3/test-data create mode 100644 flink-runtime/src/test/resources/union-serializer-one-2.3/serializer-snapshot create mode 100644 flink-runtime/src/test/resources/union-serializer-one-2.3/test-data create mode 100644 flink-runtime/src/test/resources/union-serializer-two-2.3/serializer-snapshot create mode 100644 flink-runtime/src/test/resources/union-serializer-two-2.3/test-data create mode 100644 flink-runtime/src/test/resources/void-namespace-serializer-2.3/serializer-snapshot create mode 100644 flink-runtime/src/test/resources/void-namespace-serializer-2.3/test-data create mode 100644 flink-streaming-java/src/test/resources/win-op-migration-test-apply-event-time-flink2.3-snapshot create mode 100644 flink-streaming-java/src/test/resources/win-op-migration-test-apply-processing-time-flink2.3-snapshot create mode 100644 flink-streaming-java/src/test/resources/win-op-migration-test-kryo-serialized-key-flink2.3-snapshot create mode 100644 flink-streaming-java/src/test/resources/win-op-migration-test-reduce-event-time-flink2.3-snapshot create mode 100644 flink-streaming-java/src/test/resources/win-op-migration-test-reduce-processing-time-flink2.3-snapshot create mode 100644 flink-streaming-java/src/test/resources/win-op-migration-test-session-with-stateful-trigger-flink2.3-snapshot create mode 100644 flink-streaming-java/src/test/resources/win-op-migration-test-session-with-stateful-trigger-mint-flink2.3-snapshot create mode 100644 flink-table/flink-table-api-scala/src/test/resources/scala-case-class-serializer-2.3/serializer-snapshot create mode 100644 flink-table/flink-table-api-scala/src/test/resources/scala-case-class-serializer-2.3/test-data create mode 100644 flink-table/flink-table-api-scala/src/test/resources/scala-either-serializer-2.3/serializer-snapshot create mode 100644 flink-table/flink-table-api-scala/src/test/resources/scala-either-serializer-2.3/test-data create mode 100644 flink-table/flink-table-api-scala/src/test/resources/scala-enum-serializer-2.3/serializer-snapshot create mode 100644 flink-table/flink-table-api-scala/src/test/resources/scala-enum-serializer-2.3/test-data create mode 100644 flink-table/flink-table-api-scala/src/test/resources/scala-option-serializer-2.3/serializer-snapshot create mode 100644 flink-table/flink-table-api-scala/src/test/resources/scala-option-serializer-2.3/test-data create mode 100644 flink-table/flink-table-api-scala/src/test/resources/scala-try-serializer-2.3/serializer-snapshot create mode 100644 flink-table/flink-table-api-scala/src/test/resources/scala-try-serializer-2.3/test-data create mode 100644 flink-table/flink-table-api-scala/src/test/resources/traversable-serializer-bitset-2.3/serializer-snapshot create mode 100644 flink-table/flink-table-api-scala/src/test/resources/traversable-serializer-bitset-2.3/test-data create mode 100644 flink-table/flink-table-api-scala/src/test/resources/traversable-serializer-indexedseq-2.3/serializer-snapshot create mode 100644 flink-table/flink-table-api-scala/src/test/resources/traversable-serializer-indexedseq-2.3/test-data create mode 100644 flink-table/flink-table-api-scala/src/test/resources/traversable-serializer-linearseq-2.3/serializer-snapshot create mode 100644 flink-table/flink-table-api-scala/src/test/resources/traversable-serializer-linearseq-2.3/test-data create mode 100644 flink-table/flink-table-api-scala/src/test/resources/traversable-serializer-list-buffer-2.3/serializer-snapshot create mode 100644 flink-table/flink-table-api-scala/src/test/resources/traversable-serializer-list-buffer-2.3/test-data create mode 100644 flink-table/flink-table-api-scala/src/test/resources/traversable-serializer-map-2.3/serializer-snapshot create mode 100644 flink-table/flink-table-api-scala/src/test/resources/traversable-serializer-map-2.3/test-data create mode 100644 flink-table/flink-table-api-scala/src/test/resources/traversable-serializer-seq-2.3/serializer-snapshot create mode 100644 flink-table/flink-table-api-scala/src/test/resources/traversable-serializer-seq-2.3/test-data create mode 100644 flink-table/flink-table-api-scala/src/test/resources/traversable-serializer-set-2.3/serializer-snapshot create mode 100644 flink-table/flink-table-api-scala/src/test/resources/traversable-serializer-set-2.3/test-data create mode 100644 flink-table/flink-table-api-scala/src/test/resources/traversable-serializer-with-case-class-2.3/serializer-snapshot create mode 100644 flink-table/flink-table-api-scala/src/test/resources/traversable-serializer-with-case-class-2.3/test-data create mode 100644 flink-table/flink-table-api-scala/src/test/resources/traversable-serializer-with-pojo-2.3/serializer-snapshot create mode 100644 flink-table/flink-table-api-scala/src/test/resources/traversable-serializer-with-pojo-2.3/test-data create mode 100644 flink-table/flink-table-runtime/src/test/resources/linked-list-serializer-2.3/serializer-snapshot create mode 100644 flink-table/flink-table-runtime/src/test/resources/linked-list-serializer-2.3/test-data create mode 100644 flink-table/flink-table-runtime/src/test/resources/sink-upsert-materializer/migration-flink-2.3-HEAP-V1-snapshot create mode 100644 flink-table/flink-table-runtime/src/test/resources/sink-upsert-materializer/migration-flink-2.3-HEAP-V2-snapshot create mode 100644 flink-table/flink-table-runtime/src/test/resources/sink-upsert-materializer/migration-flink-2.3-ROCKSDB-V1-snapshot create mode 100644 flink-table/flink-table-runtime/src/test/resources/sink-upsert-materializer/migration-flink-2.3-ROCKSDB-V2-snapshot create mode 100644 flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-hashmap-checkpoint/072d2681-63b7-4c7b-80f6-40bef19f27e3 create mode 100644 flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-hashmap-checkpoint/1b0148d4-1999-4687-969d-22e0e623000f create mode 100644 flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-hashmap-checkpoint/1dff9aa3-919c-445c-9020-1ffcf84f8c96 create mode 100644 flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-hashmap-checkpoint/227f3b81-d934-4ba8-aa2d-b3dcd6bed2d7 create mode 100644 flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-hashmap-checkpoint/2f96c9f3-1ba8-440f-9d60-259c817db230 create mode 100644 flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-hashmap-checkpoint/35e533a3-7385-47d1-86a4-642f1e33ecaa create mode 100644 flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-hashmap-checkpoint/3cae0bc8-b3d8-4cb5-84fc-e3e9770af29a create mode 100644 flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-hashmap-checkpoint/3e30c60b-69d0-429d-b872-e0e65dbdd94b create mode 100644 flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-hashmap-checkpoint/432717c3-5612-4571-87db-71017780a90a create mode 100644 flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-hashmap-checkpoint/4853f6b6-ad8a-4677-823f-4e2eb2d56828 create mode 100644 flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-hashmap-checkpoint/685d3dc8-d1fa-4f34-a085-83d7d339a821 create mode 100644 flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-hashmap-checkpoint/6c6b8709-117a-4b3d-bf10-56135a412d7d create mode 100644 flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-hashmap-checkpoint/876da3c2-29b2-4c19-bea0-c6172e3ca685 create mode 100644 flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-hashmap-checkpoint/_metadata create mode 100644 flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-hashmap-checkpoint/a8ff8410-6e60-48b1-a959-50a575973f57 create mode 100644 flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-hashmap-checkpoint/b02aaf8e-c39c-41b5-868f-4a96919d4b7a create mode 100644 flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-hashmap-checkpoint/b07cb79e-92dd-452a-9d6a-e0c3110f7b3d create mode 100644 flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-hashmap-checkpoint/e27c68e5-70fa-4c5a-845f-a67d1555c18b create mode 100644 flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-hashmap-checkpoint/e91fc44d-2321-4318-bcab-f4791f6e09bd create mode 100644 flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-hashmap-checkpoint/f17fda57-d832-4d2d-a2f7-e93d3cc5e3bf create mode 100644 flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-hashmap-checkpoint/fbeea499-c8a6-4724-abbe-d4e1a0bcddb2 create mode 100644 flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-hashmap-savepoint-native/0254150e-e19b-42a5-8b5e-0cd267700a90 create mode 100644 flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-hashmap-savepoint-native/175bd4b8-0f44-4bd9-a646-bf0232aac778 create mode 100644 flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-hashmap-savepoint-native/241c0d48-7e88-4f94-8fce-80fbf17c0383 create mode 100644 flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-hashmap-savepoint-native/29c5745d-8ad6-4f59-9464-ddd0468077f0 create mode 100644 flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-hashmap-savepoint-native/3cdd3a80-f974-4799-a62c-0d5584b81eca create mode 100644 flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-hashmap-savepoint-native/3f411ee6-daf7-43bf-a75d-470b827c9903 create mode 100644 flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-hashmap-savepoint-native/4b1978f4-0aa4-44a7-8ec8-2baf7c18b840 create mode 100644 flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-hashmap-savepoint-native/4c52b484-4a4d-406c-8152-cad35d667728 create mode 100644 flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-hashmap-savepoint-native/4fb46874-d9f8-4bbe-afd0-ec8d92552380 create mode 100644 flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-hashmap-savepoint-native/51d94027-781f-4928-b92a-e3f62217ffee create mode 100644 flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-hashmap-savepoint-native/691d0b5e-b9fa-4d8e-930d-889389c6cd4f create mode 100644 flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-hashmap-savepoint-native/_metadata create mode 100644 flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-hashmap-savepoint-native/a0d9fe75-f916-46e9-8bcd-542fa1e94823 create mode 100644 flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-hashmap-savepoint-native/a5ddb891-c417-4496-a106-f98dda39c291 create mode 100644 flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-hashmap-savepoint-native/c11b2683-674c-4b65-9475-2f00c68344a9 create mode 100644 flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-hashmap-savepoint-native/c3b57c60-2989-4dec-b8c9-7683e1324de7 create mode 100644 flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-hashmap-savepoint-native/c546110f-c69b-4df5-acbe-ba86ef4c0ace create mode 100644 flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-hashmap-savepoint-native/cfb0a9a3-a903-4e01-b25f-dfcc9b94e88e create mode 100644 flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-hashmap-savepoint-native/ded470f0-de4f-456f-8a40-d2931c643cab create mode 100644 flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-hashmap-savepoint-native/e9264ddd-9dc6-4199-9257-9488c9777950 create mode 100644 flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-hashmap-savepoint-native/eb28972e-cca9-468c-b6e1-c5546f1abe21 create mode 100644 flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-hashmap-savepoint/0c598f38-4b73-4bb2-b7ee-26c1ff1900f0 create mode 100644 flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-hashmap-savepoint/20d3afb2-b900-4e31-b056-5ca08c9ad6b7 create mode 100644 flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-hashmap-savepoint/3740676a-9d6a-4a1c-9b16-d44028a588f0 create mode 100644 flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-hashmap-savepoint/3f69c997-de8e-4284-9db9-6e717b85f25f create mode 100644 flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-hashmap-savepoint/401a8148-e43c-4ae1-9c77-0f26bd125bc4 create mode 100644 flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-hashmap-savepoint/46cae258-01e6-4861-8b5e-787c84208067 create mode 100644 flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-hashmap-savepoint/5fea057a-54ed-4b1d-afa1-210bc98b310a create mode 100644 flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-hashmap-savepoint/6502c41b-d28d-4fdf-8b19-981412484cfd create mode 100644 flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-hashmap-savepoint/65618368-85c8-4fe2-8a32-e2a0f715e53f create mode 100644 flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-hashmap-savepoint/76860612-4931-4996-a221-55654dba3172 create mode 100644 flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-hashmap-savepoint/863a5a3c-ff1c-48f1-a342-62f431b626ee create mode 100644 flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-hashmap-savepoint/8a747645-d445-470c-8eb3-d8cae8629ca6 create mode 100644 flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-hashmap-savepoint/8ecbdad6-d14a-464c-aaf3-5db55e52c2f6 create mode 100644 flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-hashmap-savepoint/_metadata create mode 100644 flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-hashmap-savepoint/bdc79a1e-5432-49ec-bb1c-6bc96eee23c6 create mode 100644 flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-hashmap-savepoint/e148bc0a-2707-4366-9ce6-23a665679a37 create mode 100644 flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-hashmap-savepoint/e23d0934-4fdf-4278-a5a0-1e6ffe4265c0 create mode 100644 flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-hashmap-savepoint/e3ba9568-1e04-4468-b7f2-3647c91d736e create mode 100644 flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-hashmap-savepoint/ebdcc597-63e2-48fb-852f-f20a52cf4f2e create mode 100644 flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-hashmap-savepoint/ec8df3dd-6c2a-47f8-b678-d5adc0bafff7 create mode 100644 flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-hashmap-savepoint/f1530039-b1f6-4625-be1d-ee3e0e5fc315 create mode 100644 flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-checkpoint/01197b86-dabe-4c37-8fcf-90fe677c0fcc create mode 100644 flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-checkpoint/0d3d34c4-343c-42b3-b05f-c0c60c13dde3 create mode 100644 flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-checkpoint/1b3a9340-8eb2-44df-8e1a-d6e83df16a02 create mode 100644 flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-checkpoint/1b8040a8-ae25-4296-91fd-6e4de18f1501 create mode 100644 flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-checkpoint/1d60e78f-1b06-4c8c-8e44-058f8bf49f7c create mode 100644 flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-checkpoint/219b149c-ac5c-4b3c-9f8f-415028d63b82 create mode 100644 flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-checkpoint/2c78b5e2-da30-41c6-bfbc-b203d506365c create mode 100644 flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-checkpoint/2dcc0143-a438-4104-ab36-ddad184fda25 create mode 100644 flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-checkpoint/36bfc42a-6d2b-4a1c-bcc7-016cd97900ad create mode 100644 flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-checkpoint/401683f2-6977-4cde-9a24-2aa6cc363d4a create mode 100644 flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-checkpoint/432949de-9ad7-4ee6-a83b-961c162df0fb create mode 100644 flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-checkpoint/4a6a884b-1027-4697-a39b-56cc7a1a948e create mode 100644 flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-checkpoint/532e33e2-cba6-41f5-ab2f-2c539c17eb5d create mode 100644 flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-checkpoint/58138011-d05c-491a-8f7d-72e233a73ab1 create mode 100644 flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-checkpoint/5b450560-72ea-4daf-8056-faae820d3245 create mode 100644 flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-checkpoint/643281f6-6893-4b63-8d07-01493527f163 create mode 100644 flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-checkpoint/65449348-b3e4-4b73-b59c-2e5e3b930ba1 create mode 100644 flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-checkpoint/6bf4774f-25b1-4059-b557-07b2f6dfb820 create mode 100644 flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-checkpoint/6d64adea-4d82-481f-a74b-2387d20fe413 create mode 100644 flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-checkpoint/6da281da-a137-4bb9-a970-865d55de12bb create mode 100644 flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-checkpoint/769640d8-9e47-445e-bfab-6d9584ed4a5c create mode 100644 flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-checkpoint/769c6c3f-47ff-4428-96a0-087ddf701f40 create mode 100644 flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-checkpoint/78d26e5c-c70a-432b-b78b-2c14a5f4cb7a create mode 100644 flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-checkpoint/7ea2ec98-d255-448b-a70b-ca3c4c8115fc create mode 100644 flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-checkpoint/91be4aef-69d0-4a1b-a855-edc760636719 create mode 100644 flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-checkpoint/951de9c3-ba23-4036-a5c8-fbd0dc7bceb4 create mode 100644 flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-checkpoint/_metadata create mode 100644 flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-checkpoint/a9b395c2-ddbc-4501-bcd8-3fc8bb87e217 create mode 100644 flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-checkpoint/b5c838c7-d458-40c6-9fe0-683a6f4fc58b create mode 100644 flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-checkpoint/c0297b23-1374-471d-9cc7-120a1e825b74 create mode 100644 flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-checkpoint/c09ec99f-89fd-4786-a535-701f6b6794b6 create mode 100644 flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-checkpoint/c1c6fa62-9f6b-4fce-bc05-6c0888dc5681 create mode 100644 flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-checkpoint/d0ebb7b8-ff96-40d7-a8e1-162949ed36ea create mode 100644 flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-checkpoint/d89254ac-1992-41cb-9905-017e78adcab3 create mode 100644 flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-checkpoint/db593648-50aa-49b3-ad55-9e497de5e369 create mode 100644 flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-checkpoint/e2d0994d-fe90-4051-8dc9-6f5f418c140d create mode 100644 flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-checkpoint/e5a904c3-56b5-4965-8b26-99373feaebb0 create mode 100644 flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-checkpoint/e681adcf-84e7-40f5-9a04-0292f75db142 create mode 100644 flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-checkpoint/e7822fdd-7038-4066-b5f6-cf06b8d09500 create mode 100644 flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-checkpoint/e8322799-4490-42b9-a653-6d2425bcfb42 create mode 100644 flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-checkpoint/ea779b8b-8d8e-4ab6-bac6-395eb429b749 create mode 100644 flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-checkpoint/f5014293-9647-47ab-8685-fec899807da2 create mode 100644 flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-checkpoint/f6a6fbb1-d2c0-459f-9079-e783131cd2f4 create mode 100644 flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-checkpoint/fa00dc04-f764-442f-ab24-00312bc33788 create mode 100644 flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-checkpoint/fa27bf38-eeff-46a6-90ef-abc2dafc2a48 create mode 100644 flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/01fb91fc-8e84-4e12-8a44-bb2b546b4787 create mode 100644 flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/0732b46b-af1e-49e8-b7c4-c71c265c3755 create mode 100644 flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/0820f20c-f077-4d74-97a4-65f3999758b1 create mode 100644 flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/0d3ad900-46cd-42a6-8bb8-a11f885fc90f create mode 100644 flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/1038cde8-e97f-4a38-8cdf-03af8145b6d7 create mode 100644 flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/135da05c-1a8f-490b-b1ca-500a5811666a create mode 100644 flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/23602bb1-4778-4d05-a53d-e5285b6c4844 create mode 100644 flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/239c5d4f-5a1d-4d82-94cc-8ebee5dd77b1 create mode 100644 flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/28ade820-f6c1-456c-982d-9292118d8948 create mode 100644 flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/3409cc82-59da-4248-8e82-d5b4481e3e9a create mode 100644 flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/39f83302-8ef4-4e4e-add2-59c2c34fd59e create mode 100644 flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/3d66b41a-c24a-4b95-8547-51dea66dce54 create mode 100644 flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/4baf8c14-d5d1-46c6-a22b-6cf01b015fd5 create mode 100644 flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/520f29a7-9ddd-4bac-ba41-550bb701a0ef create mode 100644 flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/6f7d7bf7-df0d-4488-9c77-a2ffddace92f create mode 100644 flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/776a81d6-b722-4468-acde-8d1bd79a7e90 create mode 100644 flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/79b9437d-ee76-411a-9759-6e220e5fb58b create mode 100644 flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/7db9c167-b8ca-455c-b0ab-aa3612ad1e7d create mode 100644 flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/833084b5-0e6a-47f7-9c15-fe99efa35dba create mode 100644 flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/83ef3b5d-8be9-47ab-95b4-a498934c73df create mode 100644 flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/87fc8e49-ed6e-4abb-b28f-a64106810954 create mode 100644 flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/980e34c7-19d2-460b-97ca-5ef0935af84f create mode 100644 flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/98486669-d06d-4542-b4e7-75a645019924 create mode 100644 flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/9b7ef958-6f0b-4f71-a94d-f46dacbab5b1 create mode 100644 flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/9c9b0059-0d9c-4b13-b39d-3b264253f867 create mode 100644 flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/9ccbe2cb-48b2-4832-b382-4aa3b977bc0f create mode 100644 flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/_metadata create mode 100644 flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/a2a9d08a-37f0-4e18-ad91-d4daea99360b create mode 100644 flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/a7886ab2-3f30-42c7-997d-a135d957ef70 create mode 100644 flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/a7a60edd-501b-4239-b25f-6998471bfff4 create mode 100644 flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/ad98e1eb-4239-4773-b56f-d90baa191c63 create mode 100644 flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/b4e6e54c-7d83-4755-921e-c2f7a4f11374 create mode 100644 flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/b516b1f8-f3a1-48af-a399-a06dc6925d4c create mode 100644 flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/c5904d8e-f8c3-48e1-ba83-d4ddbd34f298 create mode 100644 flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/d35d6576-d4d7-47ff-a3ba-47f471a77a7f create mode 100644 flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/d7fa4f76-34ac-4d74-b4d1-05f849e50f05 create mode 100644 flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/d92d5d95-5d6e-4b9b-a81d-d13f7d29145a create mode 100644 flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/db0a028e-b85b-4095-8266-c86722a9f3d4 create mode 100644 flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/dc537dc6-012e-49ec-af31-2d19442b4350 create mode 100644 flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/e0cc4b62-857d-4339-81c2-a286f6bdc860 create mode 100644 flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/ef2429f6-5c70-4717-bd71-225d54589059 create mode 100644 flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/f267cf3d-c032-4014-ba7d-1645d4a09bcb create mode 100644 flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/f42dbd75-7256-4fb8-b02e-689381c24aa6 create mode 100644 flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/f544f6ee-24e5-442d-a48b-6e8b0c4e6257 create mode 100644 flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/fa75483b-2b31-4800-b1a5-e8da5365470c create mode 100644 flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-savepoint/0d494c52-b6ba-4a4c-8945-9d005e9076d7 create mode 100644 flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-savepoint/1c04996a-c2b0-461e-ba2f-6b9421422eaa create mode 100644 flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-savepoint/23226810-7944-4f58-810b-b67f0e9e4714 create mode 100644 flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-savepoint/2c1e43a4-a684-4c08-93e5-6703d5afc981 create mode 100644 flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-savepoint/4e6ffb17-b32d-42d2-beeb-96b8f8089e20 create mode 100644 flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-savepoint/51d51ace-9822-4bb6-b545-5826e83d85eb create mode 100644 flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-savepoint/53ddf49d-a390-4cb1-96ee-93ce3ee5383b create mode 100644 flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-savepoint/54532690-d6cf-4018-a474-e1d7381db82b create mode 100644 flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-savepoint/548cfd37-4e78-4044-90a9-0d25025b9676 create mode 100644 flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-savepoint/6130062c-fc07-4fdc-a83d-dc12f1ca43e8 create mode 100644 flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-savepoint/74b89435-4357-491b-964e-71ad08801e67 create mode 100644 flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-savepoint/765e995a-2c1b-4d8c-a748-807a7f009d8f create mode 100644 flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-savepoint/7b921a60-0480-4cb2-b932-7be5cb9751dc create mode 100644 flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-savepoint/_metadata create mode 100644 flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-savepoint/b0596240-bb80-4ed2-982a-70d50266490e create mode 100644 flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-savepoint/bccf06b8-9cae-4ab7-b1e8-c6934c20fc9f create mode 100644 flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-savepoint/c0719ae1-222b-41b5-b6d7-46c9b45c164c create mode 100644 flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-savepoint/f4303062-bd50-4a4b-9120-8ecf367c4dea create mode 100644 flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-savepoint/f68fc0e0-58dd-4dd1-bfbb-c084d30912f6 create mode 100644 flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-savepoint/f8db5709-13f7-4160-ae7e-f30730fd66b6 create mode 100644 flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-savepoint/fe68e282-fca1-4546-af59-520965d3f07d create mode 100644 flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-hashmap-checkpoint/0fafc3b1-2e14-4e96-a743-cb60274183e8 create mode 100644 flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-hashmap-checkpoint/1b797e8a-b107-474d-87d7-cabcead69566 create mode 100644 flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-hashmap-checkpoint/1f490290-e01a-49ab-88e7-bcf8ab5013a9 create mode 100644 flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-hashmap-checkpoint/4dbe42e6-3d46-46c7-814b-2920346542c8 create mode 100644 flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-hashmap-checkpoint/52f3cba8-a6cf-4504-bf99-7589c5220091 create mode 100644 flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-hashmap-checkpoint/7a5ca5f3-c8c0-47b2-a032-be17db22401f create mode 100644 flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-hashmap-checkpoint/898c9b7d-7420-462e-95f2-3e510a2f8320 create mode 100644 flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-hashmap-checkpoint/9c594fd9-33e6-4e29-a6bf-ead5ebbc9eb3 create mode 100644 flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-hashmap-checkpoint/9ecc3371-f3e0-45bd-b7b7-edc593bd3663 create mode 100644 flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-hashmap-checkpoint/_metadata create mode 100644 flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-hashmap-checkpoint/bdf02913-f03e-4a7e-abb2-5e96cc6e9cba create mode 100644 flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-hashmap-checkpoint/c617bc43-e885-4b1c-a3cc-5453afc0b9f6 create mode 100644 flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-hashmap-checkpoint/c750b486-f90f-4df5-9346-5e3677dfac75 create mode 100644 flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-hashmap-checkpoint/d109679b-99ed-45eb-a118-0b031e0ea0b2 create mode 100644 flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-hashmap-checkpoint/dc9d41ba-33e3-4faa-81a8-2d05014eb1c4 create mode 100644 flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-hashmap-checkpoint/eeed3950-5111-4cb6-9707-51a2eed5207a create mode 100644 flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-hashmap-checkpoint/fbdfafe2-ad27-4f56-8107-7c68ceb0b78e create mode 100644 flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-hashmap-savepoint-native/0d56b254-d4d2-4226-8e67-53343fb829da create mode 100644 flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-hashmap-savepoint-native/198994c5-87c9-45c3-a0db-17f4b52a2068 create mode 100644 flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-hashmap-savepoint-native/47ac03eb-4cdd-4995-a09b-ec167dd569ef create mode 100644 flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-hashmap-savepoint-native/54881c11-6731-49fc-95ff-b7380b267b3c create mode 100644 flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-hashmap-savepoint-native/5b3c1cbc-a071-40ce-93a1-6ea0248c3ed9 create mode 100644 flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-hashmap-savepoint-native/6144de29-daca-41b8-9091-d698397c6b1a create mode 100644 flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-hashmap-savepoint-native/738ada90-e74f-49ac-9d78-5c7f9e5bb599 create mode 100644 flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-hashmap-savepoint-native/746408cf-cdb8-4341-90ed-0e8e537776d9 create mode 100644 flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-hashmap-savepoint-native/82c38e44-ac91-47ac-a3cc-fb76736ca71c create mode 100644 flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-hashmap-savepoint-native/936a7b39-75a0-4657-bf5f-f295ffb34c79 create mode 100644 flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-hashmap-savepoint-native/_metadata create mode 100644 flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-hashmap-savepoint-native/ab25e2b9-0168-490c-9e69-2be833dcc353 create mode 100644 flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-hashmap-savepoint-native/ab44c145-c837-4862-b0e5-a9f3e6d6a353 create mode 100644 flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-hashmap-savepoint-native/d7585297-5b26-4ff3-9590-6f40b5a30c7c create mode 100644 flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-hashmap-savepoint-native/ea039358-a684-455d-b8d8-098af219c0ea create mode 100644 flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-hashmap-savepoint-native/f6c8c93d-551e-437e-9705-ac0dea275783 create mode 100644 flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-hashmap-savepoint-native/fa413e74-7411-4abb-89a1-90e492721580 create mode 100644 flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-hashmap-savepoint/07c6ae20-da34-494f-b0df-5af6b753d676 create mode 100644 flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-hashmap-savepoint/0e072358-d5a9-4485-99df-815c3bf7c82b create mode 100644 flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-hashmap-savepoint/1244f5ff-6c1b-4387-898b-41b875dadd94 create mode 100644 flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-hashmap-savepoint/271c51f9-ee0d-4fd9-8e93-19fd92f42a21 create mode 100644 flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-hashmap-savepoint/3308ecd2-84c1-4743-886c-4e211ce781e3 create mode 100644 flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-hashmap-savepoint/58c296ae-1728-44c1-8906-6c287ccdef10 create mode 100644 flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-hashmap-savepoint/63be2c2f-3f94-432c-8e12-2111d32d8259 create mode 100644 flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-hashmap-savepoint/78d70a3a-33b3-47b7-a56b-98e36e1a599e create mode 100644 flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-hashmap-savepoint/7ccc1ae0-7621-4931-899d-a630a9caf807 create mode 100644 flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-hashmap-savepoint/86a44de5-99ac-4ad2-aae2-1f01d7e8347f create mode 100644 flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-hashmap-savepoint/88cb2bb0-e37f-4859-8266-6df52c3bddec create mode 100644 flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-hashmap-savepoint/8c2d1a1b-debb-4750-b6f2-260fe94c5869 create mode 100644 flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-hashmap-savepoint/_metadata create mode 100644 flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-hashmap-savepoint/a4c13094-c6e2-4d05-9958-6caca82b26f9 create mode 100644 flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-hashmap-savepoint/e96e1b5d-a394-49c1-a2b2-62fb188ad953 create mode 100644 flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-hashmap-savepoint/f59d2379-9d30-4383-8608-35853ca9b1c8 create mode 100644 flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-hashmap-savepoint/fc90f5f2-5b58-42ac-a127-6c3a9dbba40a create mode 100644 flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-checkpoint/077484c0-5e19-436f-bfb0-84f42b476f81 create mode 100644 flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-checkpoint/07b4db4d-9266-4bfa-b04a-12ef0d1016dd create mode 100644 flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-checkpoint/089196b8-e406-4e62-a65c-acef06aafa68 create mode 100644 flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-checkpoint/0b46e588-c8f8-407e-9551-44c624b3576c create mode 100644 flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-checkpoint/0db591bd-5a43-4c20-beed-57d95e0335ca create mode 100644 flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-checkpoint/0e7f5ab5-f1ca-4ffc-8210-d1cd323daaec create mode 100644 flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-checkpoint/10a90885-081e-495b-a4bb-581bfc15f5b3 create mode 100644 flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-checkpoint/141372b9-6605-477b-abcb-38f68b761350 create mode 100644 flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-checkpoint/1867edd7-fea1-47ca-aa9b-0efa10336f4d create mode 100644 flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-checkpoint/19ca0409-d61a-4bb2-bc4f-1dcf578f55b8 create mode 100644 flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-checkpoint/21ec736f-8eb6-465d-8211-7493e1f68aae create mode 100644 flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-checkpoint/29779921-ddc6-4961-92cd-76658b8cb36b create mode 100644 flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-checkpoint/2f2bd39e-11c0-4e4e-9514-4637528ebbc5 create mode 100644 flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-checkpoint/361dfc6c-e533-4a2e-bd89-f2c0e78ac821 create mode 100644 flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-checkpoint/37eb0a14-acc4-40cc-a1b9-b93fef5c6c81 create mode 100644 flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-checkpoint/3cd5632d-9b87-4837-91bf-7144ff50475e create mode 100644 flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-checkpoint/40753da1-4b3c-487f-b7f9-913ccc5b5fa9 create mode 100644 flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-checkpoint/419ea493-eb76-4b4f-a824-44f26ec4abc7 create mode 100644 flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-checkpoint/44f696f8-a99c-4607-98c6-784497efc0fe create mode 100644 flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-checkpoint/49817ff0-028b-4f91-9523-a176abd0fd63 create mode 100644 flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-checkpoint/4a44398c-bf64-4982-90f2-51c2e8b7db91 create mode 100644 flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-checkpoint/4d6e907f-83e1-42d6-aca4-65c51814208f create mode 100644 flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-checkpoint/594f69f3-2448-400a-91e2-c1e8ec1df26a create mode 100644 flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-checkpoint/5cc02864-4379-4391-83d2-f66f341bce0a create mode 100644 flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-checkpoint/5f51a027-431a-4163-8052-4accc7924269 create mode 100644 flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-checkpoint/5f67e42e-3a37-48a8-a6af-7e9b8849f096 create mode 100644 flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-checkpoint/65afb798-744c-446a-ae93-79f6a0d39f44 create mode 100644 flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-checkpoint/65d7affe-e53d-4c89-ba95-6c29315a8a66 create mode 100644 flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-checkpoint/679bef9a-7383-490c-9f71-e25fe0a8024c create mode 100644 flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-checkpoint/6a38f8a7-234a-4f4d-925c-ec009cbe30ef create mode 100644 flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-checkpoint/6db805a0-39bf-4dcd-8437-b8849feae0b7 create mode 100644 flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-checkpoint/6f3394ca-a742-4217-b760-4d6d2a133076 create mode 100644 flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-checkpoint/6fc258f2-7197-4f82-8a6a-7b3276b8388f create mode 100644 flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-checkpoint/71f680a8-f58f-4147-ac88-71f8aa3cd52e create mode 100644 flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-checkpoint/763f1f04-100a-4b26-9db2-40ad7a7008e1 create mode 100644 flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-checkpoint/78b9528d-4b5a-4adb-b9d2-91b71b224f1b create mode 100644 flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-checkpoint/797e42be-9ffb-41b7-b6c9-f7ff31723365 create mode 100644 flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-checkpoint/7d704553-4d4d-468c-beb8-e477b7c7b431 create mode 100644 flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-checkpoint/80cf218e-9aed-4d83-8771-e810a2900fe9 create mode 100644 flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-checkpoint/818df800-fd2c-4b30-96d4-367532290fc0 create mode 100644 flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-checkpoint/88203641-edd9-49f3-8ada-379556908c20 create mode 100644 flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-checkpoint/89cb3686-20a7-49cc-829a-d2b613fa5d27 create mode 100644 flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-checkpoint/8a3a5998-08e6-4b69-b8bd-a1d6bc6b4eb1 create mode 100644 flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-checkpoint/8f08d36a-7b6f-4779-a57f-2da89facf68d create mode 100644 flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-checkpoint/9170c08c-8c89-4e11-863d-6916574b32ee create mode 100644 flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-checkpoint/91e74daf-23bf-4e9e-b3d8-88c86e5cb7c0 create mode 100644 flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-checkpoint/94e347a5-ffb7-4042-a984-7da49a8889da create mode 100644 flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-checkpoint/95d078d3-fc51-423c-96ec-e6773f8d8487 create mode 100644 flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-checkpoint/9962d291-cbeb-42f5-b3d3-e8d9cad92d91 create mode 100644 flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-checkpoint/9cbdfdb9-732d-487c-860f-74ad0503e6fa create mode 100644 flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-checkpoint/_metadata create mode 100644 flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-checkpoint/a2cfdcbb-ebc7-4665-b3e9-6478d2d6157d create mode 100644 flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-checkpoint/a2edf219-5899-4af0-9ecb-e7ccc022b829 create mode 100644 flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-checkpoint/a85b94c3-b539-43ff-93a3-1a9c592f96ae create mode 100644 flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-checkpoint/abdf15c6-c997-4607-989c-7b793f81ac0f create mode 100644 flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-checkpoint/ad91efab-f85b-4c40-93c8-01f9044236de create mode 100644 flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-checkpoint/ae233392-97f4-44a4-ac68-6a04e8b61272 create mode 100644 flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-checkpoint/b31ff795-33f9-46ab-9abe-d5c35655f495 create mode 100644 flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-checkpoint/b40ae522-462d-4a51-84bf-6c87ba43144c create mode 100644 flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-checkpoint/b56e42a8-7fb6-41e3-8014-1945ac5a3b0b create mode 100644 flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-checkpoint/bacd5e3c-d8dc-4b22-a006-c4b244e9b971 create mode 100644 flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-checkpoint/bcc393d8-6a41-4a81-8553-b5934af6d401 create mode 100644 flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-checkpoint/c139387a-072f-4d4d-a1d3-befd96664480 create mode 100644 flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-checkpoint/c1c8b265-bad3-450e-824f-067ef47e7827 create mode 100644 flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-checkpoint/ccec00d0-f5d5-4914-8d3b-d2a35c4bc1fd create mode 100644 flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-checkpoint/d18f7d4f-2fa2-4d17-98bb-6cef47d6727b create mode 100644 flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-checkpoint/d4edb439-a170-4dac-b979-bebbcec9e1e8 create mode 100644 flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-checkpoint/d72b5a6b-9257-4022-92a6-6fa017a597de create mode 100644 flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-checkpoint/e014c2fe-bbd7-43d8-862b-cc8587090e10 create mode 100644 flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-checkpoint/e0262725-8956-4c47-a422-30fbe07be4fb create mode 100644 flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-checkpoint/e0c2b3ea-eada-47f3-8006-6a755abdfb7d create mode 100644 flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-checkpoint/e5ef7089-6903-460b-8d27-79dedce80e6e create mode 100644 flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-checkpoint/eb095a55-f2f7-429e-af83-18710f80d06e create mode 100644 flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-checkpoint/ed943c2b-f675-4504-84e4-8085fd654c5d create mode 100644 flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-checkpoint/ee3f8736-d574-4d69-8f0c-1ae2b30b050f create mode 100644 flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-checkpoint/efb842f1-03a4-4407-9c39-2e7af130d3f5 create mode 100644 flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-checkpoint/f32012a4-c5f2-4be5-bae9-e9b83d0bebd1 create mode 100644 flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-checkpoint/f3f6ef36-d2d8-48b3-8ba1-1fa8169a2447 create mode 100644 flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-checkpoint/f61d7a83-ccc8-4afb-8976-9290ba8b035a create mode 100644 flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-checkpoint/f75af3d2-d7eb-40cb-a1af-3a8e15de4d7f create mode 100644 flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-checkpoint/fba42b4d-7bfe-44dc-874a-79e91d0c97be create mode 100644 flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-checkpoint/fd754104-527e-4a75-9dee-2445886f6df7 create mode 100644 flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-checkpoint/ff75b468-a725-47e6-a410-c823acceda2a create mode 100644 flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/03556267-d317-4389-b2c5-cb6617380c53 create mode 100644 flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/03e98b55-2752-4826-8058-5f7cad4dc8f8 create mode 100644 flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/05a3364c-418a-4c99-bc58-5f6ceeac38e0 create mode 100644 flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/070bb171-8a9a-4004-a8fc-3db8d05fc83a create mode 100644 flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/086b1ce2-8f44-42ad-85e5-85d3cfa8c57f create mode 100644 flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/09f2f282-2230-4b03-923b-5f2c68ad1e05 create mode 100644 flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/0b5f99eb-04ae-4c30-a75c-7a2ccc9598d4 create mode 100644 flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/0f22c723-413f-49b7-835b-320cdc92cb4f create mode 100644 flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/150f4489-f3a5-4904-a8f5-173cb35e20ff create mode 100644 flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/16ae77d4-2921-416e-b8fa-47d5f5361524 create mode 100644 flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/18fb8fde-3c37-4241-8da7-f7d2cc95dd1e create mode 100644 flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/1a5ff059-f7cc-4a08-9268-ea271230f700 create mode 100644 flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/1cc27bb1-7d76-4735-a3c8-11f5ee6b230e create mode 100644 flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/2415c309-e747-40fd-a1e7-459ce0464ea7 create mode 100644 flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/2709bf7b-c933-422d-aa8e-4cecea552b5a create mode 100644 flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/29c885c5-5589-4326-9ef4-c549ab5a0390 create mode 100644 flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/3291a378-5337-4a40-9458-8d7df6d10de0 create mode 100644 flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/348a6733-e54e-470e-836a-5073245deade create mode 100644 flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/35417483-2bb7-4f9b-aa9e-552c88aed0de create mode 100644 flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/35e45c86-b8fd-46b5-85e6-832acc3f493c create mode 100644 flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/3d509781-f361-42fc-a7ea-954a22768146 create mode 100644 flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/3d678140-61cb-4c68-9ba0-f89c0c4fe939 create mode 100644 flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/41748b1a-6316-4530-b896-b51a989e89b3 create mode 100644 flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/449b6ac3-3ba0-416d-a4d3-178da0fe8c77 create mode 100644 flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/47160329-3ea0-4f05-85bd-70a87d4f3627 create mode 100644 flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/47ee7a83-1e54-417c-85c7-91b72b9b8c37 create mode 100644 flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/4a754c38-a466-4175-9a7a-6f126005430e create mode 100644 flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/4bafff49-50ea-469a-a2c3-527f61e25d31 create mode 100644 flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/50202154-7876-435a-9ff8-34204b1e19da create mode 100644 flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/505b515d-57da-48eb-94d5-e391e2fd516e create mode 100644 flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/51d89b34-07e7-4bab-bd29-2216fddb3caa create mode 100644 flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/5b1a53ac-0ad7-4861-8681-5eb44ba9705a create mode 100644 flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/5bdaf88d-2d20-43a4-8306-0279d5c8744c create mode 100644 flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/62ef218e-909f-4e75-8f51-d39a30023388 create mode 100644 flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/645fb0e7-0ef4-4f23-8f9e-8196a2970e15 create mode 100644 flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/6ac0ed05-5d16-4887-8b26-7dcd3b966967 create mode 100644 flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/6ebe22d9-dc15-4be3-b2a4-1653125675af create mode 100644 flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/73ba66fa-7390-464e-8ddb-e71d430490ca create mode 100644 flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/776ccf69-6562-4a5d-9967-302b4ece524f create mode 100644 flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/7eaea792-d4cc-438b-9f74-85166e55cf00 create mode 100644 flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/7f75438b-7d6d-4ddc-a263-f8cf860b6eb8 create mode 100644 flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/814d4827-402c-4e78-89e8-b7e00cd5dbe8 create mode 100644 flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/84c0fb0f-7fba-4420-a016-bc24fa634f9b create mode 100644 flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/8561dd76-162f-4fb5-a4f9-9347202551c5 create mode 100644 flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/935aaf85-d5a7-4f09-af90-969d38c5dd68 create mode 100644 flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/95906873-6d01-477f-9635-1ad2793ba481 create mode 100644 flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/98257f69-3296-4878-aa9c-2a163d8cb054 create mode 100644 flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/9a6ce57c-e2f8-4997-8db1-d7375ba5c460 create mode 100644 flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/_metadata create mode 100644 flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/a0fbfc64-ee05-4b65-bd97-4e3f0bf99fce create mode 100644 flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/a189e40c-9258-41f6-8ce0-255377864817 create mode 100644 flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/a76017f0-1ad5-4319-b708-b15571374e64 create mode 100644 flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/a8804acc-bdd7-438b-ba59-c4675c52a058 create mode 100644 flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/a9a379c6-a867-4868-89f0-26140cf5b239 create mode 100644 flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/aaf53af4-642a-4210-a448-e2c18d0db5de create mode 100644 flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/aafbb7c7-566f-4d29-bb41-d12b72dbcbb1 create mode 100644 flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/af3112be-ef01-4097-b74e-b07eb0ec5323 create mode 100644 flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/afb50700-193c-4af8-9a4d-b9de4c10ce9c create mode 100644 flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/b5cccf36-4ecb-4af2-aca7-4d6d5a634a4d create mode 100644 flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/b66b2a07-f7ca-4f65-b3a3-707931a98fd4 create mode 100644 flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/c1100c71-5003-4482-bf79-729522742cc8 create mode 100644 flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/c6e8b907-5478-47c5-9312-07b765266a6f create mode 100644 flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/c769407a-edea-49d0-baa4-d5daf8615a40 create mode 100644 flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/cf1e716c-ed57-40b5-85b2-6cd298f3548c create mode 100644 flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/cf80c6cb-5402-45a0-a85c-c2c55b414cf3 create mode 100644 flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/d0d60567-280c-4575-a4b5-0c0070644b27 create mode 100644 flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/d3088d8c-2125-4785-b90f-5ef3b399fb42 create mode 100644 flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/d42488e5-a66c-4fec-82b9-61ea4becd459 create mode 100644 flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/da2cf4b5-4677-4b06-abbd-47425720a028 create mode 100644 flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/dac0243f-a584-4fbc-a7a7-e64178d45a62 create mode 100644 flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/dd9c1ff3-8b3e-4808-8c94-9010f4d7cb32 create mode 100644 flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/e0fc93c9-38c2-4158-870b-7d1526bd43a1 create mode 100644 flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/e287854c-2d28-43a1-b135-3dba557fd931 create mode 100644 flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/e562bd54-e2e2-433f-b949-5862c99e14ec create mode 100644 flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/ed34b883-5715-4d7c-b615-2047f373e577 create mode 100644 flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/ee044c64-31e8-4095-a544-d9237a43ba34 create mode 100644 flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/ee29cbb0-871b-4c85-86d5-ecc26d97c6c9 create mode 100644 flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/f0e14849-57ed-4e18-86a9-7055c7ce842a create mode 100644 flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/f2665fcd-edaa-4615-ace5-2c6585d452f3 create mode 100644 flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/f593321c-a39c-43de-b237-d8d3b33f2000 create mode 100644 flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/f6c86361-507f-4ca3-8caa-7c7ce9a436d2 create mode 100644 flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/f723fcb2-45bd-4b08-a2a9-d6a50c867e4d create mode 100644 flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/f80c5516-caec-4cdf-b6f6-2ebdc70048ce create mode 100644 flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint/09acd476-c8f9-4ca1-8930-81c553fee23d create mode 100644 flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint/154ce638-772d-46d3-a024-281019dd952f create mode 100644 flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint/1a63ad9c-6dae-4cb6-b5de-3af680c67fb9 create mode 100644 flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint/1b156e31-3761-4b44-b4e0-de8d66daafb9 create mode 100644 flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint/1fb1db0e-a888-4276-8b9d-2b866f7f3f5b create mode 100644 flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint/249b04db-dcd1-4cd7-a86c-2d8c8c07b508 create mode 100644 flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint/50bc8b6b-0473-4858-9cba-c6d9ad6b6b3c create mode 100644 flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint/651cc0dc-210b-47e4-82ef-b6597840cdfc create mode 100644 flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint/7e01a7dd-0775-4b68-bb05-1656ca68db63 create mode 100644 flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint/986d29ea-a289-4d70-8955-a4955ba26596 create mode 100644 flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint/_metadata create mode 100644 flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint/a1c0337a-8fc4-4dee-9af9-3320ae772edb create mode 100644 flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint/b141d405-9cb3-4811-ae5f-ce95eb4cf972 create mode 100644 flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint/b601976c-7434-4928-8cfa-47a0688c75e5 create mode 100644 flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint/d21dd724-7b5c-48a7-8cb4-1ac66ecdbd01 create mode 100644 flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint/d431a59d-f25c-471a-b389-12d46d10d4bd create mode 100644 flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint/ee9ff9f9-03b7-4642-809c-dbeae15aefeb create mode 100644 flink-tests/src/test/resources/operatorstate/complexKeyed-flink2.3/_metadata create mode 100644 flink-tests/src/test/resources/operatorstate/nonKeyed-flink2.3/_metadata diff --git a/flink-connectors/flink-hadoop-compatibility/src/test/resources/writeable-serializer-2.3/serializer-snapshot b/flink-connectors/flink-hadoop-compatibility/src/test/resources/writeable-serializer-2.3/serializer-snapshot new file mode 100644 index 0000000000000000000000000000000000000000..0af5d65ae901230b518d939709ecccc14e3f0ddc GIT binary patch literal 187 zcmbu2I}(CG5Cx|^i}4(V1V2Ui)F+HA%hv2*6`o#9ObiXXgKiPoNjH11D7X&Pd$K%k zVEVul8f)Pama6)a!zSw4EpSO}>4s!4`uUFm8YgR8p}KC;>d^^m_LA9)JO>)j(X>A3}T7e11^!mXc-a fcaf`WY_xF`nl&uqomAzhkJRZOE^}#zbpYcF=7}JW literal 0 HcmV?d00001 diff --git a/flink-core/src/test/resources/big-dec-serializer-2.3/test-data b/flink-core/src/test/resources/big-dec-serializer-2.3/test-data new file mode 100644 index 0000000000000000000000000000000000000000..c59e4326824021d1487cc672ac81a3cc40af2230 GIT binary patch literal 24 gcmZQzU=WFU@N#K_=)a?@?l0C@XW1yqz`(!^0C&d->i_@% literal 0 HcmV?d00001 diff --git a/flink-core/src/test/resources/big-int-serializer-2.3/serializer-snapshot b/flink-core/src/test/resources/big-int-serializer-2.3/serializer-snapshot new file mode 100644 index 0000000000000000000000000000000000000000..b525669a164b7642552f7f2d44841070935aac47 GIT binary patch literal 94 zcmZ9=F%Ezr3;@7JzvA3SxH;noDyi5AErB}d>veX#1AqZmYYC}RJQ(*ZdVUa$R*EV5 fUHNj!9XINXv!q2ma1+Y%aGU-SlxjcB0bqOq?oc4j literal 0 HcmV?d00001 diff --git a/flink-core/src/test/resources/big-int-serializer-2.3/test-data b/flink-core/src/test/resources/big-int-serializer-2.3/test-data new file mode 100644 index 0000000000000000000000000000000000000000..3d0079e672c0a597829290d7a14e10f079f322af GIT binary patch literal 19 bcmZQzU=S8R_IUqw{(G<9I2IP&*>wN_OPdL& literal 0 HcmV?d00001 diff --git a/flink-core/src/test/resources/bitmap-serializer-2.3/serializer-snapshot b/flink-core/src/test/resources/bitmap-serializer-2.3/serializer-snapshot new file mode 100644 index 0000000000000000000000000000000000000000..d41e8e63d781c1593ca9ab0c80db1f6a210fe168 GIT binary patch literal 94 zcmZ9=%ME}q2mnx`t9WJzSEvhMgO>CIY4M=b>)GRb05HL({X{Z~iSa1X@(01FwQ57Z ejW3rnaHqkzidVA0U8u;zefdXdWFx5q!2AOC^dSuZ literal 0 HcmV?d00001 diff --git a/flink-core/src/test/resources/bitmap-serializer-2.3/test-data b/flink-core/src/test/resources/bitmap-serializer-2.3/test-data new file mode 100644 index 0000000000000000000000000000000000000000..64cbeedb9ec83feca003635e588fc171724a2db1 GIT binary patch literal 32 gcmZQzV34sgU|?WkfPnw?3=9%LrW6n}GW`D!04p{GH~;_u literal 0 HcmV?d00001 diff --git a/flink-core/src/test/resources/boolean-primitive-array-serializer-2.3/serializer-snapshot b/flink-core/src/test/resources/boolean-primitive-array-serializer-2.3/serializer-snapshot new file mode 100644 index 0000000000000000000000000000000000000000..dfa6707ca06537d9dbf70e801b732cece0676dec GIT binary patch literal 130 zcmajUQ4T;b41nQ=t9b4mIDup*sHJFZ>(Y(j^f-aX|N8-;fm3Zk%H&tZIY`>x5cC?O sCahQHy-FxJQDG!Ax^PepOldTUQsvuCdNa>@(01_rMTg^ eD_=vj<4&D%byp?}+=NsfZp&|iQSHeG0L(8v9wF5L literal 0 HcmV?d00001 diff --git a/flink-core/src/test/resources/boolean-serializer-2.3/test-data b/flink-core/src/test/resources/boolean-serializer-2.3/test-data new file mode 100644 index 00000000000000..6b2aaa76407265 --- /dev/null +++ b/flink-core/src/test/resources/boolean-serializer-2.3/test-data @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/flink-core/src/test/resources/boolean-value-serializer-2.3/serializer-snapshot b/flink-core/src/test/resources/boolean-value-serializer-2.3/serializer-snapshot new file mode 100644 index 0000000000000000000000000000000000000000..8511a731d7b424072563b998346b9a70fc531511 GIT binary patch literal 106 zcmZw5%ME}q2mnx`t9WJzS7_o{Y*2|5ntl#Cy$;~QF(iYMc)V%G=3=qb5j iyEFGDT5+SwIJ+y8Eu@_T7a^60%kKjj qPH3(0X%Z?fR2fN?8cxl4R*7PA@%WKr6$)~*4u8`nDs|5W0R02dW-V3# literal 0 HcmV?d00001 diff --git a/flink-core/src/test/resources/byte-primitive-array-serializer-2.3/test-data b/flink-core/src/test/resources/byte-primitive-array-serializer-2.3/test-data new file mode 100644 index 0000000000000000000000000000000000000000..1ea699b1ed218a42580b48f99b627426263445b6 GIT binary patch literal 14 VcmZQzVBlh4WMXDvWn<^y1ONdc05|{u literal 0 HcmV?d00001 diff --git a/flink-core/src/test/resources/byte-serializer-2.3/serializer-snapshot b/flink-core/src/test/resources/byte-serializer-2.3/serializer-snapshot new file mode 100644 index 0000000000000000000000000000000000000000..372634d912a25e4edabbe5cb73d007e5b9229aae GIT binary patch literal 90 zcmY+%!3}^Q3;@7JSMl8;oWO($Dyh;~D1rLG>GkXV4ge1BK_yihfs%qII=#Ap$NxS6bYN;5QXwB0*C=^^L(pqV rnz3Dlk0!C=LY0xs=)x(G%_d2joIHNy*o30oY{TDlnMw`X0HA*W$0#i- literal 0 HcmV?d00001 diff --git a/flink-core/src/test/resources/char-primitive-array-serializer-2.3/test-data b/flink-core/src/test/resources/char-primitive-array-serializer-2.3/test-data new file mode 100644 index 0000000000000000000000000000000000000000..cc4337be169c1c6270a45c4a41ad31eeca4c8863 GIT binary patch literal 24 ccmV~$fdK#z2mr9D2>&14hL0trvK{Su0|EyCH~;_u literal 0 HcmV?d00001 diff --git a/flink-core/src/test/resources/char-serializer-2.3/serializer-snapshot b/flink-core/src/test/resources/char-serializer-2.3/serializer-snapshot new file mode 100644 index 0000000000000000000000000000000000000000..5f6308de382dc98e401e86d5fc59d79c64fb802a GIT binary patch literal 90 zcmY+%!3}^Q3kZ~+r0sHRFIP*U)q)9clDdjJM3<_B@*Eeh>P%lSoVvz)C^ dzpGqbQ=^re&>Y!=xN_1*eEK&Ot}R*zFurM#A4>oL literal 0 HcmV?d00001 diff --git a/flink-core/src/test/resources/char-serializer-2.3/test-data b/flink-core/src/test/resources/char-serializer-2.3/test-data new file mode 100644 index 00000000000000..f96c401f328b28 --- /dev/null +++ b/flink-core/src/test/resources/char-serializer-2.3/test-data @@ -0,0 +1 @@ +ÿÿ \ No newline at end of file diff --git a/flink-core/src/test/resources/char-value-serializer-2.3/serializer-snapshot b/flink-core/src/test/resources/char-value-serializer-2.3/serializer-snapshot new file mode 100644 index 0000000000000000000000000000000000000000..67c2a46ee1ec2824fad25dea08cd0bab70415eb1 GIT binary patch literal 100 zcmZw5F%Ezr3;@7JzvA3a_yiLNw@Rus7D@^X`g(nU;~fADu$iAog+gRJRPyyfFjz{K ivE7Ax6Ro&YWt=1VO4@m07gBlHr=MFgl^U%9!1w~nAR|uz literal 0 HcmV?d00001 diff --git a/flink-core/src/test/resources/char-value-serializer-2.3/test-data b/flink-core/src/test/resources/char-value-serializer-2.3/test-data new file mode 100644 index 0000000000000000000000000000000000000000..d399cc0405eb30b04596a0ee48f59821d7193bb0 GIT binary patch literal 2 JcmZS30ssIk04o3h literal 0 HcmV?d00001 diff --git a/flink-core/src/test/resources/copyable-value-serializer-2.3/serializer-snapshot b/flink-core/src/test/resources/copyable-value-serializer-2.3/serializer-snapshot new file mode 100644 index 0000000000000000000000000000000000000000..f1b8eb6f37004bcbed754d2df9e5132927fdbc6b GIT binary patch literal 199 zcmbWwF%H5o3`Sv#vvl?)I6?rin)1^c+{8*8q;h&-Kuj!*?=2q@ZD=fYVsRN~@WnLW zUZH%IyKtK4b1AUFXPgTy?p~aAN Ial;3F0tg{V)Bpeg literal 0 HcmV?d00001 diff --git a/flink-core/src/test/resources/copyable-value-serializer-2.3/test-data b/flink-core/src/test/resources/copyable-value-serializer-2.3/test-data new file mode 100644 index 0000000000000000000000000000000000000000..9ff9b97f863be2758cbbb46b207cf74bdd174734 GIT binary patch literal 8 NcmZQz00PEG4gdlV0VDtb literal 0 HcmV?d00001 diff --git a/flink-core/src/test/resources/date-serializer-2.3/serializer-snapshot b/flink-core/src/test/resources/date-serializer-2.3/serializer-snapshot new file mode 100644 index 0000000000000000000000000000000000000000..4794ebd6815d621db4663d2658f5521814a501ad GIT binary patch literal 90 zcmY+%!3}^Q3!Z~zk~sHAEmPy+R!)9clDdjJM3)^_5`@etaQmh+2Jw4AMw d-&HQx)M@1|G_y;PrkwPVHvJn4*M67-7+-0jA4>oL literal 0 HcmV?d00001 diff --git a/flink-core/src/test/resources/date-serializer-2.3/test-data b/flink-core/src/test/resources/date-serializer-2.3/test-data new file mode 100644 index 0000000000000000000000000000000000000000..1faf9a01d95ca70dbb5b4bce1405a4f06140ca40 GIT binary patch literal 8 PcmZQzU|@(d+Vued1bPBH literal 0 HcmV?d00001 diff --git a/flink-core/src/test/resources/double-primitive-array-serializer-2.3/serializer-snapshot b/flink-core/src/test/resources/double-primitive-array-serializer-2.3/serializer-snapshot new file mode 100644 index 0000000000000000000000000000000000000000..98ae2a649925f71c9ceee1c929148a0186846e00 GIT binary patch literal 128 zcmaLM!3lsc3_#JKt9Z^1f&&PhAWF2swkc^9>h$UY9{>9Q(7~m)BV}4W;}#?xZwRg$ tqb95^^I0VnT&OUT88w{rTmsJ~QL0=#e(2bQg4}Gw|8|LT@mc|(e*lg~F6aON literal 0 HcmV?d00001 diff --git a/flink-core/src/test/resources/double-primitive-array-serializer-2.3/test-data b/flink-core/src/test/resources/double-primitive-array-serializer-2.3/test-data new file mode 100644 index 0000000000000000000000000000000000000000..349e318c93c3d1c5db99085c2a170aa1afbc1ec2 GIT binary patch literal 84 zcmZQzVBoUfIdkR$1_lQEj}Y2{;mnx>K)wS9lom)!O91gjptJ;(mVwd=#>NgHc_j!9 E0JujJB>(^b literal 0 HcmV?d00001 diff --git a/flink-core/src/test/resources/double-serializer-2.3/serializer-snapshot b/flink-core/src/test/resources/double-serializer-2.3/serializer-snapshot new file mode 100644 index 0000000000000000000000000000000000000000..1383b642e931baa5e5780d079b485aeaa9c17b1f GIT binary patch literal 94 zcmZ9=%ME}a3;@tZSMl5_+yECSq)J1fgwH{z*R#j>0APW`+J#gpM8;F4qz{6@a<+ow et~`fmM^Bw`x9OD~HzAdW+x8DvsPTV7GcA6$+8@P|4Q^!C)y_ j#(ozbU9_R6#<<$>${Xom$5lw>;kx{;%T!vl4gm8DXoV#W literal 0 HcmV?d00001 diff --git a/flink-core/src/test/resources/double-value-serializer-2.3/test-data b/flink-core/src/test/resources/double-value-serializer-2.3/test-data new file mode 100644 index 00000000000000..5cfd3714ef6431 --- /dev/null +++ b/flink-core/src/test/resources/double-value-serializer-2.3/test-data @@ -0,0 +1 @@ +@ÈÖæ1ø¡ \ No newline at end of file diff --git a/flink-core/src/test/resources/either-serializer-2.3/serializer-snapshot b/flink-core/src/test/resources/either-serializer-2.3/serializer-snapshot new file mode 100644 index 0000000000000000000000000000000000000000..9357df72245167e44b7c282f91239c97d30fac3b GIT binary patch literal 276 zcmb7-ISv9b3`Nb-(s2Z8-vS9JXa|oW*C(-6!umAu6 literal 0 HcmV?d00001 diff --git a/flink-core/src/test/resources/either-serializer-2.3/test-data b/flink-core/src/test/resources/either-serializer-2.3/test-data new file mode 100644 index 00000000000000..87ec4466b7685d --- /dev/null +++ b/flink-core/src/test/resources/either-serializer-2.3/test-data @@ -0,0 +1 @@ + ApacheFlink \ No newline at end of file diff --git a/flink-core/src/test/resources/enum-serializer-2.3/serializer-snapshot b/flink-core/src/test/resources/enum-serializer-2.3/serializer-snapshot new file mode 100644 index 0000000000000000000000000000000000000000..27cc1daa6463a73eafd51efb5b95141756c3e912 GIT binary patch literal 188 zcmb7+I|>3Z7zRI#3f{x|Z#+SSh{C>b;{oCl-C$lM*+Nh6ZfR*XOfdssg)XEgsi=lg z)59A7n#Ir%oC}`HJL;(zo9V8yCgCU7>tvKQAD#BU+ItoA7zzM}!yi|vb6Hk%xCJ}4 cE!dG?vFU^q3;3<#*fm_9d2{_u-t@s4xZ=lLTk1z@wZOIrC;ZsqSem+DBkw$yZIShTyCz rX-2;aA1<-tM3s@u=)xf?`Dl{F<>daez$O&sX6t@$$W-d44gl=~EyXSz literal 0 HcmV?d00001 diff --git a/flink-core/src/test/resources/float-primitive-array-serializer-2.3/test-data b/flink-core/src/test/resources/float-primitive-array-serializer-2.3/test-data new file mode 100644 index 0000000000000000000000000000000000000000..cb6654fd12700e590776d0cb53bc81120138bd13 GIT binary patch literal 44 wcmZQzVBoUzIdj&2=FC|RJZH{20ND<0X=x72fcO{?KTAt)C^qSVyoP!kjsO4v literal 0 HcmV?d00001 diff --git a/flink-core/src/test/resources/generic-array-serializer-2.3/test-data b/flink-core/src/test/resources/generic-array-serializer-2.3/test-data new file mode 100644 index 0000000000000000000000000000000000000000..6d06a98cad99c83482f35994f9d3949bee4f874e GIT binary patch literal 19 acmZQzU|?cocPvOu&PZisbIZxh%LV`)#RNzI literal 0 HcmV?d00001 diff --git a/flink-core/src/test/resources/int-primitive-array-serializer-2.3/serializer-snapshot b/flink-core/src/test/resources/int-primitive-array-serializer-2.3/serializer-snapshot new file mode 100644 index 0000000000000000000000000000000000000000..2087b50341fa709ab373dbddf17a0b9d94dae0ee GIT binary patch literal 122 zcmaLMyA6Oa3;(K1^c6g&HHN(uGsDStW_d$>S%ERVd2MI{ZABskTrI0Qv`Uo-Bd@ literal 0 HcmV?d00001 diff --git a/flink-core/src/test/resources/int-primitive-array-serializer-2.3/test-data b/flink-core/src/test/resources/int-primitive-array-serializer-2.3/test-data new file mode 100644 index 0000000000000000000000000000000000000000..dd766c0e40557f77d916712d81d80c0a45c094bf GIT binary patch literal 44 icmZQzVBlha07f9i1jNih%mT!$K+Fcj>_E%`#GC*F(*QUC literal 0 HcmV?d00001 diff --git a/flink-core/src/test/resources/int-serializer-2.3/serializer-snapshot b/flink-core/src/test/resources/int-serializer-2.3/serializer-snapshot new file mode 100644 index 0000000000000000000000000000000000000000..597fc6b78debf36af42a3e3b485137d1ede77f77 GIT binary patch literal 88 zcmY+%F%Ezr3;@7JzvA3~xVZ3wN~$zKOP~(=dR@Kk0APa6`iayiCdQ+P<}ZTLYBfc_ c8(%JE;7)^aRS(>Siagwx--1#b$s7RY7c74sqW}N^ literal 0 HcmV?d00001 diff --git a/flink-core/src/test/resources/int-serializer-2.3/test-data b/flink-core/src/test/resources/int-serializer-2.3/test-data new file mode 100644 index 0000000000000000000000000000000000000000..e9271b31bdb53bdd08f6f9a789cf88e07007cfe7 GIT binary patch literal 4 LcmZQzeB=NC0t*2o literal 0 HcmV?d00001 diff --git a/flink-core/src/test/resources/int-value-serializer-2.3/serializer-snapshot b/flink-core/src/test/resources/int-value-serializer-2.3/serializer-snapshot new file mode 100644 index 0000000000000000000000000000000000000000..f6ae0720db0bcbd9d6f3da9ddef1ac65acf464a9 GIT binary patch literal 98 zcmZX|F%Ezr3;@7JzvA3~IFlIHN~$)NLZA%#dfgrG0APSM*8{0gJQ;TtyFLiUoKiOQ fyKr~Wh8s1;*?b}G9JmUpJY1)L1*6i=>;N#nh72O7 literal 0 HcmV?d00001 diff --git a/flink-core/src/test/resources/int-value-serializer-2.3/test-data b/flink-core/src/test/resources/int-value-serializer-2.3/test-data new file mode 100644 index 0000000000000000000000000000000000000000..e9271b31bdb53bdd08f6f9a789cf88e07007cfe7 GIT binary patch literal 4 LcmZQzeB=NC0t*2o literal 0 HcmV?d00001 diff --git a/flink-core/src/test/resources/kryo-custom-type-serializer-changed-registration-order-2.3/serializer-snapshot b/flink-core/src/test/resources/kryo-custom-type-serializer-changed-registration-order-2.3/serializer-snapshot new file mode 100644 index 0000000000000000000000000000000000000000..07b541e4a23c270c732a33768f621c17bd463d30 GIT binary patch literal 1718 zcmcJPT}lHn5XYyYH`x~vaswZhF7`ph+7HkN!J)=9Z8ljZ*}{4h&mlf|01xB|oZS|; z^+_dp$p?gA{`{C3062n?BPFoH#ZrnVqwSh6TC8w`A~cn(gEn4JZG$eQSX1M~B`;G+ z8jXIIG__dyr3=u)CjWws-OBk3M^{=A2JP%j`rxzN>JkmW@#n|OdByyb6#M~$XQ{xq zDZm^U;5w%1A%<4NO%m!nIyJt4!l?uTcGTCn0+`AI25=v<0vLMO)^Q7Wj6|-hvB<5~ zgWppm?nFPt6uk}n!}aOj54a&Gl(alx7h<&C3k;a$MA)=ddIo=c{|56t{_kddKi_>; j)MeS^9BU$#_Cb<-92)e#lXDjbeJEsy{~rAOQ-A&fzL9di literal 0 HcmV?d00001 diff --git a/flink-core/src/test/resources/kryo-custom-type-serializer-changed-registration-order-2.3/test-data b/flink-core/src/test/resources/kryo-custom-type-serializer-changed-registration-order-2.3/test-data new file mode 100644 index 00000000000000..7d1fe65f710175 --- /dev/null +++ b/flink-core/src/test/resources/kryo-custom-type-serializer-changed-registration-order-2.3/test-data @@ -0,0 +1 @@ + Hassï \ No newline at end of file diff --git a/flink-core/src/test/resources/kryo-type-serializer-changed-registration-order-2.3/serializer-snapshot b/flink-core/src/test/resources/kryo-type-serializer-changed-registration-order-2.3/serializer-snapshot new file mode 100644 index 0000000000000000000000000000000000000000..ec2538c6dd06eddb8cbfd1d1f92110ec1178e7c4 GIT binary patch literal 1525 zcmcJPO-{ow5Jsn{+$0->v{C7?*o7fn6em!6>hd#y;ySlxFNN}1FFzex(;N$lG+6-wc1O=>MnkkS_mz@ zYFRq0{FVc>u*JV%bKbGPWw|FK7>M0U`{1+OQHd5{{Q2>AQ$_ye5d2XDuZ99Y4grn> z1I$vIF4(jh9tNSVlT*_Rm|z${z=@hzK%{m8l4fm=BHTGhoP{2oI15K`XX5HC3wRJ# zM!VQg8#O(y1qRG=5p3E=zJ|Y@e~0xM|92JH*Q3vhx-6SKjJCo%v4 literal 0 HcmV?d00001 diff --git a/flink-core/src/test/resources/kryo-type-serializer-changed-registration-order-2.3/test-data b/flink-core/src/test/resources/kryo-type-serializer-changed-registration-order-2.3/test-data new file mode 100644 index 00000000000000..3637a3f5f87089 --- /dev/null +++ b/flink-core/src/test/resources/kryo-type-serializer-changed-registration-order-2.3/test-data @@ -0,0 +1 @@ + Hassï \ No newline at end of file diff --git a/flink-core/src/test/resources/kryo-type-serializer-empty-config-2.3/serializer-snapshot b/flink-core/src/test/resources/kryo-type-serializer-empty-config-2.3/serializer-snapshot new file mode 100644 index 0000000000000000000000000000000000000000..b7555735b81638ab5e2d83fa0cdd33591d5b30dd GIT binary patch literal 745 zcmcK2O=+x62;)&ah)3{1o*+FWM6*jm zX45~=eEsNt0Pq0gpaoJz>n-EPiQlJ<;EoQ2v8lL@;taL+QA)vg;-?ex1l4m6r~5N R|DnIv@RR@QO1kN`eg|T`3g!R+ literal 0 HcmV?d00001 diff --git a/flink-core/src/test/resources/kryo-type-serializer-empty-config-2.3/test-data b/flink-core/src/test/resources/kryo-type-serializer-empty-config-2.3/test-data new file mode 100644 index 0000000000000000000000000000000000000000..3bb1715c8c15ead9bc8770a3b8e62ad85fd112d3 GIT binary patch literal 88 zcmWN^!3lsc3;;m8i|oDK mccIgHH_$UX9|W7;0{zb@NvsteI4U|zp2*zlMxGElG+x62;)&ah)3{1o*+FWM6*jm zX45~=eEsNt0Pq0gpaoJz>n-EPiQlJ<;EoQ2v8lL@;taL+QA)vg;-?ex1l4m6r~5N R|DnIv@RR@QO1kN`eg|T`3g!R+ literal 0 HcmV?d00001 diff --git a/flink-core/src/test/resources/kryo-type-serializer-unrelated-config-after-restore-2.3/test-data b/flink-core/src/test/resources/kryo-type-serializer-unrelated-config-after-restore-2.3/test-data new file mode 100644 index 0000000000000000000000000000000000000000..3bb1715c8c15ead9bc8770a3b8e62ad85fd112d3 GIT binary patch literal 88 zcmWN^!3lsc3;;m8i|oDK mccIgHH_$UX9|W7;0{zb@NvsteI4U|zp2*zlMxGElGlJj$O^YipdDhpCeOEPnc^^y{cQ}ui@ zi%Wu2i!u{)GOJRHg7Xp!iZk*{7#J9s8F-(w0BJ@Bk?_A@8pIAE!RX+UqRhN>gyAaa I0?4)j0HEqUKL7v# literal 0 HcmV?d00001 diff --git a/flink-core/src/test/resources/list-serializer-2.3/test-data b/flink-core/src/test/resources/list-serializer-2.3/test-data new file mode 100644 index 0000000000000000000000000000000000000000..ac798598cd7d02126b3b0fc5a21a517c179a302f GIT binary patch literal 17 YcmZQzU|?c*EJ#ewNM&=&$;`_J02^QgMgRZ+ literal 0 HcmV?d00001 diff --git a/flink-core/src/test/resources/long-primitive-array-serializer-2.3/serializer-snapshot b/flink-core/src/test/resources/long-primitive-array-serializer-2.3/serializer-snapshot new file mode 100644 index 0000000000000000000000000000000000000000..6bf0336119e5068b1f210b01ac7a84a495af5764 GIT binary patch literal 124 zcmaLM!3}^Q3_#IFSMl5(yn8TVf=a430wo1aaC&tCkN)9V2o-vfXNcB=uYkdKU~O1?e_dP~VN h_Pg-tq74sfjH~6akq&lTg;XA{%g?z?rA6xiFu%{_BXa-% literal 0 HcmV?d00001 diff --git a/flink-core/src/test/resources/long-value-serializer-2.3/test-data b/flink-core/src/test/resources/long-value-serializer-2.3/test-data new file mode 100644 index 0000000000000000000000000000000000000000..2ffef6c2652f25d8c37f25e39d767c37a6074924 GIT binary patch literal 8 PcmZQzU|{f^#&ih)1H=Ke literal 0 HcmV?d00001 diff --git a/flink-core/src/test/resources/map-serializer-2.3/serializer-snapshot b/flink-core/src/test/resources/map-serializer-2.3/serializer-snapshot new file mode 100644 index 0000000000000000000000000000000000000000..6d47ba46bc50c139be8023f973ee3196cde59a97 GIT binary patch literal 268 zcmZQzU|?c!$S+FQODsrC&Pdfu%gM~k268g>lJj$O^YipdDhpCeOEPnc^^y{cQ}uik z3xZRNG81z$t5S=C^AZb+GxAFq7#Nrtc%QQXX+{Q-@V{UhWU?O#CVS?UAWT+4;i1?Q ULV}sWB}JKe=}5++3m}^e07X7qVE_OC literal 0 HcmV?d00001 diff --git a/flink-core/src/test/resources/map-serializer-2.3/test-data b/flink-core/src/test/resources/map-serializer-2.3/test-data new file mode 100644 index 0000000000000000000000000000000000000000..8999b1fbbac085123b131209457719d369519152 GIT binary patch literal 25 acmZQzU|?nd0VV?=!N|a52x2oZ836zVE&!ka literal 0 HcmV?d00001 diff --git a/flink-core/src/test/resources/null-value-serializer-2.3/serializer-snapshot b/flink-core/src/test/resources/null-value-serializer-2.3/serializer-snapshot new file mode 100644 index 0000000000000000000000000000000000000000..fcecf15adb98cd6ac1da3e837b923cd0a6b4ce12 GIT binary patch literal 100 zcmZw5I}U@tZuj1UJxR5xwRZ^v~P{L=>)9V2k-vfXNb}JWBCLb72m303Q^cJHf hY)|IiL@ORt8P~45k#=@mgj8NG%ivt1T!S?Lm_O43p5JcP6)XXCo_en&A4aBf_X?I(DdWQK3dSOo?I2es+P*uE29sqQ3@^L~6 zG|r4?6}wgtywHs>-vgH{nlKj2;u!Zul?LUWqmasjjT0Iu}MH zPs7A`Rk8On1aI^pOi#}_iAD_BCNYestV+Fd%Rxxx#o_RKwU&IGTmpbK?B1K=rm%(m c+`mDi9UE((1km# zC(8cIOJFw2nzB-?d)D5tA@Qi~-dHfGdj34P$#KI*TDs$kO~=(v#C4qf4f8VyBi*VV z;;lv0o8uz-KXvLAASKh;jrTX literal 0 HcmV?d00001 diff --git a/flink-core/src/test/resources/pojo-serializer-identical-schema-2.3/test-data b/flink-core/src/test/resources/pojo-serializer-identical-schema-2.3/test-data new file mode 100644 index 0000000000000000000000000000000000000000..670022368fc849d20e54f258fe921989cdf8c5e1 GIT binary patch literal 21 WcmZQ#00LFV0q4)+ctsil=S Q^Y}w`7W6xWiRncPPidcGd;kCd literal 0 HcmV?d00001 diff --git a/flink-core/src/test/resources/pojo-serializer-with-different-field-types-2.3/test-data b/flink-core/src/test/resources/pojo-serializer-with-different-field-types-2.3/test-data new file mode 100644 index 0000000000000000000000000000000000000000..9cf45f4c08d73dc9688490067458c02cbe5a0daa GIT binary patch literal 6 NcmZQ#VBmeu0ssOF0Q&#{ literal 0 HcmV?d00001 diff --git a/flink-core/src/test/resources/pojo-serializer-with-different-field-types-in-registered-subclass-2.3/serializer-snapshot b/flink-core/src/test/resources/pojo-serializer-with-different-field-types-in-registered-subclass-2.3/serializer-snapshot new file mode 100644 index 0000000000000000000000000000000000000000..9f5609d12cb447bfa9e37940c896543926dc94c7 GIT binary patch literal 2570 zcmeHJK}y3w6#X?Rg5U*Q7nfPNbyFKfkW!jdLEQW%Kk2lSnJ}3Y^e7(4Gk6Y9;G|%i zv_VqQETo(8|3LoBdwKI_0N@DvQpFCY7|h6tI1>xgFlUZSbo6sdxn?|bR4z12$QjAG z^hhz}?1hvkFwJICLop}(`J71_D-6k}OnWH>EMfs_CPmisv?&75d|QGAHh}%{_IjBb zL>nxOsbi`|OW0p{J`8KQ1~N&cD5*BZjGSAcH;VNtT}eL+P9t1O#WY<>E>*!RZ;96~ z@;i+7VCafGDN(Gp6^`@Tsg1nW+#|h}fJQ$Htg$-)yMH%vp?foS-60$&s1&2H&{wvk zZyECm?rSxu_fB6*PAE#^?yOYwwFM@tEx}u&wg!9ze-B=sR!qbtTH6a1R+~NFf%76H zRw@KHUo^EmY`yq5r&Kx14*6MsE!xA_E$62R#r6HEQhx%NKaaow literal 0 HcmV?d00001 diff --git a/flink-core/src/test/resources/pojo-serializer-with-different-field-types-in-registered-subclass-2.3/test-data b/flink-core/src/test/resources/pojo-serializer-with-different-field-types-in-registered-subclass-2.3/test-data new file mode 100644 index 0000000000000000000000000000000000000000..195b040a97afecab047373198e70ba57971207df GIT binary patch literal 24 acmd;JU}69Qb`ZhHz`*;Q1;}7dF984wn*r$n literal 0 HcmV?d00001 diff --git a/flink-core/src/test/resources/pojo-serializer-with-different-subclass-registration-order-2.3/serializer-snapshot b/flink-core/src/test/resources/pojo-serializer-with-different-subclass-registration-order-2.3/serializer-snapshot new file mode 100644 index 0000000000000000000000000000000000000000..e771338b74531f5af8fe7edfe3a9d0473544d417 GIT binary patch literal 4372 zcmeHKK~4fO6#X(oTyYE5a|0KSj>g0g!hj3orVM2$OxsD@A<=~g@enROf@km?p1=-K z=s+b5fk{Ya)3jam^}YPQ_X_|G@VSURl%i;Yy>UX=OfQHxMRVk-=M-m(B+?TZQ-or# z%cnfVf}n)FU=cEu$_ZDHpEKJ3oIx53G{Su>RhZ(4j7fwP;Y_wer6*CS??zFM4d8x% zzFnjm(FF&^_)O1c6=DD3^`T?s8gWWFGgKQQiM>0fR*JO?D?>jAT4OZlf+&2&6E1RI zSw*}yk-wl@f?>ciYEUdL3mm7`Q+KMh-D{-15K!yqfYS@E!S(M40W@!WLC}G7ii99| zl+fz|5G zH-K7E4qQQDHjEM^H5o<_&Cj&@D1(i jnArN|DPd!ETfN7ZvV^{MOq_U3_?DPB?*GV)h=1lkq_-Z^ literal 0 HcmV?d00001 diff --git a/flink-core/src/test/resources/pojo-serializer-with-different-subclass-registration-order-2.3/test-data b/flink-core/src/test/resources/pojo-serializer-with-different-subclass-registration-order-2.3/test-data new file mode 100644 index 0000000000000000000000000000000000000000..d1569d857ae295ed25f01086d01d9e8cb0eab364 GIT binary patch literal 21 Wcmd;JWMTjUb`Ze`#LVd>42%E-Y5?;9 literal 0 HcmV?d00001 diff --git a/flink-core/src/test/resources/pojo-serializer-with-missing-registered-subclass-2.3/serializer-snapshot b/flink-core/src/test/resources/pojo-serializer-with-missing-registered-subclass-2.3/serializer-snapshot new file mode 100644 index 0000000000000000000000000000000000000000..e771338b74531f5af8fe7edfe3a9d0473544d417 GIT binary patch literal 4372 zcmeHKK~4fO6#X(oTyYE5a|0KSj>g0g!hj3orVM2$OxsD@A<=~g@enROf@km?p1=-K z=s+b5fk{Ya)3jam^}YPQ_X_|G@VSURl%i;Yy>UX=OfQHxMRVk-=M-m(B+?TZQ-or# z%cnfVf}n)FU=cEu$_ZDHpEKJ3oIx53G{Su>RhZ(4j7fwP;Y_wer6*CS??zFM4d8x% zzFnjm(FF&^_)O1c6=DD3^`T?s8gWWFGgKQQiM>0fR*JO?D?>jAT4OZlf+&2&6E1RI zSw*}yk-wl@f?>ciYEUdL3mm7`Q+KMh-D{-15K!yqfYS@E!S(M40W@!WLC}G7ii99| zl+fz|5G zH-K7E4qQQDHjEM^H5o<_&Cj&@D1(i jnArN|DPd!ETfN7ZvV^{MOq_U3_?DPB?*GV)h=1lkq_-Z^ literal 0 HcmV?d00001 diff --git a/flink-core/src/test/resources/pojo-serializer-with-missing-registered-subclass-2.3/test-data b/flink-core/src/test/resources/pojo-serializer-with-missing-registered-subclass-2.3/test-data new file mode 100644 index 0000000000000000000000000000000000000000..d1569d857ae295ed25f01086d01d9e8cb0eab364 GIT binary patch literal 21 Wcmd;JWMTjUb`Ze`#LVd>42%E-Y5?;9 literal 0 HcmV?d00001 diff --git a/flink-core/src/test/resources/pojo-serializer-with-modified-schema-2.3/serializer-snapshot b/flink-core/src/test/resources/pojo-serializer-with-modified-schema-2.3/serializer-snapshot new file mode 100644 index 0000000000000000000000000000000000000000..63bf2dcbebe8f851b2dc395ac29019d90b16069f GIT binary patch literal 686 zcmcJNL2kl83`Gq@Jw#Vfv7Q@rgSzRW2q}?}*coCnrkR;&;#7j8a3BuE37V-&nIII2 zMR&I6+j{!*0bmF-=L>}uZZxTF$@a5tSnco&mFz2Ogv(m_#tIu!3%7GAdB&0tJk`XL4&rM^ln^K8O-nUZJaUAMucmu zNxfUS(oH*E#5#f}O@#j@X>?w;Oz27obS#%=`GSZ+x?DXE{sLy8^lQTUgd8ZVU-w$WZzBvxi;a3D#<0nx~eQG}Xh;{Zv*kuF^RN~!G_me!>SnIp!i Q4n+a literal 0 HcmV?d00001 diff --git a/flink-core/src/test/resources/pojo-serializer-with-modified-schema-in-registered-subclass-2.3/test-data b/flink-core/src/test/resources/pojo-serializer-with-modified-schema-in-registered-subclass-2.3/test-data new file mode 100644 index 0000000000000000000000000000000000000000..9d83d0b40feacb6bcb84e49dcbc823167b5a18d0 GIT binary patch literal 27 hcmd;JU}9k4ea^zb?w((ilAp)G$lwsL<_r*=1prLb2(17B literal 0 HcmV?d00001 diff --git a/flink-core/src/test/resources/pojo-serializer-with-new-and-missing-registered-subclasses-2.3/serializer-snapshot b/flink-core/src/test/resources/pojo-serializer-with-new-and-missing-registered-subclasses-2.3/serializer-snapshot new file mode 100644 index 0000000000000000000000000000000000000000..e771338b74531f5af8fe7edfe3a9d0473544d417 GIT binary patch literal 4372 zcmeHKK~4fO6#X(oTyYE5a|0KSj>g0g!hj3orVM2$OxsD@A<=~g@enROf@km?p1=-K z=s+b5fk{Ya)3jam^}YPQ_X_|G@VSURl%i;Yy>UX=OfQHxMRVk-=M-m(B+?TZQ-or# z%cnfVf}n)FU=cEu$_ZDHpEKJ3oIx53G{Su>RhZ(4j7fwP;Y_wer6*CS??zFM4d8x% zzFnjm(FF&^_)O1c6=DD3^`T?s8gWWFGgKQQiM>0fR*JO?D?>jAT4OZlf+&2&6E1RI zSw*}yk-wl@f?>ciYEUdL3mm7`Q+KMh-D{-15K!yqfYS@E!S(M40W@!WLC}G7ii99| zl+fz|5G zH-K7E4qQQDHjEM^H5o<_&Cj&@D1(i jnArN|DPd!ETfN7ZvV^{MOq_U3_?DPB?*GV)h=1lkq_-Z^ literal 0 HcmV?d00001 diff --git a/flink-core/src/test/resources/pojo-serializer-with-new-and-missing-registered-subclasses-2.3/test-data b/flink-core/src/test/resources/pojo-serializer-with-new-and-missing-registered-subclasses-2.3/test-data new file mode 100644 index 0000000000000000000000000000000000000000..d1569d857ae295ed25f01086d01d9e8cb0eab364 GIT binary patch literal 21 Wcmd;JWMTjUb`Ze`#LVd>42%E-Y5?;9 literal 0 HcmV?d00001 diff --git a/flink-core/src/test/resources/pojo-serializer-with-new-registered-subclass-2.3/serializer-snapshot b/flink-core/src/test/resources/pojo-serializer-with-new-registered-subclass-2.3/serializer-snapshot new file mode 100644 index 0000000000000000000000000000000000000000..5bf16ffc5ca83a253ec092068f7667017ebccf73 GIT binary patch literal 2789 zcmeHJOHRWu5S@}#ta^*Ca|0F>0zyJn)wC=Sn`!C>xBf)7QwbIvghOx)&cHc10Zs(1 z(^{xSC97^Cj~Da&US{450GvQisw~1B(?=4`7!?Z}&}fcJjLcI`3PYKWR3QxIBpS%M zOo*b$=rd7?z+68{17)7+-}8*~OyQJ_h&D-1QaYn48Y+eECdMAp#J-JVi472bzQ3O3 z7BPeXGt#oBMMKy>cq8b0xu%kHDIC=%s7Z7q%v!N-Epqe=pfkgzRMe0Q$)qZI6%Fy) zM*e`o9t>kqaED?&tZ|%sv+h)DyVpp!642@wKroCiA?)3bV`yIw;! z7)4;kCxX2ycax~ldNxT6=du>hO)$!v+qH&i%uS~KCp-IVl^frL}_)PfU^qC^6 Sp0;ji|BKD=E|_zN&-4WV_$=uF literal 0 HcmV?d00001 diff --git a/flink-core/src/test/resources/pojo-serializer-with-non-registered-subclass-2.3/serializer-snapshot b/flink-core/src/test/resources/pojo-serializer-with-non-registered-subclass-2.3/serializer-snapshot new file mode 100644 index 0000000000000000000000000000000000000000..5bf16ffc5ca83a253ec092068f7667017ebccf73 GIT binary patch literal 2789 zcmeHJOHRWu5S@}#ta^*Ca|0F>0zyJn)wC=Sn`!C>xBf)7QwbIvghOx)&cHc10Zs(1 z(^{xSC97^Cj~Da&US{450GvQisw~1B(?=4`7!?Z}&}fcJjLcI`3PYKWR3QxIBpS%M zOo*b$=rd7?z+68{17)7+-}8*~OyQJ_h&D-1QaYn48Y+eECdMAp#J-JVi472bzQ3O3 z7BPeXGt#oBMMKy>cq8b0xu%kHDIC=%s7Z7q%v!N-Epqe=pfkgzRMe0Q$)qZI6%Fy) zM*e`o9t>kqaED?&tZ|%sv+h)DyVpp!642@wKroCiA?)3bV`yIw;! z7)4;kCxX2ycax~ldNxT6=du>hO)$!v+qH&i%uS~KCp-IVl^frL}_)PfU^qC^6 Sp0;ji|BKD=E|_zN&-4WV_$=uF literal 0 HcmV?d00001 diff --git a/flink-core/src/test/resources/row-serializer-2.3/serializer-snapshot b/flink-core/src/test/resources/row-serializer-2.3/serializer-snapshot new file mode 100644 index 0000000000000000000000000000000000000000..8590479338ad8714648657fdaa2747aefb782b2e GIT binary patch literal 466 zcmcJJF%H5o3;0{(S@D+)f@iuCrhCsr5*slLK8a)8>CJEuvhv`tD#&>1W2XrK=CF9ydDayy53jsb oAAtSOQlrkPAGMAY8BGe}+fnQLP~^6MnAci(ODwF@{X3cY4U;IO&;S4c literal 0 HcmV?d00001 diff --git a/flink-core/src/test/resources/row-serializer-2.3/test-data b/flink-core/src/test/resources/row-serializer-2.3/test-data new file mode 100644 index 0000000000000000000000000000000000000000..a734bd41431c9213248e0f2388708cd7ef901f9f GIT binary patch literal 20 WcmY#kfB-FS-%5qzlA_GKbUgqWnFIv@ literal 0 HcmV?d00001 diff --git a/flink-core/src/test/resources/set-serializer-2.3/serializer-snapshot b/flink-core/src/test/resources/set-serializer-2.3/serializer-snapshot new file mode 100644 index 0000000000000000000000000000000000000000..7506c7227f0cf4401910655d9077579975dff93f GIT binary patch literal 184 zcmZQzU|?c!$S+FQODsrC&Pdfu%gM~k268g>lJj$O^YipdDhpCeOEPnc^^y{cQ}u#V zOM+92G81z$t5S=C^AZb+GxAFq7#Nrtc%QQXX+{Q-@V{Uh#10|FD2{1{`Uc(16SLSDlL(5O;YwZ1Q*R& q3;I?0a7hhkYK&w?7lx?jlSvkrlgG~jn^2OQZTP*RP;F5i0Qv_w$1YF+ literal 0 HcmV?d00001 diff --git a/flink-core/src/test/resources/short-primitive-array-serializer-2.3/test-data b/flink-core/src/test/resources/short-primitive-array-serializer-2.3/test-data new file mode 100644 index 0000000000000000000000000000000000000000..cc4337be169c1c6270a45c4a41ad31eeca4c8863 GIT binary patch literal 24 ccmV~$fdK#z2mr9D2>&14hL0trvK{Su0|EyCH~;_u literal 0 HcmV?d00001 diff --git a/flink-core/src/test/resources/short-serializer-2.3/serializer-snapshot b/flink-core/src/test/resources/short-serializer-2.3/serializer-snapshot new file mode 100644 index 0000000000000000000000000000000000000000..0960c9b6c66f35542ebe7331e589f1c3159b6c27 GIT binary patch literal 92 zcmZ97 bh3LSI24gDbk=TV)9`@z;)TobQ0RZz0xKki; literal 0 HcmV?d00001 diff --git a/flink-core/src/test/resources/short-serializer-2.3/test-data b/flink-core/src/test/resources/short-serializer-2.3/test-data new file mode 100644 index 0000000000000000000000000000000000000000..aa9c34108ba5e9c20fb3cb1c7b51feedf9d46cdb GIT binary patch literal 2 JcmZRm1^@tk0DJ%d literal 0 HcmV?d00001 diff --git a/flink-core/src/test/resources/short-value-serializer-2.3/serializer-snapshot b/flink-core/src/test/resources/short-value-serializer-2.3/serializer-snapshot new file mode 100644 index 0000000000000000000000000000000000000000..c7808f5390fb7a9b60b9f06cc45cba0af2359eb2 GIT binary patch literal 102 zcmZw5F%Ezr3;@7JzvA4_kT|(iQl+s_0%g$G>jNC`0APa6+KE&tCdNahTpt9ZbpQYW literal 0 HcmV?d00001 diff --git a/flink-core/src/test/resources/short-value-serializer-2.3/test-data b/flink-core/src/test/resources/short-value-serializer-2.3/test-data new file mode 100644 index 0000000000000000000000000000000000000000..aa9c34108ba5e9c20fb3cb1c7b51feedf9d46cdb GIT binary patch literal 2 JcmZRm1^@tk0DJ%d literal 0 HcmV?d00001 diff --git a/flink-core/src/test/resources/sql-date-serializer-2.3/serializer-snapshot b/flink-core/src/test/resources/sql-date-serializer-2.3/serializer-snapshot new file mode 100644 index 0000000000000000000000000000000000000000..1042bba8cbe317f9d9dfc72c71533c2dc3de8097 GIT binary patch literal 96 zcmZX|F%Ezr3;@7JzvA3i_yZF6N~$y#icklAz3z^805HH}ZAYpU6XT{*jt_#-a<+ng fSH4`d<4T<|oH~0bqOqIE*2& literal 0 HcmV?d00001 diff --git a/flink-core/src/test/resources/sql-date-serializer-2.3/test-data b/flink-core/src/test/resources/sql-date-serializer-2.3/test-data new file mode 100644 index 0000000000000000000000000000000000000000..1faf9a01d95ca70dbb5b4bce1405a4f06140ca40 GIT binary patch literal 8 PcmZQzU|@(d+Vued1bPBH literal 0 HcmV?d00001 diff --git a/flink-core/src/test/resources/sql-time-serializer-2.3/serializer-snapshot b/flink-core/src/test/resources/sql-time-serializer-2.3/serializer-snapshot new file mode 100644 index 0000000000000000000000000000000000000000..039309bb32c1168a0bc8052f8baa9d2fb22be21a GIT binary patch literal 96 zcmZX|F%Ezr3;@7JzvA4_VB9OI(pV@$9rX3OJKh1n0E@L9sZvagn@Tx82u91<3i@67 da?y?}b;fY&ESUp0A(e;Q^qWwq_GAtK;|o1LA=3Z= literal 0 HcmV?d00001 diff --git a/flink-core/src/test/resources/sql-time-serializer-2.3/test-data b/flink-core/src/test/resources/sql-time-serializer-2.3/test-data new file mode 100644 index 0000000000000000000000000000000000000000..1faf9a01d95ca70dbb5b4bce1405a4f06140ca40 GIT binary patch literal 8 PcmZQzU|@(d+Vued1bPBH literal 0 HcmV?d00001 diff --git a/flink-core/src/test/resources/sql-timestamp-serializer-2.3/serializer-snapshot b/flink-core/src/test/resources/sql-timestamp-serializer-2.3/serializer-snapshot new file mode 100644 index 0000000000000000000000000000000000000000..295fa6ea211fbce2998c9a756af0cb596582b0bb GIT binary patch literal 106 zcmZw5!3}^Q3;@7JSMl9tZ~!Z*(g+l3edzQ$fX_Ps7+}%9BQ=VNam!MV4}wuk(TaXI hzFe~5O2!z@JWFA7DlKpq%JOiZ{yS7^mec`Yd;!AoCMN&@ literal 0 HcmV?d00001 diff --git a/flink-core/src/test/resources/sql-timestamp-serializer-2.3/test-data b/flink-core/src/test/resources/sql-timestamp-serializer-2.3/test-data new file mode 100644 index 0000000000000000000000000000000000000000..929596bbc66daca2af09e3b59acf2b4d8428153e GIT binary patch literal 12 TcmZQzU|@(d+V#QGqJRMa57Gl1 literal 0 HcmV?d00001 diff --git a/flink-core/src/test/resources/string-array-serializer-2.3/serializer-snapshot b/flink-core/src/test/resources/string-array-serializer-2.3/serializer-snapshot new file mode 100644 index 0000000000000000000000000000000000000000..acc4e9db44b5b3cc435fa465a741e1943747a22d GIT binary patch literal 110 zcmZw5u@QhE3_#JGu40`XoPh}XZ-0y^5Y61hchfig9z>% literal 0 HcmV?d00001 diff --git a/flink-core/src/test/resources/string-serializer-2.3/test-data b/flink-core/src/test/resources/string-serializer-2.3/test-data new file mode 100644 index 00000000000000..67ad74d387f530 --- /dev/null +++ b/flink-core/src/test/resources/string-serializer-2.3/test-data @@ -0,0 +1 @@ +%123456789012345678901234567890123456 \ No newline at end of file diff --git a/flink-core/src/test/resources/string-value-serializer-2.3/serializer-snapshot b/flink-core/src/test/resources/string-value-serializer-2.3/serializer-snapshot new file mode 100644 index 0000000000000000000000000000000000000000..c7055ea38038f256a184fec1b5c931f3e996a3da GIT binary patch literal 104 zcmZw5%ME}q2mnx`t9WLaCLT?&!Ahji^mEYZbpVg=0l);C*Mw9ko{WczT^|Ia=j?|4 hEvJ%S@^-3xWQcFuRbBgtfO7luGb5r#~ zN(*vQgHww#6LT`FQj3D~5(|nm@=F*P7?>G&pR)jICI&S;27lp)er|4l9+ESX5{pyyf=h}r^U@KHP(c?!aTV=M_9MZ~o_Qrm4o2Z2yA}XpI*d&K literal 0 HcmV?d00001 diff --git a/flink-core/src/test/resources/tuple-serializer-2.3/test-data b/flink-core/src/test/resources/tuple-serializer-2.3/test-data new file mode 100644 index 0000000000000000000000000000000000000000..808ccbcfa073329f4af2215a73c02d32d34cae03 GIT binary patch literal 22 dcmdl2#uT6_<&6%U156 yFrD#$#Jbe0NHznOY^P zjBTttf++*WlPMF`R@m4JB_r1c&Vqr>I>Q|h+JG(4F4~5VNt9Ca#Ux^Usvu^gGn>cV zf=lFYvrZ3by3jNdda0wW2fX&4fcZ&q9y73$)E~pf4lCgESBVfj>tf%%663kf{Id?D g=zjUuSO`Eqa>f{|sl%aM|LH8b_@AN0=374WciXLf=>Px# literal 0 HcmV?d00001 diff --git a/flink-formats/flink-avro/src/test/resources/generic-avro-serializer-2.3/test-data b/flink-formats/flink-avro/src/test/resources/generic-avro-serializer-2.3/test-data new file mode 100644 index 0000000000000000000000000000000000000000..5a7679a9ad2df0e656fcc5ac49a463513e07cbfc GIT binary patch literal 51 tcmZQzV0h2Kz`)~_n4Mar5L{A}npy(nv-#xbrR3+Ku-N^=4He8HTmd`@3@88q literal 0 HcmV?d00001 diff --git a/flink-formats/flink-avro/src/test/resources/specific-avro-serializer-2.3/serializer-snapshot b/flink-formats/flink-avro/src/test/resources/specific-avro-serializer-2.3/serializer-snapshot new file mode 100644 index 0000000000000000000000000000000000000000..d67dffc69ad012a3cb443b84918eb266e7d6d3ce GIT binary patch literal 379 zcma)%%?g7+41^c^CVQ5pXAcFR!DH!RaifN=yON{@6)%1Au3&$lAU)1}lS!hK%G4=R zYwTd_4ou@QTul?Hx5CEWDH<6ExCweTWs(&TT8|S@73{!W6s6SRxL?si0I~wkl+F<_ zKeAb`y}Hl@btI>A9c;hqEwLG#&RX3+`_oi|;2rDYJii*ltxx{84uj|=e=`;WkPl88 WL;IbmQN}&ak{;U&OgQ}F%kl(xyMfyP literal 0 HcmV?d00001 diff --git a/flink-formats/flink-avro/src/test/resources/specific-avro-serializer-2.3/test-data b/flink-formats/flink-avro/src/test/resources/specific-avro-serializer-2.3/test-data new file mode 100644 index 0000000000000000000000000000000000000000..5a7679a9ad2df0e656fcc5ac49a463513e07cbfc GIT binary patch literal 51 tcmZQzV0h2Kz`)~_n4Mar5L{A}npy(nv-#xbrR3+Ku-N^=4He8HTmd`@3@88q literal 0 HcmV?d00001 diff --git a/flink-fs-tests/src/test/resources/monitoring-function-migration-test-1784576564638-flink2.3-snapshot b/flink-fs-tests/src/test/resources/monitoring-function-migration-test-1784576564638-flink2.3-snapshot new file mode 100644 index 0000000000000000000000000000000000000000..c8206636edef30bc1004d985c7d9ce9643806617 GIT binary patch literal 325 zcmaJ-!Ait15KUCP348JGVXq0Kbd^0;Hitm9CCPeNkdmfpH`q-|8xMN(NA!n0`ax!w z1=))a2IkGY_h1G9a1M@u7qNlhy0yJQJMV1pqjepcf(mA@fk)vt1aqyMc1e;H-I7M3 z)Z7tNx3xwjStN~Frb$gyl>fxK{5N$U3c*cLQl80zS3+izRx2hXXZLH#ipT1qSWz$& zWzOW^f*yRcrz~I7N>I+SoNXwN(=$-|vBPRmdTVgoTlW%)#oF)URXDs2<~7)U!nK+V j&b{k|8LjH=yBX)FR5&$ETOVTT;Z5-CI literal 0 HcmV?d00001 diff --git a/flink-fs-tests/src/test/resources/reader-migration-test-flink2.3-snapshot b/flink-fs-tests/src/test/resources/reader-migration-test-flink2.3-snapshot new file mode 100644 index 0000000000000000000000000000000000000000..f0be13a09a621a6de4ff51fa9c0da35adbdc998e GIT binary patch literal 2623 zcmeHI!EVz)5FI;hP*a2=khoPKQHcv#tD$KU<&+YG9GNDvogU~R+9aD~!LhCN8bxs7 z3-|GTP83DWrKeUXd+@GjJ@ekYeOd!R2IfQC!i5IeIP$rS zRZs=g_?%Aq-*n!trSpw<8tj*=<--ac926)mRttxva-~oy_DTf|9TlsrIyfqp0Cv7$ zN_Mrph9M2^x7wyt_gYTZ_3ED4ZCI}7SjQdDYMpeSw;Cqo-L`Fc%MEjump`rB9kc72 zj#am<7p8+z9U7q+5gO6{n318+gI7c(f#efLVo4<Wz{3lK`k}yXW3mc| zU8teykZD5JXTeC0o7j@1LfWu3L~au9*;vg;1v6%X8LFBwjEy#xV}0W5M;$xbjtFm$d> z$&(M(#|&Uj7SA1dO1Qm_yM&y?&J6W9m@ZgF8xviDiS$dF=T5CVITMiFVZ=dS(0r4O$+) literal 0 HcmV?d00001 diff --git a/flink-libraries/flink-cep/src/test/resources/cep-migration-after-branching-flink2.3-snapshot b/flink-libraries/flink-cep/src/test/resources/cep-migration-after-branching-flink2.3-snapshot new file mode 100644 index 0000000000000000000000000000000000000000..ce6aebd132cde0f0d3deb1c1f8f5f3c2a398c076 GIT binary patch literal 5856 zcmeHLPjA~c6sPR8J*))^G#Id9haH4rYauOvY$Q1ptyXJA*2KtSH(h!$D2Z}3>yJUn z3B1!j$G*VM+hHGJUuD-}=yllMqwI*ZWH&)!xEn&irbs^i-Xq`RBi|#0)X7ZI?oK+i zyngVrMs&yB*!1bvhOxcpxJIMVpa$LYe1mN_cQ*DK8#~RWPsoQ9rrgG9HPTLa-=st8 zo-xx8gLnXqz;u%+N@6n`57{US!qjwV%FO*Z>o6YBF!+ISU1@bemIf=`c?VyXv;JD^U;y5I+{EWAdZm(X!rzNhC@ z@+ecC4){1RU%+1_gBtm`1csst(uit-qJQNyQK!+aklSM#C@aZA~7$@WlNfLU_ z6SL1^aEGq>Jg-|cqq@a89V6bOYtsKlUP}0dD_*p1#g?UdYZOIe3&c8R{UFU4IGkr8 zP0_lmT*ccoQVFf9X##(#1K=cmujYKOizEH*h>ci!l?!NP2mGi~+12;%K@#^1eduaa zaV6GuP{B$HR0XE&k!}w4&7p?#y_!S)xq4~G84p-$Tm;#f5l(I>gL!@SUf$&8*G%PA z`(Jq#F8Af|P04>%ZdOOUr}IY~Zd}=ooos=%)=8Bk%dXGE2IJCYrr1$1T`=?(w^}3r zGxJz(gtZ#?^O5R)M9g5g3B)8|V_4p+$YD7Ti)EwZKQnQO}3#U=x8ER6p zVmX(`$TODReLe<@_Xv4YvHOF}URRj{_kVoyepR)90* zA)GyJLoTu?+AN5)j46mhKbcxrIwwn4`bxW%E1-~L-s%yh_Rmbo*Oiy9+VRhKj(v_l`xqfKg^nd@wqGFy`TS=I zr56oS!g{74FBzF9a^5TyWn5fbl1qg~rc}%tg}j+VXyF?SnPJ0HsN&M5f;(8>CyLp& zoECgoitgIB>nMJ&L%P1z_LK(ph_dGRRYEP?wmuM=7QU(u?s)sI513QvDw=gnT=lU} zD%d7W5F`oBt!sN)xn8ZQHLYIT+tSdLU3FtegT@q^)d(69& zsNy7xBtna3>cjuF0Z59JC$qm7_?CX%C0*j3<^Y=52H#3FcJjHq;X2LG9%=DYpc3^g zsNf|bssIybq{~fxxv61)Pi9l!7Y}X6rxx+#L(AWn+x-(tCPtH7$df#Nn@K!s|CL+e zcyA7`V*Hi3SXF+X4lZ$Q;o>y5n+0#3LPOBX6~7|+FG9M1%kvF4*X3ngit$C8gb)YXaSSx&Ql2(cx# zF>T2@Znqm)Z?W@a@a_UOPJEz3AO=|zofVwLNQQ|r_`9(kTepQAr*P77|+X0 zoNWeS*!e^2d&0uC+PkRHO17uW}+E9_5_P~v%3?KW79d?eK*FfBb| zeG&TcJjib@!>u@_U) zT-$aX$)9*I_DzdQDyASc9KQp^#FqIPh>&>eIM|~@*JqdobRTUv2JZOShZeSh3u0Fe zZ5}G8O1S^Ff3|(rykpl^l zMhP7r{9NMzIkf%$cOaZA_F*ns9nN9W8rv$HSgaj^XZI#V_U59~Ats=!W5WO|tb7g~q|o`Ye8Oiq#watJj>yE74%sbJ zKps6xfpJv>*F|XU*Y__ky}&{X#&L$+Sp>ufJYF<_eMjh7OcQ)YTxkFfqeD$P2%mNA zV?ibaPdMK0HOGHLCo%kpiWeHjDcQd16o;tw=<2Mz3(<%XAs##NWLbhM7|Cx^O6WP0h4B= zyP&=cY8KzC3F@cGP22H_2~<2c{h?@0cPJ6`0o=-+JbjwU+-m=oQ{i$?4sTQZmAP1* z;5;23;`qX)X{=Xd-daFeMCM;#hQgdnhzsQ%kX*T1VNF|^=HO`(du=&de`W64|WZ7X&J?<^s2hnX9&%Htgl$a(?!iixf7W*N zUFe$Totq^KOg}t3c$n)d=v20?Ja5~!N{VO4N^sTf&>CRVBVE9OGb=BlCnfG|TVCTM zTtJk}rUN<-wP)~GDL_UyOU#(6+;tIJ`uyR|??Y~(8RHm2-kQaT4fu7|0O&{PPC*lV zL_@7l0)RtHdy>>G9AibN6ptCdyXPGL9=#~=&!KqMw&hzEDXo$3k9AOMkM!LrCIC2( zJRC9au7ZlMS)`J+Xr`3?#0DU#&|b{>Ugk&o`G|~2be0QfVF!G-(%9Aa?sgdTb9*S_ zrvN4TdANd?u&i7&t^>5;(9mLcnk$UXLhpLy}P%5$ea4*SNmyCRx_n-@J)_f@%e&A1r%2`MAbEkYY8~*P70Qrb_DAR2%lXsp2(^Ri}xY OcC&7qcHM-by!;1fx4;Ad literal 0 HcmV?d00001 diff --git a/flink-libraries/flink-cep/src/test/resources/dewey-number-serializer-2.3/serializer-snapshot b/flink-libraries/flink-cep/src/test/resources/dewey-number-serializer-2.3/serializer-snapshot new file mode 100644 index 0000000000000000000000000000000000000000..338c62886d758f677c133690aced11dc4d531fdd GIT binary patch literal 98 zcmZQzU|?d1$S+FQODsrC&Pdfu%gM~k)=N$;(926p)N@HKPp$MT%}q)zQbA$|rxs-< W=44jk5)IBvEGW*%FJWL{Us{QKE;#_0U@vweRq~Nha?%SuS5zTv fk&MG}i?HGPu=Xu1zm6?YPA}UyPN}w7IsnWch{z&n literal 0 HcmV?d00001 diff --git a/flink-libraries/flink-cep/src/test/resources/event-id-serializer-2.3/test-data b/flink-libraries/flink-cep/src/test/resources/event-id-serializer-2.3/test-data new file mode 100644 index 0000000000000000000000000000000000000000..146a1fc0a8be7d25ab48234b25c43572a1fe239b GIT binary patch literal 12 OcmZQzV9;WK04)FkumDv6 literal 0 HcmV?d00001 diff --git a/flink-libraries/flink-cep/src/test/resources/lockable-type-serializer-2.3/serializer-snapshot b/flink-libraries/flink-cep/src/test/resources/lockable-type-serializer-2.3/serializer-snapshot new file mode 100644 index 0000000000000000000000000000000000000000..1a984b61ebfc8208777218a4be04c86daf36dea7 GIT binary patch literal 188 zcmZXNI}XAy5CxY{OUDtY_Y{?t+`38XsI%qrjmwF{Pa6~zdZq3K0ZVM literal 0 HcmV?d00001 diff --git a/flink-libraries/flink-cep/src/test/resources/lockable-type-serializer-2.3/test-data b/flink-libraries/flink-cep/src/test/resources/lockable-type-serializer-2.3/test-data new file mode 100644 index 0000000000000000000000000000000000000000..893957a6c1f98caed60ece23f0319c24966b3c19 GIT binary patch literal 10 RcmZQzVBlg)%gM~k1^@=60wn+d literal 0 HcmV?d00001 diff --git a/flink-libraries/flink-cep/src/test/resources/nfa-state-serializer-2.3/serializer-snapshot b/flink-libraries/flink-cep/src/test/resources/nfa-state-serializer-2.3/serializer-snapshot new file mode 100644 index 0000000000000000000000000000000000000000..7f01027f443214ddb9f968bfc13ab6ff972dd898 GIT binary patch literal 478 zcmZQzU|?b}&M!*WODsrC&Pdfu%gM~k)=N$;(926p)bn$53@%A5Nexad%1q43tV%5k z&PyyP&d4ueU|?Wo;C;>lq?s5QM8f|98H`}T2%M(5q?V^v`jzG;r533mu@Q!27e%o$ z45#VE8Hq)yDM_ViX{kkee)%b>o+&C23dsU=0Ti<#-a+;aBSR!{_PLg&=9K^~gwjYh LVu+wvNn7Iq%!;6S literal 0 HcmV?d00001 diff --git a/flink-libraries/flink-cep/src/test/resources/nfa-state-serializer-2.3/test-data b/flink-libraries/flink-cep/src/test/resources/nfa-state-serializer-2.3/test-data new file mode 100644 index 0000000000000000000000000000000000000000..1b1cb4d44c57c2d7a5122870fa6ac3e62ff7e94e GIT binary patch literal 8 KcmZQzfB*mh2mk>9 literal 0 HcmV?d00001 diff --git a/flink-libraries/flink-cep/src/test/resources/node-id-serializer-2.3/serializer-snapshot b/flink-libraries/flink-cep/src/test/resources/node-id-serializer-2.3/serializer-snapshot new file mode 100644 index 0000000000000000000000000000000000000000..a63858d70052ed4bac8aa2681d1137e88bb6d590 GIT binary patch literal 211 zcmZQzU|?bh%P&gTODsrC&Pdfu%gM~k)=N$;(926p)GN+NEJ{sDDosmEEz$uCORODsrC&Pdfu%gM~k)=N$;(926p)GN+NEJ{sDDosmEEz%1HbDY2& z*Oc^B6?B2%)S}G9oXo1!B0N&Td5HzZ8Tlm)3=GT+yw6#HG$VsZ_+Ky$a!nX`qYDtQkC7pgIQv}7Qu9iH7D8zx8!<#stc<{Eyi00%YNcOkZW1uOkl08j JV--a<9RQesmu~<7 literal 0 HcmV?d00001 diff --git a/flink-libraries/flink-cep/src/test/resources/shared-buffer-edge-serializer-2.3/test-data b/flink-libraries/flink-cep/src/test/resources/shared-buffer-edge-serializer-2.3/test-data new file mode 100644 index 0000000000000000000000000000000000000000..8746c6f117c2728fe3235f6a7d3d29cb92f31cdd GIT binary patch literal 26 ZcmZQ%U|`S!Vi3?`El5mH1u_^x8~_)J0wVwb literal 0 HcmV?d00001 diff --git a/flink-runtime/src/test/resources/arraylist-serializer-2.3/serializer-snapshot b/flink-runtime/src/test/resources/arraylist-serializer-2.3/serializer-snapshot new file mode 100644 index 0000000000000000000000000000000000000000..2bc2cfe5bfbd11bb450e432e62162caa25e6f209 GIT binary patch literal 178 zcmZXNI}QRd3N+Xk!tfRt!l7-tn*vDD18 liQO!?i%s!Lc&}imaUksD5%E8(F{bO&G$`UI8v?t$uD6jwk literal 0 HcmV?d00001 diff --git a/flink-runtime/src/test/resources/global-window-serializer-2.3/test-data b/flink-runtime/src/test/resources/global-window-serializer-2.3/test-data new file mode 100644 index 0000000000000000000000000000000000000000..f76dd238ade08917e6712764a16a22005a50573d GIT binary patch literal 1 IcmZPo000310RR91 literal 0 HcmV?d00001 diff --git a/flink-runtime/src/test/resources/java-serializer-2.3/serializer-snapshot b/flink-runtime/src/test/resources/java-serializer-2.3/serializer-snapshot new file mode 100644 index 0000000000000000000000000000000000000000..db1abe95eda9eabdb4b4284d1a71b728abd5f672 GIT binary patch literal 78 zcmZQzU|?c!$uCORODsrC&Pdfu%gM~k)+;K_E6L1F)hjMZEJ@Y#N-RqZPA$qz%*m`u VEmA?{2InOf6ldg@FfcGM0{{R>8ovMl literal 0 HcmV?d00001 diff --git a/flink-runtime/src/test/resources/java-serializer-2.3/test-data b/flink-runtime/src/test/resources/java-serializer-2.3/test-data new file mode 100644 index 0000000000000000000000000000000000000000..22a3c768e29ead737da8127f41bf7ba5b75a2d01 GIT binary patch literal 81 zcmZ4UmVvdnh(Rzbu`E$9CowNw&oi$iH9fUR=+S~D-y7R4m>3v68Cc5_b4pVyiWmeC d>ikM`lTwS?)=ZViAe0&xHU literal 0 HcmV?d00001 diff --git a/flink-runtime/src/test/resources/time-window-serializer-2.3/serializer-snapshot b/flink-runtime/src/test/resources/time-window-serializer-2.3/serializer-snapshot new file mode 100644 index 0000000000000000000000000000000000000000..7d2b4b69a6ad7b9b399f6afe9183f1e49bcbeb79 GIT binary patch literal 109 zcmYMoO$vY@5J2IfuHt$wW6*lANr!Y46@pIR4}qJ<;{$*RT&^CekPD1^6g{x@%9KQ3 h7Cc3_{KWs)aFN98r^a#>igIx^LkC)=(n9V4FyA{CCnx{_ literal 0 HcmV?d00001 diff --git a/flink-runtime/src/test/resources/time-window-serializer-2.3/test-data b/flink-runtime/src/test/resources/time-window-serializer-2.3/test-data new file mode 100644 index 0000000000000000000000000000000000000000..bd72696cdd363b695d0081859bd0eefe08133484 GIT binary patch literal 16 RcmZQz009F_FvZAe1ONm$0Hy!{ literal 0 HcmV?d00001 diff --git a/flink-runtime/src/test/resources/timer-serializer-2.3/serializer-snapshot b/flink-runtime/src/test/resources/timer-serializer-2.3/serializer-snapshot new file mode 100644 index 0000000000000000000000000000000000000000..67e3a083d81a2d396ed3ca5608c86017e357ab58 GIT binary patch literal 268 zcmb8oF%H5o3N^rl8bk5e&o?> kH3W_5x5R@>pYcSQv34sDKlt{0n0-6^A@8G4*x5BTU#T%$sQ>@~ literal 0 HcmV?d00001 diff --git a/flink-runtime/src/test/resources/timer-serializer-2.3/test-data b/flink-runtime/src/test/resources/timer-serializer-2.3/test-data new file mode 100644 index 0000000000000000000000000000000000000000..5e9827d82b43c9fa20446b764f5f8d57fae50a97 GIT binary patch literal 16 UcmZo*009F_mh99@1_q{O02E^a-v9sr literal 0 HcmV?d00001 diff --git a/flink-runtime/src/test/resources/ttl-aware-serializer-string-value-2.3/serializer-snapshot b/flink-runtime/src/test/resources/ttl-aware-serializer-string-value-2.3/serializer-snapshot new file mode 100644 index 0000000000000000000000000000000000000000..d3e266190e85ef42edabca264daeeaf6a485d4a9 GIT binary patch literal 162 zcmZY1!41MN3#%$)E|h= zQ>$Pkry$cXrCpyKQY4g3-x9^SkF_Nc9f+pCgS%pGwKhk-x@@U7aN{8;8S2YEoqyr0 GK79bx(K%QE literal 0 HcmV?d00001 diff --git a/flink-runtime/src/test/resources/ttl-aware-serializer-string-value-2.3/test-data b/flink-runtime/src/test/resources/ttl-aware-serializer-string-value-2.3/test-data new file mode 100644 index 00000000000000..aaf5589b658a29 --- /dev/null +++ b/flink-runtime/src/test/resources/ttl-aware-serializer-string-value-2.3/test-data @@ -0,0 +1 @@ + hello Gordon \ No newline at end of file diff --git a/flink-runtime/src/test/resources/ttl-aware-serializer-ttl-value-2.3/serializer-snapshot b/flink-runtime/src/test/resources/ttl-aware-serializer-ttl-value-2.3/serializer-snapshot new file mode 100644 index 0000000000000000000000000000000000000000..a1dde1d34fcd12885a57e7ddc37016d1431545d1 GIT binary patch literal 346 zcmb8pF%E)25CzZyZ0$S(_1wV1##mUGEQ$3 zQY14lUaa^lrqQc7#;l}_suo+d%>sKe8q!oR%t^?~jZ@<(<{>BmtYLfK%vr&%d(63d q_0!J-ML`ps3m$cfJgV4?XUdGn;QP0_F0puO|FAZir0{+ZpXMiYkzaQJ literal 0 HcmV?d00001 diff --git a/flink-runtime/src/test/resources/ttl-serializer-2.3/test-data b/flink-runtime/src/test/resources/ttl-serializer-2.3/test-data new file mode 100644 index 0000000000000000000000000000000000000000..5596986cd7a085486ae912b25107fb88a52bf6fc GIT binary patch literal 21 YcmZQz00Um$jMSW*d_-rzt3_O wusA$&PKJ5+v0rH@y5VMz+l#_-rzt3_O wusA$&PKJ5+v0rH@y5VMz+l#rJBd4QN$AL0FS5J37NOzn bLb2(-a*^>B31Z4wAF<`fL*+hFa{%)TNdh7Z literal 0 HcmV?d00001 diff --git a/flink-runtime/src/test/resources/void-namespace-serializer-2.3/test-data b/flink-runtime/src/test/resources/void-namespace-serializer-2.3/test-data new file mode 100644 index 0000000000000000000000000000000000000000..f76dd238ade08917e6712764a16a22005a50573d GIT binary patch literal 1 IcmZPo000310RR91 literal 0 HcmV?d00001 diff --git a/flink-streaming-java/src/test/resources/win-op-migration-test-apply-event-time-flink2.3-snapshot b/flink-streaming-java/src/test/resources/win-op-migration-test-apply-event-time-flink2.3-snapshot new file mode 100644 index 0000000000000000000000000000000000000000..bdb12e5f99504073122f3735a0d47d61a389d575 GIT binary patch literal 1799 zcmeHH&u^PB6gH&oC7aemrCxVnyTO2jF5HSb4$-ozDr{AEL57%?HNnVsT6L!$`yVa; z(f*1_^N&zM%Q{WkdYTdP^Lu_DAMbrO0H6o%4ei;=p{aTERs)8cr*4*Ixj7p6d**O7 zOikan2WGyPL*I7>cJ4R;Y~AvdEs>^!7?U##Rxmq9Rz54r3%)3<4A1AdwAgip7Oa?2 zD}@wU5hF!;79mo=S@9JSz;?tuLY)r;c%wsy({uE3;hDj72kAunhb9gMh!5`3^6qGe2Tb!PM-;e}$PJYN) zkU8jt{sJ%I+W(V9$%;9$;zcz>kAmyq^&@~HU4giuA@MKUaM;PFyTRjft#C$b)hgr8 zVelc0j)H>+eaaqujWUAZoa;skODRIEltrzWm-R&I#AxbjG~UM9qVOsa{U8ZtkfApf z!5N~I<0dQ3$*53VeQ>zyI+eBm8^*Xo1Tst%Q}PQsN?7_6_4LWA{IXSLbjeTg{{r*- z@vq643zT0$V(9$s-3SZxzinQiYkpC$kN)yTE_bmAx+>IPs(H6kL6x}*st|`$n^p&* zNvU!4+R*NdI#td6WgY0%Mzi(K)0HFsLFNcU=Clo9KzlfK5%kQ|N1i!MN5~vG)7-Re O+ktuRd2hY6M*ayQ?+9=J literal 0 HcmV?d00001 diff --git a/flink-streaming-java/src/test/resources/win-op-migration-test-apply-processing-time-flink2.3-snapshot b/flink-streaming-java/src/test/resources/win-op-migration-test-apply-processing-time-flink2.3-snapshot new file mode 100644 index 0000000000000000000000000000000000000000..afe1e9a6a438f4faacc2a12cd0a20b779c376b10 GIT binary patch literal 1691 zcmeHHO;6k~5OtQ1OIwu#5|ObnQs8rk8ZOF2vssxDxV#2tE;&uc1>7`XrB7g|4Zj{SF8=vBn_+yr& zQ5t9I$w7=(2mK_Ku@2h!5)F>xEQt^M(V+h|KGfdmA7~CrE*g?8POpBfY66?bKlQH2 z>@9`L;M;2re-0YH^rgSe<6@sw@YU&>~AgZt!8;mp>lRmRQz z=yRMLM0@x8RNT9b3kG;1b)$t#^2}+0@l+yp6L(;a#Ts!7?tefbELW z0yvkr*-UdfsuVZ>air>&Dr@&IjA;c73(9Jy><@HmVRfFVr_Wa9x2-C}h5U>E7g)~6 zN0YG>s2o9Z?%gO0ZPB%JxN^0PUVN|jt?EV_b$yI3NAoLx0k-}5NB{r; literal 0 HcmV?d00001 diff --git a/flink-streaming-java/src/test/resources/win-op-migration-test-kryo-serialized-key-flink2.3-snapshot b/flink-streaming-java/src/test/resources/win-op-migration-test-kryo-serialized-key-flink2.3-snapshot new file mode 100644 index 0000000000000000000000000000000000000000..ef67e59f01ef22ac305cf4be40062b3142bbac62 GIT binary patch literal 4021 zcmeHKPj3=I6rU}PF+pt)O?vGCO^n&mw#&90Ok81uq?Hh$5=;ykmVs`8oz2XE!Bann z-=ZFrPvBSa?%l+h{nJ^bR-2IavXe0X-kaY%X6C)$TL3@?{86+A(S#PZk3MK1XB3Q{ zY4-E_u4y>B;q>x)cmJTLJNu4_@&-0>cMpIKQ!KeBm#u*^p#z9~$xk0;z6F-RvKcgGkG>5RZ5Q8h4i(a8OTX~RQ4J0&~-d%Xn4IK^n}dV@<0;$w<9 zp$vX>y&e(O09J`tBWI*3HUwb(=l9Pq{Z-+~(`ji%MKJI!{@2KVcB>7-bxmW6x` zY`(LOPwY;^u2-z%%6q#W%ocC*ADRnD4t64RcXrFKHHy z>GfIkt@)~;O_7<)vL=3+bJ+vgZ!Jw5;@L$ox~#JE^Ps;?Lh+YSlAVX`wjYY))sZ+9 z3eZq3B5AcK!cvgZkVMJOmo#FckF;Wqi%?NoodLQ0-r;VqVD$Avqlzif!#)^{#}|pRc2KbFn(#0ghW?hUd&>8EeEj~vH6@)Q`{x65b-QE zCnN>a7d)nyKJb{#;xE9P_XR#BNqWVE^jwqA%iEYv*{u;VDu9YqMU+%Qd+)t-?*(*olrlM8?ptIFQ|y;Uk zdJruY9LQW2Sa(2HIyK6;)C^==&vZeXTd@miAuK_79jbcpFcn0=+k~?S(p35l^XAZ6 z)f(##m+i5${D*%)%o5;4FrFdhzksu@{o~a1(X#xilx4V)+wFgX+E_NIJh&89 zUyxuTLyBH^={SA*iHpezdB;={f3YMIKo6U26j+@*~#9|@1tFH=J>U^%; z8B^efTIT#T1evpWehsp7HxP1Gs57Cl@+N*SE_0rWOD7Rr1J}yjh}I%oALt3)i^C|0 zXdIm!Qu1U<_l`#6$v);c$kwOe;E2W{osNTp@n<@<(a~C{U)Tk^1ynA%&KKZD%VG{S z)CRKW-yhk6uYXg}950LX$oBCM3;W;pYqA#2dM3tP*Kg}Ic8!;APlAs$JPbznnwi|Y zO=$^ifdtzLD5*2M(o=4PZ9TSxc5dBWN9$k%!mHTuA!DVPhBt*22`GhiKl literal 0 HcmV?d00001 diff --git a/flink-streaming-java/src/test/resources/win-op-migration-test-session-with-stateful-trigger-flink2.3-snapshot b/flink-streaming-java/src/test/resources/win-op-migration-test-session-with-stateful-trigger-flink2.3-snapshot new file mode 100644 index 0000000000000000000000000000000000000000..17cdda08dedab164b8e0595c0b095a183862c71c GIT binary patch literal 2707 zcmeHJPjAyO6nC=~!3yexdYQz5L*SO6c5T|;h`I<>lxk|SPU8}}j@xBx;>b>i#%bRK zJ_hG~89oIPwv*7N{}2*XNMNb9-?QI)zdrx`900%`SZamGsiKgKkDe8PdhAt=7Q$FV zu!*(0hw9p>Y1FycFpO#qSI6Tv00$Lr@<5m=z#(*^!w8~FtdFODc+CZ0MVv zp2hx@=_AOnZpYLQCpM-&ocbRzRhJcZ2qSh$V(xhl6hRS@Sttb23gGaqbzz;jwqrV$ z>s*{#;NieJIqP)$Z}_?b4u@v%%yMmO&^3GA_trpaPk#YmkL2Lx#T>Xw-+X7;r)Fm* z9$JaVVv1qF|G7-f2S4-(?g{!P?(C3K%!WC73y3*6Dh!TVu<1BPj7Rpso=d#C) z*SfVe|Md#Ud<`ZMrZ6TnslD_k6=yePZBepGA)6>bMU6(aiQz~a8^;Z;-b7GqL9eZOEukM7 KUagHX7~cUqx+w7g literal 0 HcmV?d00001 diff --git a/flink-streaming-java/src/test/resources/win-op-migration-test-session-with-stateful-trigger-mint-flink2.3-snapshot b/flink-streaming-java/src/test/resources/win-op-migration-test-session-with-stateful-trigger-mint-flink2.3-snapshot new file mode 100644 index 0000000000000000000000000000000000000000..bdbfae3a80a5212ae48350696759f81f915ea127 GIT binary patch literal 2201 zcmeHI&u`N(6n3);IDj^xoj7p_+#HgwYnvO<$f2TC(~@->m&i_?&d}JA?QUZK@cs%A zcG8h%Z6_f?PxHY)p5x~)?|ttx0ALS1Xswq^L#rB}|7rmnlU~ooeHZ%JcVQPD`w$KK zJ(y+K>*2JEv;F{p7jN{DXXcm%VlHM5Do}bwoNP|ncfFua%JZBvNBt^y;o%0yw<*S&jzG$wt@T z&^225f3aYS=ER8?#hg6q+yd_(acGWLPCB3l@jufr-iT&%f`@D+aCT$W2;<>6_!35^ z!O2>l(zV;95(MR%HzlzuMwnGKlTNI|dQtMkuH$Og*4o&B@H!`Arv1Pr$0RYVGwq39 zhGb28?JO-jyJ$NFCu_(xDNRujd2e>e&Kq6&;6vV(}`AhHV0YC-Y zm>Q&>Ol$GvT{xpq?QNbM%B8o1IM1jJc~Znyd1BT!Ir8pmlMd8#8wCL7u)Hnutzh#* zIqDeIz!JNc3s%Q_re;s_@I{UpCU#v6MNOSUP)l;5d8e#Dhe_N15A!Zap`CoC^8re- BZchLJ literal 0 HcmV?d00001 diff --git a/flink-table/flink-table-api-scala/src/test/resources/scala-case-class-serializer-2.3/test-data b/flink-table/flink-table-api-scala/src/test/resources/scala-case-class-serializer-2.3/test-data new file mode 100644 index 0000000000000000000000000000000000000000..ddb6ef533cd3ed3e99a5d067f9ecad88afe869f4 GIT binary patch literal 10 RcmZQe%gM~kW?*381^^Dx0ww?e literal 0 HcmV?d00001 diff --git a/flink-table/flink-table-api-scala/src/test/resources/scala-either-serializer-2.3/serializer-snapshot b/flink-table/flink-table-api-scala/src/test/resources/scala-either-serializer-2.3/serializer-snapshot new file mode 100644 index 0000000000000000000000000000000000000000..ba47931818671b05adf732598ef537c842592a41 GIT binary patch literal 270 zcmb8oI}QRd3QHYHwsV7TF|9OaT|>6i8%g$U;Rm<0+m2U=G`u zd!$6xF`m7I3o3P<>m;bR#8(wx&{*=c6Lp*oXCW{5+5)BGq5{AIR*z-P8LUswcaHYq j#~xK1harXr@2D{DgMQ@ApYLX-UbCEW4{!iW3{((*BB4luh4KV&Ytv%>nc{|MhYgcPaJsn}neW2;&zB*QV|R D>r^W` literal 0 HcmV?d00001 diff --git a/flink-table/flink-table-api-scala/src/test/resources/scala-enum-serializer-2.3/test-data b/flink-table/flink-table-api-scala/src/test/resources/scala-enum-serializer-2.3/test-data new file mode 100644 index 0000000000000000000000000000000000000000..593f4708db84ac8fd0f5cc47c634f38c013fe9e4 GIT binary patch literal 4 LcmZQzU|;|M00aO5 literal 0 HcmV?d00001 diff --git a/flink-table/flink-table-api-scala/src/test/resources/scala-option-serializer-2.3/serializer-snapshot b/flink-table/flink-table-api-scala/src/test/resources/scala-option-serializer-2.3/serializer-snapshot new file mode 100644 index 0000000000000000000000000000000000000000..1a4c1ab5d743780166e8fc93158afd4041997ffc GIT binary patch literal 186 zcmZXNF%H5o3`I?0W#b6UJ_HwF2okd!nbyK}qQo8G!khw$z(NJX*OT7xJ^*xZNM%6E z6i3F3ie1sES8htsZ<%Kotr#LH9kWZaz(q*q&LtS-Iwl8zHEbW7#twGpXXEO#(_i~t XjcJ;aE#f^@#^6P4_{R6YV)^z0@K-&! literal 0 HcmV?d00001 diff --git a/flink-table/flink-table-api-scala/src/test/resources/scala-option-serializer-2.3/test-data b/flink-table/flink-table-api-scala/src/test/resources/scala-option-serializer-2.3/test-data new file mode 100644 index 0000000000000000000000000000000000000000..f76dd238ade08917e6712764a16a22005a50573d GIT binary patch literal 1 IcmZPo000310RR91 literal 0 HcmV?d00001 diff --git a/flink-table/flink-table-api-scala/src/test/resources/scala-try-serializer-2.3/serializer-snapshot b/flink-table/flink-table-api-scala/src/test/resources/scala-try-serializer-2.3/serializer-snapshot new file mode 100644 index 0000000000000000000000000000000000000000..148cf99ef2b207728e7a71640c6d494e935c7931 GIT binary patch literal 672 zcmb`Ey-ve05XY~fD-$rVXF*8!1_)JD>cB>V5aTr%$JDW-vr`lvg$LmgcolYbBC9nP5d)JqgYX z)vmN20QO-2Z5nI>hc_R=PC7sT0glMRR+Tja@{*ju%(F7Gho|2IJJS}UQfXj{X zsuH;3*5YM&dinsCz(Loi$wxn>4*FE}b`3)y~3NS3)Z11&g~2P0oc? TCUE;d=-sdQ!f)jclY0LXy8Pp| literal 0 HcmV?d00001 diff --git a/flink-table/flink-table-api-scala/src/test/resources/scala-try-serializer-2.3/test-data b/flink-table/flink-table-api-scala/src/test/resources/scala-try-serializer-2.3/test-data new file mode 100644 index 0000000000000000000000000000000000000000..a413c04a650534a799b2e40fdb2a0c0d6b2652db GIT binary patch literal 2572 zcmcImy>A>v6o0ImTOoIbA`)nB@7>+lyR*y8 zTj!jD2GJoQ(LoW>rJX)nT zI>*{-%fpCx_{YF!zr&!Cu=RgL7u-L({@szcJ}v;XBusC!UFP~sG~COvARb^wLtKA* zXl>;A_kK%&lO13i@x!gtFHbK${8bO4(v;yPDL_LBTilEf@BM;J_aaAhn!Mz z6iFShBd<^d6UjDX&s>QsT53h_z`HO^aHeg?ET(>l*?K5vGZWodW@!`I%56Sb+QP*r zmzQsyT{N;p0B~G;In$A^X9GL@^(T*>`{n%t44;P~oh)Fq4kP+J;bt6EQI=rb^O;hm zP#+q($pSQN2TL$kL%m>>SuyMB>~Nj?m_v;ONX@X;H51n2F3f0PXWl@mcqnWj%N<^i z2sEYpKjuA6P)3R)r-1?`Bdjer1ZOjq`?iW}G$a`FBJJY;iy@en@aYqY0`#<(Pi;!XOAmu5By2f&20}&lEaV@WhZZtK%h!X;a&>bSZb- zZcFK5_@|kfBv|%1w~t}Y+|MSkcJy42qon%p-K!d=QLgpY2-Re1sou1T$o{PNYS?$*E~$=04PYs+`pzqCNAU;o8lIK3~3Z{a5?SxBdo4 COjoY} literal 0 HcmV?d00001 diff --git a/flink-table/flink-table-api-scala/src/test/resources/traversable-serializer-bitset-2.3/serializer-snapshot b/flink-table/flink-table-api-scala/src/test/resources/traversable-serializer-bitset-2.3/serializer-snapshot new file mode 100644 index 0000000000000000000000000000000000000000..fe5281ef4d83b76095dae89948a4e8cd8f530b6b GIT binary patch literal 286 zcmZWkI}XAy3^kvXjRP<+A|IkiNGvQxVn7|-V5o(gR7r|dF3c&ANMQif!M5yYzvl-4 zW5}GpAT?wv#a5q%43K{A@qVe$N2V zhs^l{QbXp*xL2_!j8rNoN-*9UZlh?xwWkaF&`omoLMnImxuqr?T?Bvuj2^?3`>>U| zQ85zrwhM-o&^T2#QJlpC+q7+PPBv>rtA%&3p42I*QwetX5SV|7Df*^>^3Kq*2af}+w&a5-DqF&fj2#z)?TO=W`pZ^1Z zKIG0HkQy>a#=VL?VWh2c8VSZ*!)+7|xb}2mAKsgSy^zYCePO8yM;8HL0Hen+)jnLM zZd8m!y_La`5*nwzp z34Q;60I-6}hZE93=FHfuxCRI(m)f$( qzAP3;{~2#v*c`sHriUMUU2x8X##@_p-9bBwjQP) literal 0 HcmV?d00001 diff --git a/flink-table/flink-table-api-scala/src/test/resources/traversable-serializer-list-buffer-2.3/test-data b/flink-table/flink-table-api-scala/src/test/resources/traversable-serializer-list-buffer-2.3/test-data new file mode 100644 index 0000000000000000000000000000000000000000..ca6108ccd17bf52e97337ed164ab0fdb8d204615 GIT binary patch literal 19 VcmZQzU|?osU|?Vb5lkS082|u#01W^D literal 0 HcmV?d00001 diff --git a/flink-table/flink-table-api-scala/src/test/resources/traversable-serializer-map-2.3/serializer-snapshot b/flink-table/flink-table-api-scala/src/test/resources/traversable-serializer-map-2.3/serializer-snapshot new file mode 100644 index 0000000000000000000000000000000000000000..88e4061ef6da64f5b1bbf011b873faf5644194b5 GIT binary patch literal 479 zcmb7Ay-ve05I#aj*m!^p3`L4O@Cc1SVxUVRF+>?I=15OmY|C~kl^5nIkZ>qc(=q^q zb^7k)?+*YnSXtjIbf`C^UWCo7ir5LI6|1;&G)9)7YL8p;VY*c08HL}-R|Z|!*a!gU zaQVJSGlPx?C#*Tjt_d0im9`?JBU__-GU>NgC7RX9@_g^@&^)4Rs_5DD#e<1$kuSed zp5RT9pWNFPuAV-U*4fv)`;-4_a#CWTQZR&HB3$f!*P|1opR2dV4R#Zi6he=w(7X0%6W&iM(-SE9lI literal 0 HcmV?d00001 diff --git a/flink-table/flink-table-api-scala/src/test/resources/traversable-serializer-map-2.3/test-data b/flink-table/flink-table-api-scala/src/test/resources/traversable-serializer-map-2.3/test-data new file mode 100644 index 0000000000000000000000000000000000000000..f209ff5f4fe111174a1f7d7b99910882a70a158f GIT binary patch literal 27 ecmZQzU|?cocPvOu&PZhd0!B8soXosz5DNe}8U#rI literal 0 HcmV?d00001 diff --git a/flink-table/flink-table-api-scala/src/test/resources/traversable-serializer-seq-2.3/serializer-snapshot b/flink-table/flink-table-api-scala/src/test/resources/traversable-serializer-seq-2.3/serializer-snapshot new file mode 100644 index 0000000000000000000000000000000000000000..94a2b25dcf8fbd3a354eb2883a133761e0bd7c62 GIT binary patch literal 256 zcmZXOJqiLr3`XNmYv%#Bu#_A^LD0fx1&d{iI7SU-X4aWmK`-nn1V=$sERygg)*5gHHg^gTbwzXBQS? z8x)RwbXRxl8r9$bDSAV_m~=eb3C!tCoMB XPebFa&D@XZh9YC;d@M&l>D&1MVXId< literal 0 HcmV?d00001 diff --git a/flink-table/flink-table-api-scala/src/test/resources/traversable-serializer-seq-2.3/test-data b/flink-table/flink-table-api-scala/src/test/resources/traversable-serializer-seq-2.3/test-data new file mode 100644 index 0000000000000000000000000000000000000000..ca6108ccd17bf52e97337ed164ab0fdb8d204615 GIT binary patch literal 19 VcmZQzU|?osU|?Vb5lkS082|u#01W^D literal 0 HcmV?d00001 diff --git a/flink-table/flink-table-api-scala/src/test/resources/traversable-serializer-set-2.3/serializer-snapshot b/flink-table/flink-table-api-scala/src/test/resources/traversable-serializer-set-2.3/serializer-snapshot new file mode 100644 index 0000000000000000000000000000000000000000..af3fea13ded844fe9652016c7764f67d794b63bd GIT binary patch literal 256 zcmZXOzY4-Y42R>N)y)U!;3#>B3W5$U6&y;3^o$xz@5Pv=WSc%Uu)=xb<{lAD)+jy^zY4ePO8$Cl>)=1e4o1%^|F% zX;q9w?aN?D35`=_6UA9PvQ6Ix7i9BJbieejDGQF}%EoG*r9RKzv8rIYyC>%0RhvK0 Xr=f98leizzngV0ud@N@_>D&1MWJp&) literal 0 HcmV?d00001 diff --git a/flink-table/flink-table-api-scala/src/test/resources/traversable-serializer-set-2.3/test-data b/flink-table/flink-table-api-scala/src/test/resources/traversable-serializer-set-2.3/test-data new file mode 100644 index 0000000000000000000000000000000000000000..3b0d0b065b0b1d1eb53ea43004211edc765ed659 GIT binary patch literal 19 UcmZQzU|?osU|?VZ5nvVz004~u5C8xG literal 0 HcmV?d00001 diff --git a/flink-table/flink-table-api-scala/src/test/resources/traversable-serializer-with-case-class-2.3/serializer-snapshot b/flink-table/flink-table-api-scala/src/test/resources/traversable-serializer-with-case-class-2.3/serializer-snapshot new file mode 100644 index 0000000000000000000000000000000000000000..588c8b45a73d23046d4dae218d49a28d9f660f21 GIT binary patch literal 485 zcmb7=u};G<5QdMG5jGy60|Q8v2Ogmjl~`CDi6P2xHAiydVjJ5*Dlg1aAmPxV2_2w= zW!;_qfA{|YP{7)SR-s4Jk$MrfuPWhID7RRpou?tOL{$ZRrx3@9robrtK|x#ev2zIk z7I67_p6>!W?!B<#B)d8q6ja8EkV)*UYRTr`MwMvS1IzO!xW3l(R^L3>v|8#E*tWOL zYB{U(;OI%yz}3@NCZ7GA`+vF6<31%uDg|Tw!^p*c`)cq)cN16vk4LaEEaUnqhN5j3WfG!Zq%sVH)K`MXl0b zZMWPe~!oe`?s!QU_R6m(g57290k2Xbv(9RL6T literal 0 HcmV?d00001 diff --git a/flink-table/flink-table-api-scala/src/test/resources/traversable-serializer-with-pojo-2.3/test-data b/flink-table/flink-table-api-scala/src/test/resources/traversable-serializer-with-pojo-2.3/test-data new file mode 100644 index 0000000000000000000000000000000000000000..ebc7236c8331871b6a459cd876bad512e403ca32 GIT binary patch literal 33 gcmZQzU|?coVgLhn$AZMF^@=z z`ib%CMQ>=-dB!}eNno^l;@QL(bnD53lVUArAukWk$A4q1l*$wh0JgAy?%v+O;k>M& a`RMcmr6kzL5TaJZjtZlTI@Z9iTBBYrCPk3| literal 0 HcmV?d00001 diff --git a/flink-table/flink-table-runtime/src/test/resources/linked-list-serializer-2.3/test-data b/flink-table/flink-table-runtime/src/test/resources/linked-list-serializer-2.3/test-data new file mode 100644 index 0000000000000000000000000000000000000000..120473d48e9ca55ceace50cef16ab09887ab27d7 GIT binary patch literal 45 acmZQzU|?l{0z}Y`h}0tWL@jNc8Sl<~v%B-n06+zWt%J=S)-HjbL@R%=Y!0Gr?VlB!syf*U7+jx+QoME7YJeb5<>DAAL7#KI}j z+2xGPSx8fT5P#f9h7L(Wq~Rx$)K)Z3gtK%KGj91FAIkTiu#qP4VvP@BJJo3%gdS48 z8!?wF1T6k2D!@eo^=mEd2*g;f-C=(n2O!I9ybp$*_&V@{FMx&g3^U5B~id8 z|0~B2t-;=*CD>D@jmje1V#8V!hrTjWlBVbNHiK4^=wL+@a>BccQwqZDmc zRVt*`P-Tb{$wf}TulZ$j9r8yJem+R_PyX8qS)~Xie~}! zrUcQC5t&iXPf$PnaDXWukl4e%_ld;iCCMPbQ8EcBv%JPG>Bk>fPhxnw!UwmVAU|}y z5%y6hpf(e5SZqi#z*!8HYpGhPiA8n!7#?^@cjo&%APequcl|J=6zUc;tEN$_B5GAc ztqMeHhDa@#<$BM~BI$DswVOiXx@k}V+ajvRZ}EGKd>pvQ3}(~f$B4qcPS-XM%|7hB z{>xWFT-_zFIP%aaoKC}_ut^S12w%y#i3aUyM3u?v3z{5 z(vz8=ReKiscgoFn_5dq)$_Ax4vp{mvm{ z%3Y4Jv%JQ*D8@~4OtyO0OS3~9w@?soMJtHjzKdt>l;CbnmGH_@t8m#?~O zU0u~wRom`F%L5D2A|b5+3GJW2!wMb{Li+&EAXY-G_y^zx@xTjO2}NQBzjMC2wcDO- z5P4v+lbLaUm-C(PTz=CHp{exEu2QJVKwcV)^EGDezV=Eb$i{0(``Hb4ZE!DTvzcxi>-=_;5C>1*HC=8QC=^TLUBYEpbeCtPi>qpGdqm-jZC9yclz8MVayTN2so*XC2t^LE3-LLE(DX)F?CnO2}b2xXZIri#y zI2wgPNlBI&3zB3>OEaHJ8d_A91-Ak6D`%!Z5pl|es;vFS?$>u88^Gj!Q!2fm4x3+?(az9}=)4SJ78G?~ zS@A_MNQVDkG5*EY(a!r@gq~&CSp0%;?hA+>%7@p0Plo&iLNaqWP9iTDTuL6U8Z3jV zj7|$~6H%(Aymq+tWcT>l*3Rzb(DP!Bjf?>qdR~N{b7+o4j2uUlqQW)fWfoXDs}1}# z8}&F&C@(X$UZba3wN_iSYg(sa*UWCCU+eTYI;JLU&1!a#{CMB`IpysWviCK0SydI4 z{$5fS)s@#(_02WpHcFL-)Cc&#QZbuN^}h1$`nvL9=k@j825nS+oBrb9|7YUQca=Bj z;~M=%KQu0X4(K2L_}#$#D`kBt3hmR_vFetOU+R<)IB8Dj1&+AjWP$d)wWf|E;d&Q! z*YguZ;$YBt>!Er+43YkwifJ+2tgNYa=ubvL-8Dy^KdpO?`o_{q0I|y4VYTwsXlzC% z0=qBHgpcF5r-?ZCVzCouGk0&TL?Vv8Fd!k1rw=QCpc>&g!9aWt-okUk@{(AuHMPwu zlhHR?-A;G28Ydtv22;JUSsj@dhU3|ZVc~$7Mm~-c$Dm=X@`7Sq1eEwWvzsQaE23h} zBo+qmXOc`nM0#_xdi&veB+LXtspB%9BajX!(}vsax4KThX7+_u(~ynVOt;;uHQbif zHaB{0v(tU>%A3P5PVzmE%`?x5YfnsjI}A^2&!P~K842%$wbx=Pj(q9!Uq8}zo6j20 zH;zx9Xiqk}jf1E6ZY@)Whg|$0{{7P*tyFHS4zloij12sP+jmsqiv$XWzG9{F>M~R* z>Nazp?)nk!x>Hf1Vcw*y-cv8+j=F?k<@PIT7>&%NekLMPk5YMEm9|1=;Kg-FDWW6P zdrK-E{EPSAP+9Rb=?EYEh`PSQbQ4hx=G6N@89xlEKvykq-H6Dw=IoUlv zc}mk5uiRIW0oVCXY_YL=_m&E2N1nj1_f%<|MmnP0y|04oK-6%oVAD}5_m@N85fC}C zn@j5ULpAaSUVzeqrGjHD5v^8Uzm=N3xPZPX7p;>a2PhQANwoT4fjCd5$gO=}&~*IK zH!62=>N(S=`@em6HN8K5I;lKR6VvnS0GuePhprooKcGq)T^Odq$q z_`_TIqF?^U|N4`q?^dcGyhB5u@w1Hi|M>eK|L$LI{quM5>!Nb+>9dplr-#Qi!m36e zIMwf>3>5u-ZNuuK5EQOc>oshv=4gG(?P*TKX*Lw4{ul37PljGx#s6mYh=Akqc2&A$ zm4&wY?&`bMy)ddeg03hW9Hy;gCQ{^(1hUy?y@~CQx1UN_ zAp(R9mT8|3qHq#8hU-t_A%LUS#2o4;gatAq13u%JL;PisPW4u!-)**ASOf6M;l_Yz z81Xc)b=UM`f!TA@muON<5p#4X^c*mE>0uO)VguraO-&6;A`u_fY-qi9x0CKm!URN# zFi#RWxfO@U*i9#SA@~%w-f0xm&SW$$&(Vx|hVUovY&a9bcq1N85@2nhC((p%K&-|S zs}M!3lV})TXD~y=`Rx@M0BzcTz{J{=7pP*f;p6OmGOg1evHelA1kue}`$l6oSoE-x4eZ(Dt z9|N&NL=pTwS1ywt@F461M1*0(h!XIlb+z6`N9&TL06m6q;S*4ABIOVHmH2J z7r3E;u7@F`?*8H4Q{!Ow#qL2WY+)or@(&{>VNE>*cmpxP);F+V5`>W>qRcLGqEfQ3 zI1-N~hKMNnoC_>5JU5H}Qjsj@%qlZmmzEF7IbM94@Bix7fq|X^xj={*qm!vyvx0b%7*D=a!bSaMqXk(+2*q$ z7P=*5g7wr(GZGJZ#OYxeya;`y5x&@_bnFD9VD(gpG0U4R6oE~rqZ|AiMSR1+45a|42E=E;Ydv>LxEm7` z%y}xMitZft6U?PqEvb8__z2Vrj1g>vQ6vRmi7)U5aRGEMd^+R6zya*Fup?ZW zgM!xVYa0!+8ZS0n5cET^hgop}x6BB00-UNO^bEIYW(rSi<%T{#ohiPR?V6 zG4fC};3!#w0K-v&AbrZuC6tyZYnh2XG$_!IrIX4Up$M;}!(0NRNg^(CDrDra8Nfv; zI;0#xHz^a@r34T&vIR~F1~53pFtCTD74ap`)<~ckjm)uRui!ZKQ$S)uIxCq8EIdl| z!>312wg`Mvn?&ttOac#>4-1|#&Qwyld@1{-I1?dxWn`ioJ08pq#vdABI!y-1;)`>0 zDR8*Sj5Pe@PrcQV?>b65dk=rp~kuABtyNmSr!&CO4_v% z{ZR*Ol7aFVsmF8iG>WYwThVGXHoX8)fFcnGq`a^jl#b9^eXZZ=w)*W&riDub8=ITo z!gb-)15t`_s7GR3+uh(G^A0UYW(t(kZXry_P&w9all4Q7&TQaw5447^TTxG~+ zjY#h#NFn@`woD3&Lzk+Ez>%<;2{QEu&TRBfuZtLi_KQ?9I7=~BrrNTa<^&#znBHpl zAts_-;y+WZ>$#!+2{Ti&2R3bj2s|=s!WSVA=7KSLx4G}b>M=$!9aQ6$*RT3%e8ZeG(EqedO@ z#V=Aw7HW17(!UZeT6(YF+02TllI_p*;7ScT(vO^*ZM8}3lMTJg-M%Y*WCVEk;E&Xg zgHVZX;SdsCiY18Zjz?Zgss68){=?2|^gu=hE#?-eH|u$gP}U&XZ4sXMV4xu~ek!8V z$etr&D|3N7C%h_jq(s;w$b3pRnn5d}0vJbb`qFp>(?ACoSzp@9D&;OO7Z{ASxbBQ+ zvj>#0356FI+a{t=iPJ(PbWrIAtfag#z?hID7A@uW9R+6DzMBiXKg&i=CEaHMZwsA; zZnxj)^tIFotfDs3Tb-V^(bn1&c@dz{2SWFtB>k)+E&!R_oeNnux3rqg+E?O&h{(W3 zh46SnL9_6Ql9A*}Ol=O&k1da8{0aW%kJ!Vu7RXw1!bcS?d8N1lHA#0#Dx%kc5|0io}RLNtyjt-2z) zKw@z~&opKiLYUz57$sDckr^rhd4$d17M!$@b8xbjH~)=BA8rRC$f zgp61a-i#;97|m@bN>ms|)6j{`2~9|Sn-FH39ub|8kAp5LWrheVm^)XfR`7f!4~{dd zN=IQ$zK$}05oKFa6ev{@$cNO^$P6&e!-!3w618;@a^B-af@3==Kh~+!#~LYnn=?ftf!cS} z#Ae{kir!4qUI6|Rq@l?W7e~GK62!iiyqu80nh6f~;bt(hfe2{oa^Hr8gA#Hy&WlhS zXZsTeJ&__Q=Wb_NgqJd!crqrR%XPH+5nIPo*;9XX$!KP4F_IWdgNrxTHwO;-$nAAb z8Ao`Uz+A{~7nuq4htwu0{24&$1=Q-&Pxp|oP-}TJpS@y^>Jup_es*=m3Q9AG4+8=! zSB66rnf=pO49~Ll3Qil3U*Wb&u8#Bg-UWc42ueo zK}|4#?oc#gY2-`sOoZ`qR*cfxdd)ty(8+19nwE_gEJ*ViDVXvFQ*+JpyVI|I?R{$M z%9Q{aBp?t5l@QVextEFs&<%iPR^rrCkT=Q_Y)JqRH7GiHa*UltYxF6O$-`s`yNw5S z(ezlDkv+szDxh)bd-ik&NmB!wrxt{1PR+Je5+fdd9PF%SU^n#xG~PV zs-#L~RGb8NLuE=Pi!2J8*plUR`6`d`P+^+^cJ@xCUpctx{P0&PZaP0VogZZI zrDi=mEGrmpIzMTXk$Pk|ogYe{ZaP0`s^4^exYI@X4u6%S{J8d}^TXZH|LykXP3Nc7 zxcXV@{Or+7Q#<*?s6Flr6{%~fx0IGf#dnYLj@nH-D65!n+ChbR{9kPcmFlybZqQ9P z2+h=)4$4h8Xr{w;(+x5{Z#PJ}we$SwX!r00Uv%GSw(X8+TeXhU#|t@@snz-!55M=GR4DQPo>Yt{iQ?{jBWSz1)qJ9xjm-R--0|GY=qAPG9IR%<&}udBJ8j_b;o Io51aV175`ur2qf` literal 0 HcmV?d00001 diff --git a/flink-table/flink-table-runtime/src/test/resources/sink-upsert-materializer/migration-flink-2.3-ROCKSDB-V2-snapshot b/flink-table/flink-table-runtime/src/test/resources/sink-upsert-materializer/migration-flink-2.3-ROCKSDB-V2-snapshot new file mode 100644 index 0000000000000000000000000000000000000000..932754ff7f1c82a671853a5b845328ff3c6dadfc GIT binary patch literal 16144 zcmeHONo*YHb*|zfwJ425jb;=>hzIQ%!FCXJtM?^DAtotm%$TAGvL%mZY!s@i{^~BX zx~fwP$(})iBm)BuFfbArNiG3$h>wP^aV|b52n++h&bws+#lL)qi#3r713`Ql~&7aRQf}!Ua9pP z?S7}#x6RftTg^XcGi>WyhTUn~&5GISbt|n#y;13P`<=?LR~L4--?xVChN4`18#}Jh zt_5Y_2cxPnHO#T7+OFdrRwHBRifRyhkuwq1Xf_pbn2M8< K&_q7s35A zBL|)_4aa^2%1ij8e(&FuVl%21WN5!+PWi2 z%x_MLOV){j@$SBC{j8*Ap20>`XS%?A>aBTbM!Fb=wX2@?OQvUs=ps7 ztxw7l?Uk2OlvnvyH@{&V8CBQtM%67Zo)jmik#co=cd+&L*1q!ESAR*8;6J-(PBo@Z z)$}J5-zz9-XoP|!S*_01NkM_2~!4DW%VmtFSZ`(2ZQy&mOgl~x1}sU zU*CDQ1uhnpRsK;w*xKJ--`Rc_Jksd;C*W-dXXVTl*->8k7dD!?Yj2)Qn#D)Dl9rj; z>L8xF;-$nFl+V9}AZ@QQkw$@uPuE8l6CZhahA-)dY>}CdY&fG!Hz6N_n_Su0ejA>0 zi7|r&*Wio%`6L*VNbgsJ+2=;EIW_`1FF6V*t!^t$jLbU)J zi^|>^m%bRXcYJS@BiH@;U*}NrQwRjgyJtAPC>Mj$^*_DEb=S^&4OJ=z-fF+ zVtH+M{mItB-umX&>FD(Q%;nN}5k^KNs?UAL+BGI3L=sep9``R8FJ6pQzEZ=dUaN*- zgbd7TS+$yJ)hbrK->bCjTEEh(S!Ts*i~6w9v_)TZkR46Gss6h1#@EP=R@G%yRaE+W zNnKR0EUT-?eU$R@3c}&*pS%4VC8J(ff35r>?CY=o@Y=tAxB39dqk8YNttF$W-ds}t z=(7)2WtI@vzx|PNmx)YI9W(x0ljKaDUD z9)mOgSRXo3s8#B%wK9{@nvHI!yH*Y(kQSqvR$D7ij1%2*%t#;NfRIMs4~)*A)v1`x zcE8dZ+Q`70Em0Y^Tb;US4~MV+?G@DzCPq{}5&@}4DZQ>r zOCck0!YZT`&=D|7l@9*G&AaN6;l_d{E#ZP6;hDZAEVXn~orqv0s{T|2hG&J!oyE_< zEF_eyPp87O23rS%r!c&I>FDmZ2+f|b(iR}-TbC(ySE9;#%<9_oo{6s+7{ zAkL#1QgGK5G#$S8_0kQTdd&3c{%_n^N$yX-eXVp`jSR=F0(OF^>f3fGq8FJ{{_Gzo z|E0W|Ips89`ncU6sDE-bTlLNt-alFTv(o2Yyh%eJ^I69HzyJ8>-~5~PfBqJJTvTp8 z-5YE_-94xfWYzkBt6t0Mwz^GGsnwfSr6n4z%CKdcm3pr|>@_-V{L@yH>R-N99*mu^ zjQ@@DKHtVBSOfIQ@J5Gi=;6#WHQR7Qf!Sljm2i?z5p#4X6zws0$zc?hLLK6UQO)$Bgd#qy zUTgK*-A=ME@*@x>!aPajcs(4) z5x~~dq9CRl5UXK4%taAuBpSxo`Afm)jG3_X*~0u{9p&2PuMP1&veffCYu%-ATaBAqK`-$ z?C>)!^>zrzbrE<7e{=*75d?7fOu0;Y#DlO85D~fwBZ|OJtJ~@|JFPBB3fQ9y8$JQ` z2Ez1VjI)e}6qYrF8X_NY%5!Y2&!z!_xTDliHi%VmVghWg*+g{gC({4jSj4d6)C|wj z^BGRqJ|=WwQ)h$9b~~Q!>*$W?GVE^eK7Ok2Y(3xFNrWx*XiWa0ha{|-g9xu9D41Fk z3u4a?ED@x3kr9=Wg~gG0hGLA6lFiw`65X-W@Glj~a!#!>wRLIvkeua&huQwGuJ7nk z1P6h%5o9zn_2Imt0ujN>91npHu}Z6F)+71CJ~Ivi#1(xaCeoZ(RT%@wXFPHqX+Y^P zolI`2yUxUk^d}p9HpD`=giNrWdTx5;AdxuS^}Xl5i#);=81M8)QVOckyaM6>?*#5%?<2QmFMOx?!3~DL5HAA6`hur+|(`CsQST z>P(T&d1o|9P?TDeK0%z<4)=UWcH0{uFWFBl9(1f>Vx7g)8HU))8q*v%!$W5(Ma!53 z;qmQAw4n|-1}VB}rg2^`jUk@GT>%(p7lFx{30$CSW}>C@L5-3!-LW*Cf1;4D>zJV& z;82J7ba<^}&j@!zf`T)i3gznd8SE#ROVV0W_h$Ypi02rXQYSG6un|U)1b`*Jz#GH~ z&^`C*lmi_Hu-C$laA^(-t$M%JtdZ3?p>Bhq>w`VaiW9hHN|-a?L?wv_Bgi2%9tr8i zr&cCwSSCw7vnQwG}pDm7DhIND@ z0kMSb7yPr*lbxK%3Vq_BYQRyl0s)4j0zv+iol7V!QFdrV=2)jdKb1}@i-bJ9k`6No zOyWqKWK_t=VKab>LUc$tfNl~d(n|>-W?%}O;*DT%h+$w4Su5g8n68mPGnp7u$zINJ z;-`Sbh;&vk6Igf7lh5K0t}^wfF#?bvj~&X`l(ASObbc00 zXR!!s$Qb<8j!|hlBSc%R$&rbQZX(XU%{vTeg170Bm>`lHQ5=B1XWpTQ#1k}$_2k4f zjfZ_x5|2>*fpi=ka)c*R2slSV+UFYc5Joc>#7Mr9!~r-vpuqtp&IgDfYZC%+szdc- z$BM>UW34DGVwALNBKo5aSR(`FF;b6XtF1X6pa4}O4oG-mHz*v@YV=$E zPPfr-uQ4rL8rWE0`#oG2PCXKZ2#0zk6k4ZSul0Hz2JsP+C?FjeDTqdzC;6=7P2(uV zmCTa4Q=`Ll6W}UBHfuzBCqW9~r?h2KQ0UuKMR=Bk)l`s)KX7KF;Xxx}4Eirp$>1!( zSea_ea+(u(Bw`w#UP4SnyTE^{THCRG?E_|}U=M8C1QB?$=mG%Nq}ucSiJ-{?NCwA7 zFhMhiWRz$Bp|rXjd|2L`vL!&5(_=|-u6jn2;~0lb=_Jyf#0xTtm=h`rmuyWk(S$Nw zv=sFu4}m0*aG=JJIVMDqq*E8TbcVGCvQI-s()1Q-8CXCx;y*erGK$q6)S@*Muu{=tw_uZobzhtxtCJ zPPhBc^^pnS-GM(+Lk>bEy17G0bjg<>s#^|uEv5RuRrn7(FVF)S6||UHpjNMDH9}E? zWVd;E;)8*P$oQ#g?*vYha|(2)>fk0A3Y*k}r^gbH9Bx#>&e6-)ySTx5Mo zFRPHdyj)-~*8IA2p3NRmz$O%4Tx=VNLIqB9k z*!{n3KS?G5AwNAg47{M^FjkHFm*J`#~ZHl}IQ0N1pdr**mS`p`fOzzHw zESpaLUw@)D&M-*0_lUyLN*rA6S^9vzN@cHs1<(i^Prk#eA(*sn&^v#LK$YjtIOpn0* z{Xk=sIQLNs)=BA8rRCzmgp61a-kc}P7|m@bN>ms|lh7&8(>4fUHs}e_fP5TuNhxzg zSi#)6LbZYiELm`zTU9s;YqE8e0Zb^{lA=JViavjRb1nQ4^biGc9^kO*j zp!ng{IV&j5AU<>msF35J$HqpT6x)ObY4lEo4I9G)GOCN|0h!hYp>s_e7zsDd1edd$ z*nc*I$0<~j%VAiQhYTvl0J=j#%+kn~;+Y8JdKV>86+SO29*%f1-X}s1<(zEWnSXcQ;;`G6KqKU5H-p>d2)=M zrB&-w9FvF15_SVm?1I^WFamRosYF0i-*wDl+dea(v(!94$*I}43Sz{wZ#?{fVRHjj zJ3Np-9|)+405`;W=ap26jPjGuNYBw$PrGH4Oxp?ITi#}c~^Pw_%^|TcM7A1FQHOXlNRO!}ITclG8+UH)V zB$wI>_qQ)#DFwRG7(nOvcu+G-Z9%q{BqLIvS@e8N&*Y@2W(Notd#vs}D9*Qj=o<%@ zeINcN#bw{;vhRcZz0j(Mf2HNZW#1=hF;a)@vhPF5(`DZWE%nR35BIq!+u<*A6d%@J z_Io;b-VwhI1(rLD=cE4FS`b~OwZS~3e z?)GE6Um(8;-(FE}of-ixVfXrCDC|nVS;ITn!opAeb_egB*zKAy8<@sB*y`Qo-~8ex z{%wEhx4%`!dp!3Trq6vI^T%IO)t@ikcz20jZ(dUV^TFqTaYa$DDT`N@l<(aA_D}IP z?#s3>EG?Fnl)qEezgPL4T_X40FaF@UYVyYU z$4oCSE-&*tBv<4=uc+!(rF1pHp+e*C|YDpD!~>T#rUfD;u(dPh2SLn zBvQ3Uuiqr!&_YtdNX~w!XsL4kfOVtGqrv;i)~7UBT)Okw)i_=obBVSJc&CHGGJ0Dd zr14f)_RsjYM<8q6grke;b00=ax_z{*pRnbw7m&jp^sbZqxnA< CLtVxI literal 0 HcmV?d00001 diff --git a/flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-hashmap-checkpoint/1b0148d4-1999-4687-969d-22e0e623000f b/flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-hashmap-checkpoint/1b0148d4-1999-4687-969d-22e0e623000f new file mode 100644 index 0000000000000000000000000000000000000000..89e40fd41805fd1170a58f8dbe0d1ac7a4a47abc GIT binary patch literal 705 zcmdT?Jx{|h5WTnvi3PzwU|_Aq$1iY+2aA9!+eLyUa)W6t(l~O=0KXnPO^1Yufq}Q& zy(iy2>74=K7$Ojyuf5Z+mF~j43p$wjO)mpvaKV>U5XD6)6;ZUznN)%;R*Lb*@`2|R zP8Ncb{EkS~51l=cVns_y1tSG}p`urp&Tp`8b+tA4t+vg3BoJP12fz`! lilOvCDV~H3rSFu0(Cxm7w~KFwep<3YI8-$7Lrt>@vu{x#xaa@? literal 0 HcmV?d00001 diff --git a/flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-hashmap-checkpoint/1dff9aa3-919c-445c-9020-1ffcf84f8c96 b/flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-hashmap-checkpoint/1dff9aa3-919c-445c-9020-1ffcf84f8c96 new file mode 100644 index 0000000000000000000000000000000000000000..8093dbf0aa072da62f035788d439ae0a57c2907c GIT binary patch literal 786 zcmeH_ze>bF5XR^3#7?ld+Qw^LU%@L<90ZYzMz9HE9CM4=Kg>)7ePN$MaI*+UIBWzv zr&(rp`R4b1EC3ussyW;Q?hHn3cVwP>>t9l1O&gpG-soGTL2WPQ5rs?{d{+@$?Cm@8 zYT8yFqwInv)kV@hZ`3;CMiiAUBZrnmtnZpZh%fS;C~ZJIs^(1WUb!8C4vZ&I7o7bE=F;$wumhm=`y5GUnSr`G927} z-~S%~JONDLIr?L$@gtHUgflr$R_wUUbs;OIbIq%zP+E%5Qj20+ZHgs_X}L}NCH(T0 zuS;GjE=9f;-&`j80NRI!nZeX8vfs|SLpm(0ecyY>=rrJwY!}(yL}ZGBb&bMcO=tfw zEbf7FW{9n)^!X9sb%g=5J!U__G~UJe+X#A}#7Ji&Jt1W`=6y8OVlt61(zW&v${$w; literal 0 HcmV?d00001 diff --git a/flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-hashmap-checkpoint/2f96c9f3-1ba8-440f-9d60-259c817db230 b/flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-hashmap-checkpoint/2f96c9f3-1ba8-440f-9d60-259c817db230 new file mode 100644 index 0000000000000000000000000000000000000000..ea4ba41338cdf045b82f0dac3b8ac84968dbd7f5 GIT binary patch literal 786 zcmeH_Jxc>Y5QZlo*a;S?ZIagYFC@hkfkPyxC)gb8WxOojelRm9=pXi12=1;$ID(B} z=QPXAF7G_=%L2d|#G1mbr%vgh+XJfS-nf_87}a`fy;JfQa1hh8deV%l^scLrjPA`l z(rVmRP6s}CiK?@xyKKZ*q=rQcUI+3mG8@-510!AKJI+rN2EYU^>P>lHG*z+NZp!Ur zv5V6wtWWS*2(^t$8Po?PEuL82rFBQT5zhI?JgY4pKJ%`>GhUzY(%_O?m4i^VH~SlH gkz?X`q+R_mAGx?3MT)QJC|YDpD!~>T#rUfD;u(dPh2SLn zBvQ3Uuiqr!&_YtdNX~w!XsL4kfOVtGqrv;i)~7UBT)Okw)i_=obBVSJc&CHGGJ0Dd zr14f)_RsjYM<8q6grke;b00=ax_z{*pRnbw7m&jp^sbZqxnA< CLtVxI literal 0 HcmV?d00001 diff --git a/flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-hashmap-checkpoint/3cae0bc8-b3d8-4cb5-84fc-e3e9770af29a b/flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-hashmap-checkpoint/3cae0bc8-b3d8-4cb5-84fc-e3e9770af29a new file mode 100644 index 0000000000000000000000000000000000000000..1aded13f6e4b64b595d56ab025bef35589f5f883 GIT binary patch literal 347 zcmb7-v2MaJ5QYzfkh-Aq1`J)XN_hg)c(6z@vP~trL?$(05#q=;1AY2h5e#ADpZ@z! zcOL)@A*Bc7op<`T)FDno)X_}m38Qv3;cF_0;-Zj>C|YDpD!~>T#rUfD;u(dPh2SLn zBvQ3Uuiqr!&_YtdNX~w!XsL4kfOVtGqrv;i)~7UBT)Okw)i_=obBVSJc&CHGGJ0Dd zr14f)_RsjYM<8q6grke;b00=ax_z{*pRnbw7m&jp^sbZqxnA< CLtVxI literal 0 HcmV?d00001 diff --git a/flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-hashmap-checkpoint/3e30c60b-69d0-429d-b872-e0e65dbdd94b b/flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-hashmap-checkpoint/3e30c60b-69d0-429d-b872-e0e65dbdd94b new file mode 100644 index 0000000000000000000000000000000000000000..89e40fd41805fd1170a58f8dbe0d1ac7a4a47abc GIT binary patch literal 705 zcmdT?Jx{|h5WTnvi3PzwU|_Aq$1iY+2aA9!+eLyUa)W6t(l~O=0KXnPO^1Yufq}Q& zy(iy2>74=K7$Ojyuf5Z+mF~j43p$wjO)mpvaKV>U5XD6)6;ZUznN)%;R*Lb*@`2|R zP8Ncb{EkS~51l=cVns_y1tSG}p`urp&Tp`8b+tA4t+vg3BoJP12fz`! lilOvCDV~H3rSFu0(Cxm7w~KFwep<3YI8-$7Lrt>@vu{x#xaa@? literal 0 HcmV?d00001 diff --git a/flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-hashmap-checkpoint/432717c3-5612-4571-87db-71017780a90a b/flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-hashmap-checkpoint/432717c3-5612-4571-87db-71017780a90a new file mode 100644 index 0000000000000000000000000000000000000000..ea4ba41338cdf045b82f0dac3b8ac84968dbd7f5 GIT binary patch literal 786 zcmeH_Jxc>Y5QZlo*a;S?ZIagYFC@hkfkPyxC)gb8WxOojelRm9=pXi12=1;$ID(B} z=QPXAF7G_=%L2d|#G1mbr%vgh+XJfS-nf_87}a`fy;JfQa1hh8deV%l^scLrjPA`l z(rVmRP6s}CiK?@xyKKZ*q=rQcUI+3mG8@-510!AKJI+rN2EYU^>P>lHG*z+NZp!Ur zv5V6wtWWS*2(^t$8Po?PEuL82rFBQT5zhI?JgY4pKJ%`>GhUzY(%_O?m4i^VH~SlH gkz?X`q+R_mAGx?3MT)QJbF5XR^3#7?ld+Qw^LU%@L<90ZYzMz9HE9CM4=Kg>)7ePN$MaI*+UIBWzv zr&(rp`R4b1EC3ussyW;Q?hHn3cVwP>>t9l1O&gpG-soGTL2WPQ5rs?{d{+@$?Cm@8 zYT8yFqwInv)kV@hZ`3;CMiiAUBZrnmtnZpZh%fS;C~ZJIs^(1WUb!8C4vZ&I7o7bE=F;$wumhm=`y5GUnSr`G927} z-~S%~JONDLIr?L$@gtHUgflr$R_wUUbs;OIbIq%zP+E%5Qj20+ZHgs_X}L}NCH(T0 zuS;GjE=9f;-&`j80NRI!nZeX8vfs|SLpm(0ecyY>=rrJwY!}(yL}ZGBb&bMcO=tfw zEbf7FW{9n)^!X9sb%g=5J!U__G~UJe+X#A}#7Ji&Jt1W`=6y8OVlt61(zW&v${$w; literal 0 HcmV?d00001 diff --git a/flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-hashmap-checkpoint/6c6b8709-117a-4b3d-bf10-56135a412d7d b/flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-hashmap-checkpoint/6c6b8709-117a-4b3d-bf10-56135a412d7d new file mode 100644 index 0000000000000000000000000000000000000000..11ef5c3a9cf3c78bcbc45c682fcec4f2ea4e3764 GIT binary patch literal 786 zcmeH_Jxc>Y5QZlo*a;S?ZIagYFC@hkfkPyxC)gb8WxOojelRm9=pXi12=1;$ID(B} z=QPXAF7G_=%L2d|#G1mbr%vgh+XJfS-nf_87}a`fy;JfQa1hh8deV%l^scLrjPA`l z(rVmRP6s}CiK?@xyKKZ*q=rQcUI+3mG8@-510!AKJI+rN2EYU^>P>lHG*z+NZp!Ur zv5V6wtWWS*2(^t$8Po?PEuL82rFBQT5zhI?JgY4pKJ%`>GhUzY(%_O?m4i^VH~SlH gkz?X`q+R_mAGx?3MT)QJC|YDpD!~>T#rUfD;u(dPh2SLn zBvQ3Uuiqr!&_YtdNX~w!XsL4kfOVtGqrv;i)~7UBT)Okw)i_=obBVSJc&CHGGJ0Dd zr14f)_RsjYM<8q6grke;b00=ax_z{*pRnbw7m&jp^sbZqxnA< CLtVxI literal 0 HcmV?d00001 diff --git a/flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-hashmap-checkpoint/_metadata b/flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-hashmap-checkpoint/_metadata new file mode 100644 index 0000000000000000000000000000000000000000..6bbd1920add0b1ece3a062103b0acb1ce0cb8968 GIT binary patch literal 3618 zcmcgvO>A7%6}~eDE2R)1f>yOukwtZ^t<=pq)c#Q3|MzXll-22{r z=bU@K^LNkO^793Z5SoNv8SQ#OyU?}sy_J4Q2lmdc42Hdvd+S$p&Fo?d4=ndO-C?J@ zP;av9Zo2oMXWfZ&XRmwv`XA`uz5+s8@Vlf4D-UI~%3BLvKB&av!O#uU8WDW@YaxR1 zPQ9RyoAt{{w2v{Jxi=I?%LNwR8SEU3*z*{o@+q>YYx34q!!}x`W_$S7elMiK03Yi2 zTnuh7#K+QVis-UK{pJ(9pzx&%y|8pAHi@p_tYJ!&r!PS0EOa%h- zVzdTkYX;OMnnk8SUB$h|B502d$qEbNQ>HdEoj9-*u6xRSd6{4|GA7y}gT|b#a~xZ0 z0~SICYzZTn<{YvS*#xUH#3mjTxD3h^pRsq5&yl!L^ zI03xm1x+|mw=$)baKIy~AaaoP%XGHxdgSDX8KER)S@k zI8VWCg0s%U6&%5traEve6=hgR4Kj4}SW`l^HpE%74i1wvc%vOADtjyp;5Jlfpbkzj zFs~Q32GUpzmTh~-XcZj~3^VINl|U`_$q^hB)hvN!k&OPm)ZT?Qze}5S8CZ>ZjNn%Yhq)U(vB3fqb z6hwoRGEn1dyzSS@x>bS-BY9R{VHXX^P+DWdI7D<}$+IYxVWyT*BHBcnnXnMdzypN< zqQ-hK9AhFFZMdU6)YSD{yi33C^-r!DfzWxom_Wxxgiu zNgE7>R0pe#;X-le%t(ttHW-*fU2%+hoRoo*NrE%^YjCUl+bOu&r{n~j3r2@KMl*q( z_X$UlsDrv4LD|O2Yr(v+0H~nAM8slBp-c(zCH9$;Qr@_9g2Mf}&byp5sY%L!k3hN5 z7K{@Z08dJ26J(Su)hCwuB8|lN4)wQaCFrlupN}tm`u86{^V#E%{&`B>1p-Pa7GsS{ z)~Ggqt(7R>DLP(THJr{vlpIz^pW2@|KKN2{pt39d>81y1uZV()UCQh+W8#QV`tv@;@=le z4Sr7-J_8MR)TPPN9E5;+#^F*DoIhnKY|JtdF%7TN_<^5g1#?CJP@vx%$!# zH|(dcKKJ_DM;6Mpx-B4UM8NRB+FZD)p;AJl1(yY6VTNAU5vV0lM0DibI>VYWva!uQ zcL7~G=p)nXFHE~-7Z%fWUV>v+A7@=Rq@|@4??zWNTSr`{dcSh?-syG*i-lseGr!^oE07*zG4m^f<T>8f!9%!TX9J-{W_Ym!wyWjo7%`Ca@!p!`z4}W%Uo7xYP(hfJ= z_j3mTPXG@vjs6sBe2ZiV;U>4q${m-vE@h>3u6eZ*N=xy+*P`53n{vfrrgnwUzk%QH zW*>R6=au48UU%@oq#l_1Ay-#7(`KV{4>`!?e3$>U^B#iWPb_Hq; BT5|vZ literal 0 HcmV?d00001 diff --git a/flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-hashmap-checkpoint/b02aaf8e-c39c-41b5-868f-4a96919d4b7a b/flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-hashmap-checkpoint/b02aaf8e-c39c-41b5-868f-4a96919d4b7a new file mode 100644 index 0000000000000000000000000000000000000000..dd330a8e917283053b0fda3f3ffec7ef8452fd5e GIT binary patch literal 786 zcmeH_ze>bF5XQ$->;#LeZM@d;6}%$FK@hoU1e-7y=W>hLKg?_dePN$MaI+RiIBWzv zr&(rp`R4b1EC8HBsu|pQ>5u}oJH~Bq+)HWQC^UBzOkH}5Qq zX-KaLoU@OUtTuoA%)9>1czwVtgB#sq4gza$o^Q#r ero?$qyZB)~ad9z;lwaA!|1^J{=J@BnE1zFyy#9p% literal 0 HcmV?d00001 diff --git a/flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-hashmap-checkpoint/b07cb79e-92dd-452a-9d6a-e0c3110f7b3d b/flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-hashmap-checkpoint/b07cb79e-92dd-452a-9d6a-e0c3110f7b3d new file mode 100644 index 0000000000000000000000000000000000000000..dd330a8e917283053b0fda3f3ffec7ef8452fd5e GIT binary patch literal 786 zcmeH_ze>bF5XQ$->;#LeZM@d;6}%$FK@hoU1e-7y=W>hLKg?_dePN$MaI+RiIBWzv zr&(rp`R4b1EC8HBsu|pQ>5u}oJH~Bq+)HWQC^UBzOkH}5Qq zX-KaLoU@OUtTuoA%)9>1czwVtgB#sq4gza$o^Q#r ero?$qyZB)~ad9z;lwaA!|1^J{=J@BnE1zFyy#9p% literal 0 HcmV?d00001 diff --git a/flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-hashmap-checkpoint/e27c68e5-70fa-4c5a-845f-a67d1555c18b b/flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-hashmap-checkpoint/e27c68e5-70fa-4c5a-845f-a67d1555c18b new file mode 100644 index 0000000000000000000000000000000000000000..89e40fd41805fd1170a58f8dbe0d1ac7a4a47abc GIT binary patch literal 705 zcmdT?Jx{|h5WTnvi3PzwU|_Aq$1iY+2aA9!+eLyUa)W6t(l~O=0KXnPO^1Yufq}Q& zy(iy2>74=K7$Ojyuf5Z+mF~j43p$wjO)mpvaKV>U5XD6)6;ZUznN)%;R*Lb*@`2|R zP8Ncb{EkS~51l=cVns_y1tSG}p`urp&Tp`8b+tA4t+vg3BoJP12fz`! lilOvCDV~H3rSFu0(Cxm7w~KFwep<3YI8-$7Lrt>@vu{x#xaa@? literal 0 HcmV?d00001 diff --git a/flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-hashmap-checkpoint/e91fc44d-2321-4318-bcab-f4791f6e09bd b/flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-hashmap-checkpoint/e91fc44d-2321-4318-bcab-f4791f6e09bd new file mode 100644 index 0000000000000000000000000000000000000000..5e924258b13ca8ebcaf30d5c62affc8f8894615f GIT binary patch literal 293 zcmZ9^v1-FG5P;!p1D!IYONT(gfvnX#xI_?v69-A@(8Vb3#TK7xYP(hfJ= z_j3mTPXG@vjs6sBe2ZiV;U>4q${m-vE@h>3u6eZ*N=xy+*P`53n{vfrrgnwUzk%QH zW*>R6=au48UU%@oq#l_1Ay-#7(`KV{4>`!?e3$>U^B#iWPb_Hq; BT5|vZ literal 0 HcmV?d00001 diff --git a/flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-hashmap-checkpoint/f17fda57-d832-4d2d-a2f7-e93d3cc5e3bf b/flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-hashmap-checkpoint/f17fda57-d832-4d2d-a2f7-e93d3cc5e3bf new file mode 100644 index 0000000000000000000000000000000000000000..11ef5c3a9cf3c78bcbc45c682fcec4f2ea4e3764 GIT binary patch literal 786 zcmeH_Jxc>Y5QZlo*a;S?ZIagYFC@hkfkPyxC)gb8WxOojelRm9=pXi12=1;$ID(B} z=QPXAF7G_=%L2d|#G1mbr%vgh+XJfS-nf_87}a`fy;JfQa1hh8deV%l^scLrjPA`l z(rVmRP6s}CiK?@xyKKZ*q=rQcUI+3mG8@-510!AKJI+rN2EYU^>P>lHG*z+NZp!Ur zv5V6wtWWS*2(^t$8Po?PEuL82rFBQT5zhI?JgY4pKJ%`>GhUzY(%_O?m4i^VH~SlH gkz?X`q+R_mAGx?3MT)QJ74=K7$Ojyuf5Z+mF~j43p$wjO)mpvaKV>U5XD6)6;ZUznN)%;R*Lb*@`2|R zP8Ncb{EkS~51l=cVns_y1tSG}p`urp&Tp`8b+tA4t+vg3BoJP12fz`! lilOvCDV~H3rSFu0(Cxm7w~KFwep<3YI8-$7Lrt>@vu{x#xaa@? literal 0 HcmV?d00001 diff --git a/flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-hashmap-savepoint-native/0254150e-e19b-42a5-8b5e-0cd267700a90 b/flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-hashmap-savepoint-native/0254150e-e19b-42a5-8b5e-0cd267700a90 new file mode 100644 index 0000000000000000000000000000000000000000..dd330a8e917283053b0fda3f3ffec7ef8452fd5e GIT binary patch literal 786 zcmeH_ze>bF5XQ$->;#LeZM@d;6}%$FK@hoU1e-7y=W>hLKg?_dePN$MaI+RiIBWzv zr&(rp`R4b1EC8HBsu|pQ>5u}oJH~Bq+)HWQC^UBzOkH}5Qq zX-KaLoU@OUtTuoA%)9>1czwVtgB#sq4gza$o^Q#r ero?$qyZB)~ad9z;lwaA!|1^J{=J@BnE1zFyy#9p% literal 0 HcmV?d00001 diff --git a/flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-hashmap-savepoint-native/175bd4b8-0f44-4bd9-a646-bf0232aac778 b/flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-hashmap-savepoint-native/175bd4b8-0f44-4bd9-a646-bf0232aac778 new file mode 100644 index 0000000000000000000000000000000000000000..8093dbf0aa072da62f035788d439ae0a57c2907c GIT binary patch literal 786 zcmeH_ze>bF5XR^3#7?ld+Qw^LU%@L<90ZYzMz9HE9CM4=Kg>)7ePN$MaI*+UIBWzv zr&(rp`R4b1EC3ussyW;Q?hHn3cVwP>>t9l1O&gpG-soGTL2WPQ5rs?{d{+@$?Cm@8 zYT8yFqwInv)kV@hZ`3;CMiiAUBZrnmtnZpZh%fS;C|YDpD!~>T#rUfD;u(dPh2SLn zBvQ3Uuiqr!&_YtdNX~w!XsL4kfOVtGqrv;i)~7UBT)Okw)i_=obBVSJc&CHGGJ0Dd zr14f)_RsjYM<8q6grke;b00=ax_z{*pRnbw7m&jp^sbZqxnA< CLtVxI literal 0 HcmV?d00001 diff --git a/flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-hashmap-savepoint-native/29c5745d-8ad6-4f59-9464-ddd0468077f0 b/flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-hashmap-savepoint-native/29c5745d-8ad6-4f59-9464-ddd0468077f0 new file mode 100644 index 0000000000000000000000000000000000000000..ea4ba41338cdf045b82f0dac3b8ac84968dbd7f5 GIT binary patch literal 786 zcmeH_Jxc>Y5QZlo*a;S?ZIagYFC@hkfkPyxC)gb8WxOojelRm9=pXi12=1;$ID(B} z=QPXAF7G_=%L2d|#G1mbr%vgh+XJfS-nf_87}a`fy;JfQa1hh8deV%l^scLrjPA`l z(rVmRP6s}CiK?@xyKKZ*q=rQcUI+3mG8@-510!AKJI+rN2EYU^>P>lHG*z+NZp!Ur zv5V6wtWWS*2(^t$8Po?PEuL82rFBQT5zhI?JgY4pKJ%`>GhUzY(%_O?m4i^VH~SlH gkz?X`q+R_mAGx?3MT)QJC|YDpD!~>T#rUfD;u(dPh2SLn zBvQ3Uuiqr!&_YtdNX~w!XsL4kfOVtGqrv;i)~7UBT)Okw)i_=obBVSJc&CHGGJ0Dd zr14f)_RsjYM<8q6grke;b00=ax_z{*pRnbw7m&jp^sbZqxnA< CLtVxI literal 0 HcmV?d00001 diff --git a/flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-hashmap-savepoint-native/3f411ee6-daf7-43bf-a75d-470b827c9903 b/flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-hashmap-savepoint-native/3f411ee6-daf7-43bf-a75d-470b827c9903 new file mode 100644 index 0000000000000000000000000000000000000000..966ef8e59b646540067755e3a0a2ae467e27cca1 GIT binary patch literal 282 zcmZ9Ev1-FG5QZ-;>C~ZJIs^(1WUb!8C4vZ&I7o7bE=F;$wumhm=`y5GUnSr`G927} z-~S%~JONDLIr?L$@gtHUgflr$R_wUUbs;OIbIq%zP+E%5Qj20+ZHgs_X}L}NCH(T0 zuS;GjE=9f;-&`j80NRI!nZeX8vfs|SLpm(0ecyY>=rrJwY!}(yL}ZGBb&bMcO=tfw zEbf7FW{9n)^!X9sb%g=5J!U__G~UJe+X#A}#7Ji&Jt1W`=6y8OVlt61(zW&v${$w; literal 0 HcmV?d00001 diff --git a/flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-hashmap-savepoint-native/4b1978f4-0aa4-44a7-8ec8-2baf7c18b840 b/flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-hashmap-savepoint-native/4b1978f4-0aa4-44a7-8ec8-2baf7c18b840 new file mode 100644 index 0000000000000000000000000000000000000000..1aded13f6e4b64b595d56ab025bef35589f5f883 GIT binary patch literal 347 zcmb7-v2MaJ5QYzfkh-Aq1`J)XN_hg)c(6z@vP~trL?$(05#q=;1AY2h5e#ADpZ@z! zcOL)@A*Bc7op<`T)FDno)X_}m38Qv3;cF_0;-Zj>C|YDpD!~>T#rUfD;u(dPh2SLn zBvQ3Uuiqr!&_YtdNX~w!XsL4kfOVtGqrv;i)~7UBT)Okw)i_=obBVSJc&CHGGJ0Dd zr14f)_RsjYM<8q6grke;b00=ax_z{*pRnbw7m&jp^sbZqxnA< CLtVxI literal 0 HcmV?d00001 diff --git a/flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-hashmap-savepoint-native/4c52b484-4a4d-406c-8152-cad35d667728 b/flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-hashmap-savepoint-native/4c52b484-4a4d-406c-8152-cad35d667728 new file mode 100644 index 0000000000000000000000000000000000000000..89e40fd41805fd1170a58f8dbe0d1ac7a4a47abc GIT binary patch literal 705 zcmdT?Jx{|h5WTnvi3PzwU|_Aq$1iY+2aA9!+eLyUa)W6t(l~O=0KXnPO^1Yufq}Q& zy(iy2>74=K7$Ojyuf5Z+mF~j43p$wjO)mpvaKV>U5XD6)6;ZUznN)%;R*Lb*@`2|R zP8Ncb{EkS~51l=cVns_y1tSG}p`urp&Tp`8b+tA4t+vg3BoJP12fz`! lilOvCDV~H3rSFu0(Cxm7w~KFwep<3YI8-$7Lrt>@vu{x#xaa@? literal 0 HcmV?d00001 diff --git a/flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-hashmap-savepoint-native/4fb46874-d9f8-4bbe-afd0-ec8d92552380 b/flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-hashmap-savepoint-native/4fb46874-d9f8-4bbe-afd0-ec8d92552380 new file mode 100644 index 0000000000000000000000000000000000000000..dd330a8e917283053b0fda3f3ffec7ef8452fd5e GIT binary patch literal 786 zcmeH_ze>bF5XQ$->;#LeZM@d;6}%$FK@hoU1e-7y=W>hLKg?_dePN$MaI+RiIBWzv zr&(rp`R4b1EC8HBsu|pQ>5u}oJH~Bq+)HWQC^UBzOkH}5Qq zX-KaLoU@OUtTuoA%)9>1czwVtgB#sq4gza$o^Q#r ero?$qyZB)~ad9z;lwaA!|1^J{=J@BnE1zFyy#9p% literal 0 HcmV?d00001 diff --git a/flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-hashmap-savepoint-native/51d94027-781f-4928-b92a-e3f62217ffee b/flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-hashmap-savepoint-native/51d94027-781f-4928-b92a-e3f62217ffee new file mode 100644 index 0000000000000000000000000000000000000000..89e40fd41805fd1170a58f8dbe0d1ac7a4a47abc GIT binary patch literal 705 zcmdT?Jx{|h5WTnvi3PzwU|_Aq$1iY+2aA9!+eLyUa)W6t(l~O=0KXnPO^1Yufq}Q& zy(iy2>74=K7$Ojyuf5Z+mF~j43p$wjO)mpvaKV>U5XD6)6;ZUznN)%;R*Lb*@`2|R zP8Ncb{EkS~51l=cVns_y1tSG}p`urp&Tp`8b+tA4t+vg3BoJP12fz`! lilOvCDV~H3rSFu0(Cxm7w~KFwep<3YI8-$7Lrt>@vu{x#xaa@? literal 0 HcmV?d00001 diff --git a/flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-hashmap-savepoint-native/691d0b5e-b9fa-4d8e-930d-889389c6cd4f b/flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-hashmap-savepoint-native/691d0b5e-b9fa-4d8e-930d-889389c6cd4f new file mode 100644 index 0000000000000000000000000000000000000000..8093dbf0aa072da62f035788d439ae0a57c2907c GIT binary patch literal 786 zcmeH_ze>bF5XR^3#7?ld+Qw^LU%@L<90ZYzMz9HE9CM4=Kg>)7ePN$MaI*+UIBWzv zr&(rp`R4b1EC3ussyW;Q?hHn3cVwP>>t9l1O&gpG-soGTL2WPQ5rs?{d{+@$?Cm@8 zYT8yFqwInv)kV@hZ`3;CMiiAUBZrnmtnZpZh%fS;b>{9_r2FO_kVGd5<=GSm&Zyok%Q#@8^h_?$9s>Rnog?W_Oa%X965C{`o~7Y z{-Ej)Hk(Cp*GC`u$MbOR>hpKK_TdldZ~PLKbntf|E6X=|bn;V&+&Zb%(n$qXoC)Ep zUt}R1ziTG)w|0JKjT{d#NX-(XA<9IhDibvz@ln`<`%)GjTqE8&+HTvKj-DFQ2ggGn zClh*dJcQt3Qqc$EZ)(;DxtFop1i>Q~!Pjw`YHA1oZ_US_F5x znVK2|EppIWn4KQFTlf$PFpMUvC6(G*3Z?Lr1*MF1hDQ&$CGUDTUvJG99IcMk71Y7C zasg#2OA>XskaftCy2L~w0KC?w*|mC@9M@oE!njZmiBri7px|7h+<`Q}B{M8G(#^^$8Ur7bCNRw6nR0u1}fhF|ZV9U-}AK^m%~F;pfi zsYyOk!;(u}dsdiYH=KnG*KoX&CFd+rUuHNVDGJ_2>cEsSNzcHy@y^*XkqHqvrZECq z1aQ;|ZE1uu2B%9?NZ(j&Lx9u1vm+h1+9XLC09ufssfpfD;UH1?3`??*+6S6 zlg%fG34nrP77Fx|adc268j|C16G6hO$nL(~& zZfr!07-pkIPL+;2l;DJfM!LD??9>#v8E~an!byYd02!!crN@LRfz2WmDwJ4%qU|Mf zxU~bV|Cu5(IawNPXTc`qutTy#3JjBOf)z@M!YmZ9G0F=KK!Zb`$ifxWVq9q9nAU}5 zN=mf|cUHhR18%gUlpzFagGb{W+b?>kF~!DstF^YOb#)GRfgyE)3+t7Z3eyPzbtHv4 zWQpiQU>FBPkrv>B*4WZz#>WL(#E+D5h+YK7q0m@|>^iu0{bhRJ47iF1D;aW08;&1G zD-2Rn0L2A`2oitnu)y8%$%$N&DlpFQ-~_o7_(p!Qa|?af75TJ00@=Ta-WW z?5l78>)NHsxA^9p=;2LGsV|(;9#0Dbdkl8sh$+QFr}@Jgc_DB`H&N{DPU#I`Ea#^1 zfBEj^pWbuN-TYTSdgZk69tVu2+zLG2<PK*4*V9NV_}`#KKJe1*N;naT{v26;XR#@xyWK#Y@po ztNw7%n<+Xo+jieNIgndKMGmh&3Qs_93kI9LjcSa4nDE_^(Qs1DlW@XkJr()nUQ^3Z zFZzA_!6lk77Eg{zu_p-G@9xa+?h?OS5|G1$TpE+xv+LdLdiV5Ty1n>vRFSo_C(hk} m{&YnS%@mY5QZlo*a;S?ZIagYFC@hkfkPyxC)gb8WxOojelRm9=pXi12=1;$ID(B} z=QPXAF7G_=%L2d|#G1mbr%vgh+XJfS-nf_87}a`fy;JfQa1hh8deV%l^scLrjPA`l z(rVmRP6s}CiK?@xyKKZ*q=rQcUI+3mG8@-510!AKJI+rN2EYU^>P>lHG*z+NZp!Ur zv5V6wtWWS*2(^t$8Po?PEuL82rFBQT5zhI?JgY4pKJ%`>GhUzY(%_O?m4i^VH~SlH gkz?X`q+R_mAGx?3MT)QJC|YDpD!~>T#rUfD;u(dPh2SLn zBvQ3Uuiqr!&_YtdNX~w!XsL4kfOVtGqrv;i)~7UBT)Okw)i_=obBVSJc&CHGGJ0Dd zr14f)_RsjYM<8q6grke;b00=ax_z{*pRnbw7m&jp^sbZqxnA< CLtVxI literal 0 HcmV?d00001 diff --git a/flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-hashmap-savepoint-native/c11b2683-674c-4b65-9475-2f00c68344a9 b/flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-hashmap-savepoint-native/c11b2683-674c-4b65-9475-2f00c68344a9 new file mode 100644 index 0000000000000000000000000000000000000000..89e40fd41805fd1170a58f8dbe0d1ac7a4a47abc GIT binary patch literal 705 zcmdT?Jx{|h5WTnvi3PzwU|_Aq$1iY+2aA9!+eLyUa)W6t(l~O=0KXnPO^1Yufq}Q& zy(iy2>74=K7$Ojyuf5Z+mF~j43p$wjO)mpvaKV>U5XD6)6;ZUznN)%;R*Lb*@`2|R zP8Ncb{EkS~51l=cVns_y1tSG}p`urp&Tp`8b+tA4t+vg3BoJP12fz`! lilOvCDV~H3rSFu0(Cxm7w~KFwep<3YI8-$7Lrt>@vu{x#xaa@? literal 0 HcmV?d00001 diff --git a/flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-hashmap-savepoint-native/c3b57c60-2989-4dec-b8c9-7683e1324de7 b/flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-hashmap-savepoint-native/c3b57c60-2989-4dec-b8c9-7683e1324de7 new file mode 100644 index 0000000000000000000000000000000000000000..5e924258b13ca8ebcaf30d5c62affc8f8894615f GIT binary patch literal 293 zcmZ9^v1-FG5P;!p1D!IYONT(gfvnX#xI_?v69-A@(8Vb3#TK7xYP(hfJ= z_j3mTPXG@vjs6sBe2ZiV;U>4q${m-vE@h>3u6eZ*N=xy+*P`53n{vfrrgnwUzk%QH zW*>R6=au48UU%@oq#l_1Ay-#7(`KV{4>`!?e3$>U^B#iWPb_Hq; BT5|vZ literal 0 HcmV?d00001 diff --git a/flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-hashmap-savepoint-native/c546110f-c69b-4df5-acbe-ba86ef4c0ace b/flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-hashmap-savepoint-native/c546110f-c69b-4df5-acbe-ba86ef4c0ace new file mode 100644 index 0000000000000000000000000000000000000000..ea4ba41338cdf045b82f0dac3b8ac84968dbd7f5 GIT binary patch literal 786 zcmeH_Jxc>Y5QZlo*a;S?ZIagYFC@hkfkPyxC)gb8WxOojelRm9=pXi12=1;$ID(B} z=QPXAF7G_=%L2d|#G1mbr%vgh+XJfS-nf_87}a`fy;JfQa1hh8deV%l^scLrjPA`l z(rVmRP6s}CiK?@xyKKZ*q=rQcUI+3mG8@-510!AKJI+rN2EYU^>P>lHG*z+NZp!Ur zv5V6wtWWS*2(^t$8Po?PEuL82rFBQT5zhI?JgY4pKJ%`>GhUzY(%_O?m4i^VH~SlH gkz?X`q+R_mAGx?3MT)QJY5QZlo*a;S?ZIagYFC@hkfkPyxC)gb8WxOojelRm9=pXi12=1;$ID(B} z=QPXAF7G_=%L2d|#G1mbr%vgh+XJfS-nf_87}a`fy;JfQa1hh8deV%l^scLrjPA`l z(rVmRP6s}CiK?@xyKKZ*q=rQcUI+3mG8@-510!AKJI+rN2EYU^>P>lHG*z+NZp!Ur zv5V6wtWWS*2(^t$8Po?PEuL82rFBQT5zhI?JgY4pKJ%`>GhUzY(%_O?m4i^VH~SlH gkz?X`q+R_mAGx?3MT)QJC~ZJIs^(1WUb!8C4vZ&I7o7bE=F;$wumhm=`y5GUnSr`G927} z-~S%~JONDLIr?L$@gtHUgflr$R_wUUbs;OIbIq%zP+E%5Qj20+ZHgs_X}L}NCH(T0 zuS;GjE=9f;-&`j80NRI!nZeX8vfs|SLpm(0ecyY>=rrJwY!}(yL}ZGBb&bMcO=tfw zEbf7FW{9n)^!X9sb%g=5J!U__G~UJe+X#A}#7Ji&Jt1W`=6y8OVlt61(zW&v${$w; literal 0 HcmV?d00001 diff --git a/flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-hashmap-savepoint-native/e9264ddd-9dc6-4199-9257-9488c9777950 b/flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-hashmap-savepoint-native/e9264ddd-9dc6-4199-9257-9488c9777950 new file mode 100644 index 0000000000000000000000000000000000000000..89e40fd41805fd1170a58f8dbe0d1ac7a4a47abc GIT binary patch literal 705 zcmdT?Jx{|h5WTnvi3PzwU|_Aq$1iY+2aA9!+eLyUa)W6t(l~O=0KXnPO^1Yufq}Q& zy(iy2>74=K7$Ojyuf5Z+mF~j43p$wjO)mpvaKV>U5XD6)6;ZUznN)%;R*Lb*@`2|R zP8Ncb{EkS~51l=cVns_y1tSG}p`urp&Tp`8b+tA4t+vg3BoJP12fz`! lilOvCDV~H3rSFu0(Cxm7w~KFwep<3YI8-$7Lrt>@vu{x#xaa@? literal 0 HcmV?d00001 diff --git a/flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-hashmap-savepoint-native/eb28972e-cca9-468c-b6e1-c5546f1abe21 b/flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-hashmap-savepoint-native/eb28972e-cca9-468c-b6e1-c5546f1abe21 new file mode 100644 index 0000000000000000000000000000000000000000..5e924258b13ca8ebcaf30d5c62affc8f8894615f GIT binary patch literal 293 zcmZ9^v1-FG5P;!p1D!IYONT(gfvnX#xI_?v69-A@(8Vb3#TK7xYP(hfJ= z_j3mTPXG@vjs6sBe2ZiV;U>4q${m-vE@h>3u6eZ*N=xy+*P`53n{vfrrgnwUzk%QH zW*>R6=au48UU%@oq#l_1Ay-#7(`KV{4>`!?e3$>U^B#iWPb_Hq; BT5|vZ literal 0 HcmV?d00001 diff --git a/flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-hashmap-savepoint/0c598f38-4b73-4bb2-b7ee-26c1ff1900f0 b/flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-hashmap-savepoint/0c598f38-4b73-4bb2-b7ee-26c1ff1900f0 new file mode 100644 index 0000000000000000000000000000000000000000..1aded13f6e4b64b595d56ab025bef35589f5f883 GIT binary patch literal 347 zcmb7-v2MaJ5QYzfkh-Aq1`J)XN_hg)c(6z@vP~trL?$(05#q=;1AY2h5e#ADpZ@z! zcOL)@A*Bc7op<`T)FDno)X_}m38Qv3;cF_0;-Zj>C|YDpD!~>T#rUfD;u(dPh2SLn zBvQ3Uuiqr!&_YtdNX~w!XsL4kfOVtGqrv;i)~7UBT)Okw)i_=obBVSJc&CHGGJ0Dd zr14f)_RsjYM<8q6grke;b00=ax_z{*pRnbw7m&jp^sbZqxnA< CLtVxI literal 0 HcmV?d00001 diff --git a/flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-hashmap-savepoint/20d3afb2-b900-4e31-b056-5ca08c9ad6b7 b/flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-hashmap-savepoint/20d3afb2-b900-4e31-b056-5ca08c9ad6b7 new file mode 100644 index 0000000000000000000000000000000000000000..1aded13f6e4b64b595d56ab025bef35589f5f883 GIT binary patch literal 347 zcmb7-v2MaJ5QYzfkh-Aq1`J)XN_hg)c(6z@vP~trL?$(05#q=;1AY2h5e#ADpZ@z! zcOL)@A*Bc7op<`T)FDno)X_}m38Qv3;cF_0;-Zj>C|YDpD!~>T#rUfD;u(dPh2SLn zBvQ3Uuiqr!&_YtdNX~w!XsL4kfOVtGqrv;i)~7UBT)Okw)i_=obBVSJc&CHGGJ0Dd zr14f)_RsjYM<8q6grke;b00=ax_z{*pRnbw7m&jp^sbZqxnA< CLtVxI literal 0 HcmV?d00001 diff --git a/flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-hashmap-savepoint/3740676a-9d6a-4a1c-9b16-d44028a588f0 b/flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-hashmap-savepoint/3740676a-9d6a-4a1c-9b16-d44028a588f0 new file mode 100644 index 0000000000000000000000000000000000000000..5e924258b13ca8ebcaf30d5c62affc8f8894615f GIT binary patch literal 293 zcmZ9^v1-FG5P;!p1D!IYONT(gfvnX#xI_?v69-A@(8Vb3#TK7xYP(hfJ= z_j3mTPXG@vjs6sBe2ZiV;U>4q${m-vE@h>3u6eZ*N=xy+*P`53n{vfrrgnwUzk%QH zW*>R6=au48UU%@oq#l_1Ay-#7(`KV{4>`!?e3$>U^B#iWPb_Hq; BT5|vZ literal 0 HcmV?d00001 diff --git a/flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-hashmap-savepoint/3f69c997-de8e-4284-9db9-6e717b85f25f b/flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-hashmap-savepoint/3f69c997-de8e-4284-9db9-6e717b85f25f new file mode 100644 index 0000000000000000000000000000000000000000..a7cffe07e97ea8f32df7b00c3ac885146bad8bee GIT binary patch literal 770 zcmeH@y-EX75QQf(*a;TaHc9LF3Z~d1ut>=23O37i9XA*E{xCBu=nMN4f_HBdmS7{; zIo74=K7$Ojyuf5Z+mF~j43p$wjO)mpvaKV>U5XD6)6;ZUznN)%;R*Lb*@`2|R zP8Ncb{EkS~51l=cVns_y1tSG}p`urp&Tp`8b+tA4t+vg3BoJP12fz`! lilOvCDV~H3rSFu0(Cxm7w~KFwep<3YI8-$7Lrt>@vu{x#xaa@? literal 0 HcmV?d00001 diff --git a/flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-hashmap-savepoint/46cae258-01e6-4861-8b5e-787c84208067 b/flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-hashmap-savepoint/46cae258-01e6-4861-8b5e-787c84208067 new file mode 100644 index 0000000000000000000000000000000000000000..5e924258b13ca8ebcaf30d5c62affc8f8894615f GIT binary patch literal 293 zcmZ9^v1-FG5P;!p1D!IYONT(gfvnX#xI_?v69-A@(8Vb3#TK7xYP(hfJ= z_j3mTPXG@vjs6sBe2ZiV;U>4q${m-vE@h>3u6eZ*N=xy+*P`53n{vfrrgnwUzk%QH zW*>R6=au48UU%@oq#l_1Ay-#7(`KV{4>`!?e3$>U^B#iWPb_Hq; BT5|vZ literal 0 HcmV?d00001 diff --git a/flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-hashmap-savepoint/5fea057a-54ed-4b1d-afa1-210bc98b310a b/flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-hashmap-savepoint/5fea057a-54ed-4b1d-afa1-210bc98b310a new file mode 100644 index 0000000000000000000000000000000000000000..a7cffe07e97ea8f32df7b00c3ac885146bad8bee GIT binary patch literal 770 zcmeH@y-EX75QQf(*a;TaHc9LF3Z~d1ut>=23O37i9XA*E{xCBu=nMN4f_HBdmS7{; zIo74=K7$Ojyuf5Z+mF~j43p$wjO)mpvaKV>U5XD6)6;ZUznN)%;R*Lb*@`2|R zP8Ncb{EkS~51l=cVns_y1tSG}p`urp&Tp`8b+tA4t+vg3BoJP12fz`! lilOvCDV~H3rSFu0(Cxm7w~KFwep<3YI8-$7Lrt>@vu{x#xaa@? literal 0 HcmV?d00001 diff --git a/flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-hashmap-savepoint/65618368-85c8-4fe2-8a32-e2a0f715e53f b/flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-hashmap-savepoint/65618368-85c8-4fe2-8a32-e2a0f715e53f new file mode 100644 index 0000000000000000000000000000000000000000..a7cffe07e97ea8f32df7b00c3ac885146bad8bee GIT binary patch literal 770 zcmeH@y-EX75QQf(*a;TaHc9LF3Z~d1ut>=23O37i9XA*E{xCBu=nMN4f_HBdmS7{; zIo=23O37i9XA*E{xCBu=nMN4f_HBdmS7{; zIo=23O37i9XA*E{xCBu=nMN4f_HBdmS7{; zIo=23O37i9XA*E{xCBu=nMN4f_HBdmS7{; zIo74=K7$Ojyuf5Z+mF~j43p$wjO)mpvaKV>U5XD6)6;ZUznN)%;R*Lb*@`2|R zP8Ncb{EkS~51l=cVns_y1tSG}p`urp&Tp`8b+tA4t+vg3BoJP12fz`! lilOvCDV~H3rSFu0(Cxm7w~KFwep<3YI8-$7Lrt>@vu{x#xaa@? literal 0 HcmV?d00001 diff --git a/flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-hashmap-savepoint/_metadata b/flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-hashmap-savepoint/_metadata new file mode 100644 index 0000000000000000000000000000000000000000..7273b44f644ed3fb9cad677aa114dcce7bc2ec67 GIT binary patch literal 3455 zcmcguO^g&p6t3MxTu@L5YTOGPzz|K%bp3WUcyQT(A{)dkpkjztRafl}?9L1`J!COT z;zh#EhzV+p5;R03hJyz&QKJVnhIsOzM!o1&I6#zmKz-Hox9$wGhmDnVS6B6`SKs&k zsOZ>^u-`pIubp#sgO={yr6Nd$76!XMcYz(nj8k6DCz$UCG&kCUEehrUtTC1h^mFA6Y)3uzG}3}v&pma`O$Is^o#U0>P8E6W%f+`T-q+$pu@KMk&)i*b$6}xnl&INJuQKj+9MwDos2eXud&n zG6$+8gK%LMg9~gROR#2~Vo5z`#7GMM?*)3tM5R%)ZqvH4Mm?*{tZNR@nz1Qo4^}Is za#ku&HYe%Y`}Y5SM(;j*X6=Q0?v7vjG%$oGc%u`9Ey}mnbG0}R^^Oq8eH?_LebemF zudV)CNC0MZA|NJ+iy#X)e3{r&%p{L(LeiMYw!21J%i7(-@|CRq?uX>s-UshL`|RIK zhwgf96qfhT*TLR=rE?-<@X_A?WbXgx0v*DYv603!j$+K2lsK_YV#>6H@P|BQEvF8C z9(eT2XXa&M6Nuo{DF-z{ah#+k!P3PfHcEIZ`ld-RdG3nEAflW#Da0U73D=MU++wXg z!y+{T5|vu&TScWyBnJ>!g$BkD-swoh8VZw3p=Lk^X|D;UB!beU3?q?l3jez>b@F{N zh)5Ap%Zb4$RRAKCS!GCq6Gb?oTyg8uCWtPPIbLn1nT~lZxxguh7mp*0l`{;d%4(-1 zO|0%)VLSC;F^KSpXuzznlSE=o zDZxTW!Be9diD|D#u2V1W+*0dPG05}h&ZX~N`ssmFmtQ@8endV2`a)pbuwsOLb0O%z z3Ik~0H#>Bx*$)guRB;JLr$XTf4oRqal7K^n!?B93;xtl`Y}d^Vt>x`*#YCxmaMQXy z<+7fELmjO;QF~_OMfAtLkA3vi$x~Oq2DyMBN707TUfb;ho8A^;rndzL%y08i9N2&Q z;+w~hz3}d#-`@Ce&o8%t{QrRBI!^6(2$0ehOm>|7^6H-#XX~$!$;*InQC-Sn4o;IA z>KwedhO;a&1ZofG5mj0!)wx{Ecjq!B;4sz0k_G>XzzVHHs_sYXD_0g>NTV)waJ36YCGi$ej1{+ zP;0<(JmU&5(>k0B-K>KYY zAK%sfTiPTWf$A-BUP6n zIu107O&Z0VMzKYs*cB~Kly$W}RmsAd&9l`U{{R9bkcAjwLLYYdT_r3(b?n>Ww;x|~ zeh>|fqve2cM(1iXBzmFPO3fABth0@*R4Erbineu@Z5~HULW#)G>hS~mur5yP@?>!$ ztHHep{;jE2>RHzbqc-Tt&_lgj^8y$!5jxN|3%y8on>?{b@@5^HDc8AbWv@AnQ IV8gBd0JqlO8~^|S literal 0 HcmV?d00001 diff --git a/flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-hashmap-savepoint/bdc79a1e-5432-49ec-bb1c-6bc96eee23c6 b/flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-hashmap-savepoint/bdc79a1e-5432-49ec-bb1c-6bc96eee23c6 new file mode 100644 index 0000000000000000000000000000000000000000..a7cffe07e97ea8f32df7b00c3ac885146bad8bee GIT binary patch literal 770 zcmeH@y-EX75QQf(*a;TaHc9LF3Z~d1ut>=23O37i9XA*E{xCBu=nMN4f_HBdmS7{; zIo74=K7$Ojyuf5Z+mF~j43p$wjO)mpvaKV>U5XD6)6;ZUznN)%;R*Lb*@`2|R zP8Ncb{EkS~51l=cVns_y1tSG}p`urp&Tp`8b+tA4t+vg3BoJP12fz`! lilOvCDV~H3rSFu0(Cxm7w~KFwep<3YI8-$7Lrt>@vu{x#xaa@? literal 0 HcmV?d00001 diff --git a/flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-hashmap-savepoint/e23d0934-4fdf-4278-a5a0-1e6ffe4265c0 b/flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-hashmap-savepoint/e23d0934-4fdf-4278-a5a0-1e6ffe4265c0 new file mode 100644 index 0000000000000000000000000000000000000000..1aded13f6e4b64b595d56ab025bef35589f5f883 GIT binary patch literal 347 zcmb7-v2MaJ5QYzfkh-Aq1`J)XN_hg)c(6z@vP~trL?$(05#q=;1AY2h5e#ADpZ@z! zcOL)@A*Bc7op<`T)FDno)X_}m38Qv3;cF_0;-Zj>C|YDpD!~>T#rUfD;u(dPh2SLn zBvQ3Uuiqr!&_YtdNX~w!XsL4kfOVtGqrv;i)~7UBT)Okw)i_=obBVSJc&CHGGJ0Dd zr14f)_RsjYM<8q6grke;b00=ax_z{*pRnbw7m&jp^sbZqxnA< CLtVxI literal 0 HcmV?d00001 diff --git a/flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-hashmap-savepoint/e3ba9568-1e04-4468-b7f2-3647c91d736e b/flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-hashmap-savepoint/e3ba9568-1e04-4468-b7f2-3647c91d736e new file mode 100644 index 0000000000000000000000000000000000000000..966ef8e59b646540067755e3a0a2ae467e27cca1 GIT binary patch literal 282 zcmZ9Ev1-FG5QZ-;>C~ZJIs^(1WUb!8C4vZ&I7o7bE=F;$wumhm=`y5GUnSr`G927} z-~S%~JONDLIr?L$@gtHUgflr$R_wUUbs;OIbIq%zP+E%5Qj20+ZHgs_X}L}NCH(T0 zuS;GjE=9f;-&`j80NRI!nZeX8vfs|SLpm(0ecyY>=rrJwY!}(yL}ZGBb&bMcO=tfw zEbf7FW{9n)^!X9sb%g=5J!U__G~UJe+X#A}#7Ji&Jt1W`=6y8OVlt61(zW&v${$w; literal 0 HcmV?d00001 diff --git a/flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-hashmap-savepoint/ebdcc597-63e2-48fb-852f-f20a52cf4f2e b/flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-hashmap-savepoint/ebdcc597-63e2-48fb-852f-f20a52cf4f2e new file mode 100644 index 0000000000000000000000000000000000000000..1aded13f6e4b64b595d56ab025bef35589f5f883 GIT binary patch literal 347 zcmb7-v2MaJ5QYzfkh-Aq1`J)XN_hg)c(6z@vP~trL?$(05#q=;1AY2h5e#ADpZ@z! zcOL)@A*Bc7op<`T)FDno)X_}m38Qv3;cF_0;-Zj>C|YDpD!~>T#rUfD;u(dPh2SLn zBvQ3Uuiqr!&_YtdNX~w!XsL4kfOVtGqrv;i)~7UBT)Okw)i_=obBVSJc&CHGGJ0Dd zr14f)_RsjYM<8q6grke;b00=ax_z{*pRnbw7m&jp^sbZqxnA< CLtVxI literal 0 HcmV?d00001 diff --git a/flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-hashmap-savepoint/ec8df3dd-6c2a-47f8-b678-d5adc0bafff7 b/flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-hashmap-savepoint/ec8df3dd-6c2a-47f8-b678-d5adc0bafff7 new file mode 100644 index 0000000000000000000000000000000000000000..966ef8e59b646540067755e3a0a2ae467e27cca1 GIT binary patch literal 282 zcmZ9Ev1-FG5QZ-;>C~ZJIs^(1WUb!8C4vZ&I7o7bE=F;$wumhm=`y5GUnSr`G927} z-~S%~JONDLIr?L$@gtHUgflr$R_wUUbs;OIbIq%zP+E%5Qj20+ZHgs_X}L}NCH(T0 zuS;GjE=9f;-&`j80NRI!nZeX8vfs|SLpm(0ecyY>=rrJwY!}(yL}ZGBb&bMcO=tfw zEbf7FW{9n)^!X9sb%g=5J!U__G~UJe+X#A}#7Ji&Jt1W`=6y8OVlt61(zW&v${$w; literal 0 HcmV?d00001 diff --git a/flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-hashmap-savepoint/f1530039-b1f6-4625-be1d-ee3e0e5fc315 b/flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-hashmap-savepoint/f1530039-b1f6-4625-be1d-ee3e0e5fc315 new file mode 100644 index 0000000000000000000000000000000000000000..a7cffe07e97ea8f32df7b00c3ac885146bad8bee GIT binary patch literal 770 zcmeH@y-EX75QQf(*a;TaHc9LF3Z~d1ut>=23O37i9XA*E{xCBu=nMN4f_HBdmS7{; zIo=23O37i9XA*E{xCBu=nMN4f_HBdmS7{; zIo7xYP(hfJ= z_j3mTPXG@vjs6sBe2ZiV;U>4q${m-vE@h>3u6eZ*N=xy+*P`53n{vfrrgnwUzk%QH zW*>R6=au48UU%@oq#l_1Ay-#7(`KV{4>`!?e3$>U^B#iWPb_Hq; BT5|vZ literal 0 HcmV?d00001 diff --git a/flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-checkpoint/219b149c-ac5c-4b3c-9f8f-415028d63b82 b/flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-checkpoint/219b149c-ac5c-4b3c-9f8f-415028d63b82 new file mode 100644 index 0000000000000000000000000000000000000000..0785704387c0ddbf67d7910eb632cf74e37d6936 GIT binary patch literal 237 zcmZS8)^KKEU^I2G?@(Z1WR%KDElbTwNz!wwEJ-cTEKYUK&n-wSN-W7Q>U3aa{KCu= z#lpbI#K6MvM@Q`^8v`RJ12Y>7!}a*3MgI7;GqEspurQopWIV~J9AA=|n_3iKT#{Il ys$Wo)pPX7;oSBy%Us{}6qzjfS2HBQ*R`Hb=K~uRvrZSymltVEU=#9J*bOQmd@Jj*! literal 0 HcmV?d00001 diff --git a/flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-checkpoint/2c78b5e2-da30-41c6-bfbc-b203d506365c b/flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-checkpoint/2c78b5e2-da30-41c6-bfbc-b203d506365c new file mode 100644 index 0000000000000000000000000000000000000000..89e40fd41805fd1170a58f8dbe0d1ac7a4a47abc GIT binary patch literal 705 zcmdT?Jx{|h5WTnvi3PzwU|_Aq$1iY+2aA9!+eLyUa)W6t(l~O=0KXnPO^1Yufq}Q& zy(iy2>74=K7$Ojyuf5Z+mF~j43p$wjO)mpvaKV>U5XD6)6;ZUznN)%;R*Lb*@`2|R zP8Ncb{EkS~51l=cVns_y1tSG}p`urp&Tp`8b+tA4t+vg3BoJP12fz`! lilOvCDV~H3rSFu0(Cxm7w~KFwep<3YI8-$7Lrt>@vu{x#xaa@? literal 0 HcmV?d00001 diff --git a/flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-checkpoint/2dcc0143-a438-4104-ab36-ddad184fda25 b/flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-checkpoint/2dcc0143-a438-4104-ab36-ddad184fda25 new file mode 100644 index 00000000000000..ad0dfcf758edc5 --- /dev/null +++ b/flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-checkpoint/2dcc0143-a438-4104-ab36-ddad184fda25 @@ -0,0 +1,429 @@ +# This is a RocksDB option file. +# +# For detailed file format spec, please refer to the example file +# in examples/rocksdb_option_file_example.ini +# + +[Version] + rocksdb_version=8.10.0 + options_file_version=1.1 + +[DBOptions] + max_background_flushes=-1 + compaction_readahead_size=2097152 + strict_bytes_per_sync=false + wal_bytes_per_sync=0 + max_open_files=-1 + stats_history_buffer_size=1048576 + max_total_wal_size=0 + stats_persist_period_sec=600 + stats_dump_period_sec=0 + avoid_flush_during_shutdown=true + max_subcompactions=1 + bytes_per_sync=0 + delayed_write_rate=16777216 + max_background_compactions=-1 + max_background_jobs=2 + delete_obsolete_files_period_micros=21600000000 + writable_file_max_buffer_size=1048576 + file_checksum_gen_factory=nullptr + allow_data_in_errors=false + max_bgerror_resume_count=2147483647 + best_efforts_recovery=false + write_dbid_to_manifest=false + atomic_flush=false + manual_wal_flush=false + two_write_queues=false + avoid_flush_during_recovery=false + dump_malloc_stats=false + info_log_level=INFO_LEVEL + write_thread_slow_yield_usec=3 + unordered_write=false + allow_ingest_behind=false + fail_if_options_file_error=true + persist_stats_to_disk=false + WAL_ttl_seconds=0 + bgerror_resume_retry_interval=1000000 + allow_concurrent_memtable_write=true + paranoid_checks=true + WAL_size_limit_MB=0 + lowest_used_cache_tier=kNonVolatileBlockTier + keep_log_file_num=4 + table_cache_numshardbits=6 + max_file_opening_threads=16 + random_access_max_buffer_size=1048576 + log_readahead_size=0 + enable_pipelined_write=false + wal_recovery_mode=kPointInTimeRecovery + db_write_buffer_size=0 + allow_2pc=false + skip_checking_sst_file_sizes_on_db_open=false + skip_stats_update_on_db_open=false + recycle_log_file_num=0 + db_host_id=__hostname__ + track_and_verify_wals_in_manifest=false + use_fsync=false + wal_compression=kNoCompression + compaction_verify_record_count=true + error_if_exists=false + manifest_preallocation_size=4194304 + is_fd_close_on_exec=true + enable_write_thread_adaptive_yield=true + enable_thread_tracking=false + avoid_unnecessary_blocking_io=false + allow_fallocate=true + max_log_file_size=26214400 + advise_random_on_open=true + create_missing_column_families=false + max_write_batch_group_size_bytes=1048576 + use_adaptive_mutex=false + wal_filter=nullptr + create_if_missing=true + enforce_single_del_contracts=true + allow_mmap_writes=false + access_hint_on_compaction_start=NORMAL + verify_sst_unique_id_in_manifest=true + log_file_time_to_roll=0 + use_direct_io_for_flush_and_compaction=false + flush_verify_memtable_count=true + max_manifest_file_size=1073741824 + write_thread_max_yield_usec=100 + use_direct_reads=false + allow_mmap_reads=false + + +[CFOptions "default"] + bottommost_file_compaction_delay=0 + memtable_protection_bytes_per_key=0 + compression_per_level=kSnappyCompression + bottommost_compression=kDisableCompressionOption + sample_for_compression=0 + blob_garbage_collection_age_cutoff=0.250000 + blob_compression_type=kNoCompression + prepopulate_blob_cache=kDisable + blob_compaction_readahead_size=0 + level0_stop_writes_trigger=36 + min_blob_size=0 + last_level_temperature=kUnknown + compaction_options_universal={allow_trivial_move=false;stop_style=kCompactionStopStyleTotalSize;min_merge_width=2;compression_size_percent=-1;max_size_amplification_percent=200;incremental=false;max_merge_width=4294967295;size_ratio=1;} + target_file_size_base=67108864 + ignore_max_compaction_bytes_for_input=true + memtable_whole_key_filtering=false + blob_file_starting_level=0 + soft_pending_compaction_bytes_limit=68719476736 + max_write_buffer_number=2 + ttl=2592000 + compaction_options_fifo={file_temperature_age_thresholds=;allow_compaction=false;age_for_warm=0;max_table_files_size=1073741824;} + check_flush_compaction_key_order=true + memtable_huge_page_size=0 + max_successive_merges=0 + inplace_update_num_locks=10000 + enable_blob_garbage_collection=false + arena_block_size=1048576 + bottommost_compression_opts={use_zstd_dict_trainer=true;enabled=false;zstd_max_train_bytes=0;parallel_threads=1;max_compressed_bytes_per_kb=896;checksum=false;max_dict_bytes=0;strategy=0;max_dict_buffer_bytes=0;level=32767;window_bits=-14;} + target_file_size_multiplier=1 + max_bytes_for_level_multiplier_additional=1:1:1:1:1:1:1 + blob_garbage_collection_force_threshold=1.000000 + enable_blob_files=false + level0_slowdown_writes_trigger=20 + compression=kSnappyCompression + level0_file_num_compaction_trigger=4 + block_protection_bytes_per_key=0 + prefix_extractor=nullptr + max_bytes_for_level_multiplier=10.000000 + write_buffer_size=67108864 + disable_auto_compactions=false + max_compaction_bytes=1677721600 + memtable_max_range_deletions=0 + compression_opts={use_zstd_dict_trainer=true;enabled=false;zstd_max_train_bytes=0;parallel_threads=1;max_compressed_bytes_per_kb=896;checksum=false;max_dict_bytes=0;strategy=0;max_dict_buffer_bytes=0;level=32767;window_bits=-14;} + hard_pending_compaction_bytes_limit=274877906944 + blob_file_size=268435456 + periodic_compaction_seconds=2592000 + paranoid_file_checks=false + experimental_mempurge_threshold=0.000000 + memtable_prefix_bloom_size_ratio=0.000000 + max_bytes_for_level_base=268435456 + max_sequential_skip_in_iterations=8 + report_bg_io_stats=false + sst_partitioner_factory=nullptr + compaction_pri=kMinOverlappingRatio + compaction_style=kCompactionStyleLevel + compaction_filter_factory=nullptr + compaction_filter=nullptr + memtable_factory=SkipListFactory + comparator=leveldb.BytewiseComparator + bloom_locality=0 + min_write_buffer_number_to_merge=1 + table_factory=BlockBasedTable + max_write_buffer_size_to_maintain=0 + max_write_buffer_number_to_maintain=0 + optimize_filters_for_hits=false + default_temperature=kUnknown + preserve_internal_time_seconds=0 + force_consistency_checks=true + merge_operator={id=StringAppendTESTOperator;delimiter=,;} + num_levels=7 + level_compaction_dynamic_file_size=true + memtable_insert_with_hint_prefix_extractor=nullptr + level_compaction_dynamic_level_bytes=false + persist_user_defined_timestamps=true + preclude_last_level_data_seconds=0 + inplace_update_support=false + +[TableOptions/BlockBasedTable "default"] + num_file_reads_for_auto_readahead=2 + metadata_cache_options={unpartitioned_pinning=kFallback;partition_pinning=kFallback;top_level_index_pinning=kFallback;} + read_amp_bytes_per_bit=0 + verify_compression=false + format_version=5 + optimize_filters_for_memory=false + partition_filters=false + detect_filter_construct_corruption=false + initial_auto_readahead_size=8192 + max_auto_readahead_size=262144 + enable_index_compression=true + checksum=kXXH3 + index_block_restart_interval=1 + pin_top_level_index_and_filter=true + block_align=false + block_size=4096 + index_type=kBinarySearch + filter_policy=nullptr + metadata_block_size=4096 + no_block_cache=false + index_shortening=kShortenSeparators + whole_key_filtering=true + block_size_deviation=10 + data_block_index_type=kDataBlockBinarySearch + data_block_hash_table_util_ratio=0.750000 + cache_index_and_filter_blocks=true + prepopulate_block_cache=kDisable + block_restart_interval=16 + pin_l0_filter_and_index_blocks_in_cache=true + cache_index_and_filter_blocks_with_high_priority=true + flush_block_policy_factory=FlushBlockBySizePolicyFactory + + +[CFOptions "_timer_state/processing_user-timers"] + bottommost_file_compaction_delay=0 + memtable_protection_bytes_per_key=0 + compression_per_level=kSnappyCompression + bottommost_compression=kDisableCompressionOption + sample_for_compression=0 + blob_garbage_collection_age_cutoff=0.250000 + blob_compression_type=kNoCompression + prepopulate_blob_cache=kDisable + blob_compaction_readahead_size=0 + level0_stop_writes_trigger=36 + min_blob_size=0 + last_level_temperature=kUnknown + compaction_options_universal={allow_trivial_move=false;stop_style=kCompactionStopStyleTotalSize;min_merge_width=2;compression_size_percent=-1;max_size_amplification_percent=200;incremental=false;max_merge_width=4294967295;size_ratio=1;} + target_file_size_base=67108864 + ignore_max_compaction_bytes_for_input=true + memtable_whole_key_filtering=false + blob_file_starting_level=0 + soft_pending_compaction_bytes_limit=68719476736 + max_write_buffer_number=2 + ttl=2592000 + compaction_options_fifo={file_temperature_age_thresholds=;allow_compaction=false;age_for_warm=0;max_table_files_size=1073741824;} + check_flush_compaction_key_order=true + memtable_huge_page_size=0 + max_successive_merges=0 + inplace_update_num_locks=10000 + enable_blob_garbage_collection=false + arena_block_size=1048576 + bottommost_compression_opts={use_zstd_dict_trainer=true;enabled=false;zstd_max_train_bytes=0;parallel_threads=1;max_compressed_bytes_per_kb=896;checksum=false;max_dict_bytes=0;strategy=0;max_dict_buffer_bytes=0;level=32767;window_bits=-14;} + target_file_size_multiplier=1 + max_bytes_for_level_multiplier_additional=1:1:1:1:1:1:1 + blob_garbage_collection_force_threshold=1.000000 + enable_blob_files=false + level0_slowdown_writes_trigger=20 + compression=kSnappyCompression + level0_file_num_compaction_trigger=4 + block_protection_bytes_per_key=0 + prefix_extractor=nullptr + max_bytes_for_level_multiplier=10.000000 + write_buffer_size=67108864 + disable_auto_compactions=false + max_compaction_bytes=1677721600 + memtable_max_range_deletions=0 + compression_opts={use_zstd_dict_trainer=true;enabled=false;zstd_max_train_bytes=0;parallel_threads=1;max_compressed_bytes_per_kb=896;checksum=false;max_dict_bytes=0;strategy=0;max_dict_buffer_bytes=0;level=32767;window_bits=-14;} + hard_pending_compaction_bytes_limit=274877906944 + blob_file_size=268435456 + periodic_compaction_seconds=2592000 + paranoid_file_checks=false + experimental_mempurge_threshold=0.000000 + memtable_prefix_bloom_size_ratio=0.000000 + max_bytes_for_level_base=268435456 + max_sequential_skip_in_iterations=8 + report_bg_io_stats=false + sst_partitioner_factory=nullptr + compaction_pri=kMinOverlappingRatio + compaction_style=kCompactionStyleLevel + compaction_filter_factory=nullptr + compaction_filter=nullptr + memtable_factory=SkipListFactory + comparator=leveldb.BytewiseComparator + bloom_locality=0 + min_write_buffer_number_to_merge=1 + table_factory=BlockBasedTable + max_write_buffer_size_to_maintain=0 + max_write_buffer_number_to_maintain=0 + optimize_filters_for_hits=false + default_temperature=kUnknown + preserve_internal_time_seconds=0 + force_consistency_checks=true + merge_operator={id=StringAppendTESTOperator;delimiter=,;} + num_levels=7 + level_compaction_dynamic_file_size=true + memtable_insert_with_hint_prefix_extractor=nullptr + level_compaction_dynamic_level_bytes=false + persist_user_defined_timestamps=true + preclude_last_level_data_seconds=0 + inplace_update_support=false + +[TableOptions/BlockBasedTable "_timer_state/processing_user-timers"] + num_file_reads_for_auto_readahead=2 + metadata_cache_options={unpartitioned_pinning=kFallback;partition_pinning=kFallback;top_level_index_pinning=kFallback;} + read_amp_bytes_per_bit=0 + verify_compression=false + format_version=5 + optimize_filters_for_memory=false + partition_filters=false + detect_filter_construct_corruption=false + initial_auto_readahead_size=8192 + max_auto_readahead_size=262144 + enable_index_compression=true + checksum=kXXH3 + index_block_restart_interval=1 + pin_top_level_index_and_filter=true + block_align=false + block_size=4096 + index_type=kBinarySearch + filter_policy=nullptr + metadata_block_size=4096 + no_block_cache=false + index_shortening=kShortenSeparators + whole_key_filtering=true + block_size_deviation=10 + data_block_index_type=kDataBlockBinarySearch + data_block_hash_table_util_ratio=0.750000 + cache_index_and_filter_blocks=true + prepopulate_block_cache=kDisable + block_restart_interval=16 + pin_l0_filter_and_index_blocks_in_cache=true + cache_index_and_filter_blocks_with_high_priority=true + flush_block_policy_factory=FlushBlockBySizePolicyFactory + + +[CFOptions "_timer_state/event_user-timers"] + bottommost_file_compaction_delay=0 + memtable_protection_bytes_per_key=0 + compression_per_level=kSnappyCompression + bottommost_compression=kDisableCompressionOption + sample_for_compression=0 + blob_garbage_collection_age_cutoff=0.250000 + blob_compression_type=kNoCompression + prepopulate_blob_cache=kDisable + blob_compaction_readahead_size=0 + level0_stop_writes_trigger=36 + min_blob_size=0 + last_level_temperature=kUnknown + compaction_options_universal={allow_trivial_move=false;stop_style=kCompactionStopStyleTotalSize;min_merge_width=2;compression_size_percent=-1;max_size_amplification_percent=200;incremental=false;max_merge_width=4294967295;size_ratio=1;} + target_file_size_base=67108864 + ignore_max_compaction_bytes_for_input=true + memtable_whole_key_filtering=false + blob_file_starting_level=0 + soft_pending_compaction_bytes_limit=68719476736 + max_write_buffer_number=2 + ttl=2592000 + compaction_options_fifo={file_temperature_age_thresholds=;allow_compaction=false;age_for_warm=0;max_table_files_size=1073741824;} + check_flush_compaction_key_order=true + memtable_huge_page_size=0 + max_successive_merges=0 + inplace_update_num_locks=10000 + enable_blob_garbage_collection=false + arena_block_size=1048576 + bottommost_compression_opts={use_zstd_dict_trainer=true;enabled=false;zstd_max_train_bytes=0;parallel_threads=1;max_compressed_bytes_per_kb=896;checksum=false;max_dict_bytes=0;strategy=0;max_dict_buffer_bytes=0;level=32767;window_bits=-14;} + target_file_size_multiplier=1 + max_bytes_for_level_multiplier_additional=1:1:1:1:1:1:1 + blob_garbage_collection_force_threshold=1.000000 + enable_blob_files=false + level0_slowdown_writes_trigger=20 + compression=kSnappyCompression + level0_file_num_compaction_trigger=4 + block_protection_bytes_per_key=0 + prefix_extractor=nullptr + max_bytes_for_level_multiplier=10.000000 + write_buffer_size=67108864 + disable_auto_compactions=false + max_compaction_bytes=1677721600 + memtable_max_range_deletions=0 + compression_opts={use_zstd_dict_trainer=true;enabled=false;zstd_max_train_bytes=0;parallel_threads=1;max_compressed_bytes_per_kb=896;checksum=false;max_dict_bytes=0;strategy=0;max_dict_buffer_bytes=0;level=32767;window_bits=-14;} + hard_pending_compaction_bytes_limit=274877906944 + blob_file_size=268435456 + periodic_compaction_seconds=2592000 + paranoid_file_checks=false + experimental_mempurge_threshold=0.000000 + memtable_prefix_bloom_size_ratio=0.000000 + max_bytes_for_level_base=268435456 + max_sequential_skip_in_iterations=8 + report_bg_io_stats=false + sst_partitioner_factory=nullptr + compaction_pri=kMinOverlappingRatio + compaction_style=kCompactionStyleLevel + compaction_filter_factory=nullptr + compaction_filter=nullptr + memtable_factory=SkipListFactory + comparator=leveldb.BytewiseComparator + bloom_locality=0 + min_write_buffer_number_to_merge=1 + table_factory=BlockBasedTable + max_write_buffer_size_to_maintain=0 + max_write_buffer_number_to_maintain=0 + optimize_filters_for_hits=false + default_temperature=kUnknown + preserve_internal_time_seconds=0 + force_consistency_checks=true + merge_operator={id=StringAppendTESTOperator;delimiter=,;} + num_levels=7 + level_compaction_dynamic_file_size=true + memtable_insert_with_hint_prefix_extractor=nullptr + level_compaction_dynamic_level_bytes=false + persist_user_defined_timestamps=true + preclude_last_level_data_seconds=0 + inplace_update_support=false + +[TableOptions/BlockBasedTable "_timer_state/event_user-timers"] + num_file_reads_for_auto_readahead=2 + metadata_cache_options={unpartitioned_pinning=kFallback;partition_pinning=kFallback;top_level_index_pinning=kFallback;} + read_amp_bytes_per_bit=0 + verify_compression=false + format_version=5 + optimize_filters_for_memory=false + partition_filters=false + detect_filter_construct_corruption=false + initial_auto_readahead_size=8192 + max_auto_readahead_size=262144 + enable_index_compression=true + checksum=kXXH3 + index_block_restart_interval=1 + pin_top_level_index_and_filter=true + block_align=false + block_size=4096 + index_type=kBinarySearch + filter_policy=nullptr + metadata_block_size=4096 + no_block_cache=false + index_shortening=kShortenSeparators + whole_key_filtering=true + block_size_deviation=10 + data_block_index_type=kDataBlockBinarySearch + data_block_hash_table_util_ratio=0.750000 + cache_index_and_filter_blocks=true + prepopulate_block_cache=kDisable + block_restart_interval=16 + pin_l0_filter_and_index_blocks_in_cache=true + cache_index_and_filter_blocks_with_high_priority=true + flush_block_policy_factory=FlushBlockBySizePolicyFactory + diff --git a/flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-checkpoint/36bfc42a-6d2b-4a1c-bcc7-016cd97900ad b/flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-checkpoint/36bfc42a-6d2b-4a1c-bcc7-016cd97900ad new file mode 100644 index 00000000000000..aa5bb8ea50905a --- /dev/null +++ b/flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-checkpoint/36bfc42a-6d2b-4a1c-bcc7-016cd97900ad @@ -0,0 +1 @@ +MANIFEST-000005 diff --git a/flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-checkpoint/401683f2-6977-4cde-9a24-2aa6cc363d4a b/flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-checkpoint/401683f2-6977-4cde-9a24-2aa6cc363d4a new file mode 100644 index 00000000000000..aa5bb8ea50905a --- /dev/null +++ b/flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-checkpoint/401683f2-6977-4cde-9a24-2aa6cc363d4a @@ -0,0 +1 @@ +MANIFEST-000005 diff --git a/flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-checkpoint/432949de-9ad7-4ee6-a83b-961c162df0fb b/flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-checkpoint/432949de-9ad7-4ee6-a83b-961c162df0fb new file mode 100644 index 0000000000000000000000000000000000000000..966ef8e59b646540067755e3a0a2ae467e27cca1 GIT binary patch literal 282 zcmZ9Ev1-FG5QZ-;>C~ZJIs^(1WUb!8C4vZ&I7o7bE=F;$wumhm=`y5GUnSr`G927} z-~S%~JONDLIr?L$@gtHUgflr$R_wUUbs;OIbIq%zP+E%5Qj20+ZHgs_X}L}NCH(T0 zuS;GjE=9f;-&`j80NRI!nZeX8vfs|SLpm(0ecyY>=rrJwY!}(yL}ZGBb&bMcO=tfw zEbf7FW{9n)^!X9sb%g=5J!U__G~UJe+X#A}#7Ji&Jt1W`=6y8OVlt61(zW&v${$w; literal 0 HcmV?d00001 diff --git a/flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-checkpoint/4a6a884b-1027-4697-a39b-56cc7a1a948e b/flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-checkpoint/4a6a884b-1027-4697-a39b-56cc7a1a948e new file mode 100644 index 0000000000000000000000000000000000000000..a7cffe07e97ea8f32df7b00c3ac885146bad8bee GIT binary patch literal 770 zcmeH@y-EX75QQf(*a;TaHc9LF3Z~d1ut>=23O37i9XA*E{xCBu=nMN4f_HBdmS7{; zIoU3aa{KCu= z#lpbI#K6MvM@Q`^8v`RJ12Y>7!}a*3MgI7;GqEspurQopWIV~J9AA=|n_3iKT#{Il ys$Wo)pPX7;oSBy%Us{}6qzjfS2HBQ*R`Hb=K~uRvrZSymltVEU=#9J*bOQmd@Jj*! literal 0 HcmV?d00001 diff --git a/flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-checkpoint/58138011-d05c-491a-8f7d-72e233a73ab1 b/flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-checkpoint/58138011-d05c-491a-8f7d-72e233a73ab1 new file mode 100644 index 0000000000000000000000000000000000000000..0785704387c0ddbf67d7910eb632cf74e37d6936 GIT binary patch literal 237 zcmZS8)^KKEU^I2G?@(Z1WR%KDElbTwNz!wwEJ-cTEKYUK&n-wSN-W7Q>U3aa{KCu= z#lpbI#K6MvM@Q`^8v`RJ12Y>7!}a*3MgI7;GqEspurQopWIV~J9AA=|n_3iKT#{Il ys$Wo)pPX7;oSBy%Us{}6qzjfS2HBQ*R`Hb=K~uRvrZSymltVEU=#9J*bOQmd@Jj*! literal 0 HcmV?d00001 diff --git a/flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-checkpoint/5b450560-72ea-4daf-8056-faae820d3245 b/flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-checkpoint/5b450560-72ea-4daf-8056-faae820d3245 new file mode 100644 index 0000000000000000000000000000000000000000..89e40fd41805fd1170a58f8dbe0d1ac7a4a47abc GIT binary patch literal 705 zcmdT?Jx{|h5WTnvi3PzwU|_Aq$1iY+2aA9!+eLyUa)W6t(l~O=0KXnPO^1Yufq}Q& zy(iy2>74=K7$Ojyuf5Z+mF~j43p$wjO)mpvaKV>U5XD6)6;ZUznN)%;R*Lb*@`2|R zP8Ncb{EkS~51l=cVns_y1tSG}p`urp&Tp`8b+tA4t+vg3BoJP12fz`! lilOvCDV~H3rSFu0(Cxm7w~KFwep<3YI8-$7Lrt>@vu{x#xaa@? literal 0 HcmV?d00001 diff --git a/flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-checkpoint/643281f6-6893-4b63-8d07-01493527f163 b/flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-checkpoint/643281f6-6893-4b63-8d07-01493527f163 new file mode 100644 index 0000000000000000000000000000000000000000..1aded13f6e4b64b595d56ab025bef35589f5f883 GIT binary patch literal 347 zcmb7-v2MaJ5QYzfkh-Aq1`J)XN_hg)c(6z@vP~trL?$(05#q=;1AY2h5e#ADpZ@z! zcOL)@A*Bc7op<`T)FDno)X_}m38Qv3;cF_0;-Zj>C|YDpD!~>T#rUfD;u(dPh2SLn zBvQ3Uuiqr!&_YtdNX~w!XsL4kfOVtGqrv;i)~7UBT)Okw)i_=obBVSJc&CHGGJ0Dd zr14f)_RsjYM<8q6grke;b00=ax_z{*pRnbw7m&jp^sbZqxnA< CLtVxI literal 0 HcmV?d00001 diff --git a/flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-checkpoint/65449348-b3e4-4b73-b59c-2e5e3b930ba1 b/flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-checkpoint/65449348-b3e4-4b73-b59c-2e5e3b930ba1 new file mode 100644 index 0000000000000000000000000000000000000000..0785704387c0ddbf67d7910eb632cf74e37d6936 GIT binary patch literal 237 zcmZS8)^KKEU^I2G?@(Z1WR%KDElbTwNz!wwEJ-cTEKYUK&n-wSN-W7Q>U3aa{KCu= z#lpbI#K6MvM@Q`^8v`RJ12Y>7!}a*3MgI7;GqEspurQopWIV~J9AA=|n_3iKT#{Il ys$Wo)pPX7;oSBy%Us{}6qzjfS2HBQ*R`Hb=K~uRvrZSymltVEU=#9J*bOQmd@Jj*! literal 0 HcmV?d00001 diff --git a/flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-checkpoint/6bf4774f-25b1-4059-b557-07b2f6dfb820 b/flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-checkpoint/6bf4774f-25b1-4059-b557-07b2f6dfb820 new file mode 100644 index 0000000000000000000000000000000000000000..5e924258b13ca8ebcaf30d5c62affc8f8894615f GIT binary patch literal 293 zcmZ9^v1-FG5P;!p1D!IYONT(gfvnX#xI_?v69-A@(8Vb3#TK7xYP(hfJ= z_j3mTPXG@vjs6sBe2ZiV;U>4q${m-vE@h>3u6eZ*N=xy+*P`53n{vfrrgnwUzk%QH zW*>R6=au48UU%@oq#l_1Ay-#7(`KV{4>`!?e3$>U^B#iWPb_Hq; BT5|vZ literal 0 HcmV?d00001 diff --git a/flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-checkpoint/6d64adea-4d82-481f-a74b-2387d20fe413 b/flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-checkpoint/6d64adea-4d82-481f-a74b-2387d20fe413 new file mode 100644 index 00000000000000..aa5bb8ea50905a --- /dev/null +++ b/flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-checkpoint/6d64adea-4d82-481f-a74b-2387d20fe413 @@ -0,0 +1 @@ +MANIFEST-000005 diff --git a/flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-checkpoint/6da281da-a137-4bb9-a970-865d55de12bb b/flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-checkpoint/6da281da-a137-4bb9-a970-865d55de12bb new file mode 100644 index 00000000000000..aa5bb8ea50905a --- /dev/null +++ b/flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-checkpoint/6da281da-a137-4bb9-a970-865d55de12bb @@ -0,0 +1 @@ +MANIFEST-000005 diff --git a/flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-checkpoint/769640d8-9e47-445e-bfab-6d9584ed4a5c b/flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-checkpoint/769640d8-9e47-445e-bfab-6d9584ed4a5c new file mode 100644 index 0000000000000000000000000000000000000000..966ef8e59b646540067755e3a0a2ae467e27cca1 GIT binary patch literal 282 zcmZ9Ev1-FG5QZ-;>C~ZJIs^(1WUb!8C4vZ&I7o7bE=F;$wumhm=`y5GUnSr`G927} z-~S%~JONDLIr?L$@gtHUgflr$R_wUUbs;OIbIq%zP+E%5Qj20+ZHgs_X}L}NCH(T0 zuS;GjE=9f;-&`j80NRI!nZeX8vfs|SLpm(0ecyY>=rrJwY!}(yL}ZGBb&bMcO=tfw zEbf7FW{9n)^!X9sb%g=5J!U__G~UJe+X#A}#7Ji&Jt1W`=6y8OVlt61(zW&v${$w; literal 0 HcmV?d00001 diff --git a/flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-checkpoint/769c6c3f-47ff-4428-96a0-087ddf701f40 b/flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-checkpoint/769c6c3f-47ff-4428-96a0-087ddf701f40 new file mode 100644 index 00000000000000..ad0dfcf758edc5 --- /dev/null +++ b/flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-checkpoint/769c6c3f-47ff-4428-96a0-087ddf701f40 @@ -0,0 +1,429 @@ +# This is a RocksDB option file. +# +# For detailed file format spec, please refer to the example file +# in examples/rocksdb_option_file_example.ini +# + +[Version] + rocksdb_version=8.10.0 + options_file_version=1.1 + +[DBOptions] + max_background_flushes=-1 + compaction_readahead_size=2097152 + strict_bytes_per_sync=false + wal_bytes_per_sync=0 + max_open_files=-1 + stats_history_buffer_size=1048576 + max_total_wal_size=0 + stats_persist_period_sec=600 + stats_dump_period_sec=0 + avoid_flush_during_shutdown=true + max_subcompactions=1 + bytes_per_sync=0 + delayed_write_rate=16777216 + max_background_compactions=-1 + max_background_jobs=2 + delete_obsolete_files_period_micros=21600000000 + writable_file_max_buffer_size=1048576 + file_checksum_gen_factory=nullptr + allow_data_in_errors=false + max_bgerror_resume_count=2147483647 + best_efforts_recovery=false + write_dbid_to_manifest=false + atomic_flush=false + manual_wal_flush=false + two_write_queues=false + avoid_flush_during_recovery=false + dump_malloc_stats=false + info_log_level=INFO_LEVEL + write_thread_slow_yield_usec=3 + unordered_write=false + allow_ingest_behind=false + fail_if_options_file_error=true + persist_stats_to_disk=false + WAL_ttl_seconds=0 + bgerror_resume_retry_interval=1000000 + allow_concurrent_memtable_write=true + paranoid_checks=true + WAL_size_limit_MB=0 + lowest_used_cache_tier=kNonVolatileBlockTier + keep_log_file_num=4 + table_cache_numshardbits=6 + max_file_opening_threads=16 + random_access_max_buffer_size=1048576 + log_readahead_size=0 + enable_pipelined_write=false + wal_recovery_mode=kPointInTimeRecovery + db_write_buffer_size=0 + allow_2pc=false + skip_checking_sst_file_sizes_on_db_open=false + skip_stats_update_on_db_open=false + recycle_log_file_num=0 + db_host_id=__hostname__ + track_and_verify_wals_in_manifest=false + use_fsync=false + wal_compression=kNoCompression + compaction_verify_record_count=true + error_if_exists=false + manifest_preallocation_size=4194304 + is_fd_close_on_exec=true + enable_write_thread_adaptive_yield=true + enable_thread_tracking=false + avoid_unnecessary_blocking_io=false + allow_fallocate=true + max_log_file_size=26214400 + advise_random_on_open=true + create_missing_column_families=false + max_write_batch_group_size_bytes=1048576 + use_adaptive_mutex=false + wal_filter=nullptr + create_if_missing=true + enforce_single_del_contracts=true + allow_mmap_writes=false + access_hint_on_compaction_start=NORMAL + verify_sst_unique_id_in_manifest=true + log_file_time_to_roll=0 + use_direct_io_for_flush_and_compaction=false + flush_verify_memtable_count=true + max_manifest_file_size=1073741824 + write_thread_max_yield_usec=100 + use_direct_reads=false + allow_mmap_reads=false + + +[CFOptions "default"] + bottommost_file_compaction_delay=0 + memtable_protection_bytes_per_key=0 + compression_per_level=kSnappyCompression + bottommost_compression=kDisableCompressionOption + sample_for_compression=0 + blob_garbage_collection_age_cutoff=0.250000 + blob_compression_type=kNoCompression + prepopulate_blob_cache=kDisable + blob_compaction_readahead_size=0 + level0_stop_writes_trigger=36 + min_blob_size=0 + last_level_temperature=kUnknown + compaction_options_universal={allow_trivial_move=false;stop_style=kCompactionStopStyleTotalSize;min_merge_width=2;compression_size_percent=-1;max_size_amplification_percent=200;incremental=false;max_merge_width=4294967295;size_ratio=1;} + target_file_size_base=67108864 + ignore_max_compaction_bytes_for_input=true + memtable_whole_key_filtering=false + blob_file_starting_level=0 + soft_pending_compaction_bytes_limit=68719476736 + max_write_buffer_number=2 + ttl=2592000 + compaction_options_fifo={file_temperature_age_thresholds=;allow_compaction=false;age_for_warm=0;max_table_files_size=1073741824;} + check_flush_compaction_key_order=true + memtable_huge_page_size=0 + max_successive_merges=0 + inplace_update_num_locks=10000 + enable_blob_garbage_collection=false + arena_block_size=1048576 + bottommost_compression_opts={use_zstd_dict_trainer=true;enabled=false;zstd_max_train_bytes=0;parallel_threads=1;max_compressed_bytes_per_kb=896;checksum=false;max_dict_bytes=0;strategy=0;max_dict_buffer_bytes=0;level=32767;window_bits=-14;} + target_file_size_multiplier=1 + max_bytes_for_level_multiplier_additional=1:1:1:1:1:1:1 + blob_garbage_collection_force_threshold=1.000000 + enable_blob_files=false + level0_slowdown_writes_trigger=20 + compression=kSnappyCompression + level0_file_num_compaction_trigger=4 + block_protection_bytes_per_key=0 + prefix_extractor=nullptr + max_bytes_for_level_multiplier=10.000000 + write_buffer_size=67108864 + disable_auto_compactions=false + max_compaction_bytes=1677721600 + memtable_max_range_deletions=0 + compression_opts={use_zstd_dict_trainer=true;enabled=false;zstd_max_train_bytes=0;parallel_threads=1;max_compressed_bytes_per_kb=896;checksum=false;max_dict_bytes=0;strategy=0;max_dict_buffer_bytes=0;level=32767;window_bits=-14;} + hard_pending_compaction_bytes_limit=274877906944 + blob_file_size=268435456 + periodic_compaction_seconds=2592000 + paranoid_file_checks=false + experimental_mempurge_threshold=0.000000 + memtable_prefix_bloom_size_ratio=0.000000 + max_bytes_for_level_base=268435456 + max_sequential_skip_in_iterations=8 + report_bg_io_stats=false + sst_partitioner_factory=nullptr + compaction_pri=kMinOverlappingRatio + compaction_style=kCompactionStyleLevel + compaction_filter_factory=nullptr + compaction_filter=nullptr + memtable_factory=SkipListFactory + comparator=leveldb.BytewiseComparator + bloom_locality=0 + min_write_buffer_number_to_merge=1 + table_factory=BlockBasedTable + max_write_buffer_size_to_maintain=0 + max_write_buffer_number_to_maintain=0 + optimize_filters_for_hits=false + default_temperature=kUnknown + preserve_internal_time_seconds=0 + force_consistency_checks=true + merge_operator={id=StringAppendTESTOperator;delimiter=,;} + num_levels=7 + level_compaction_dynamic_file_size=true + memtable_insert_with_hint_prefix_extractor=nullptr + level_compaction_dynamic_level_bytes=false + persist_user_defined_timestamps=true + preclude_last_level_data_seconds=0 + inplace_update_support=false + +[TableOptions/BlockBasedTable "default"] + num_file_reads_for_auto_readahead=2 + metadata_cache_options={unpartitioned_pinning=kFallback;partition_pinning=kFallback;top_level_index_pinning=kFallback;} + read_amp_bytes_per_bit=0 + verify_compression=false + format_version=5 + optimize_filters_for_memory=false + partition_filters=false + detect_filter_construct_corruption=false + initial_auto_readahead_size=8192 + max_auto_readahead_size=262144 + enable_index_compression=true + checksum=kXXH3 + index_block_restart_interval=1 + pin_top_level_index_and_filter=true + block_align=false + block_size=4096 + index_type=kBinarySearch + filter_policy=nullptr + metadata_block_size=4096 + no_block_cache=false + index_shortening=kShortenSeparators + whole_key_filtering=true + block_size_deviation=10 + data_block_index_type=kDataBlockBinarySearch + data_block_hash_table_util_ratio=0.750000 + cache_index_and_filter_blocks=true + prepopulate_block_cache=kDisable + block_restart_interval=16 + pin_l0_filter_and_index_blocks_in_cache=true + cache_index_and_filter_blocks_with_high_priority=true + flush_block_policy_factory=FlushBlockBySizePolicyFactory + + +[CFOptions "_timer_state/processing_user-timers"] + bottommost_file_compaction_delay=0 + memtable_protection_bytes_per_key=0 + compression_per_level=kSnappyCompression + bottommost_compression=kDisableCompressionOption + sample_for_compression=0 + blob_garbage_collection_age_cutoff=0.250000 + blob_compression_type=kNoCompression + prepopulate_blob_cache=kDisable + blob_compaction_readahead_size=0 + level0_stop_writes_trigger=36 + min_blob_size=0 + last_level_temperature=kUnknown + compaction_options_universal={allow_trivial_move=false;stop_style=kCompactionStopStyleTotalSize;min_merge_width=2;compression_size_percent=-1;max_size_amplification_percent=200;incremental=false;max_merge_width=4294967295;size_ratio=1;} + target_file_size_base=67108864 + ignore_max_compaction_bytes_for_input=true + memtable_whole_key_filtering=false + blob_file_starting_level=0 + soft_pending_compaction_bytes_limit=68719476736 + max_write_buffer_number=2 + ttl=2592000 + compaction_options_fifo={file_temperature_age_thresholds=;allow_compaction=false;age_for_warm=0;max_table_files_size=1073741824;} + check_flush_compaction_key_order=true + memtable_huge_page_size=0 + max_successive_merges=0 + inplace_update_num_locks=10000 + enable_blob_garbage_collection=false + arena_block_size=1048576 + bottommost_compression_opts={use_zstd_dict_trainer=true;enabled=false;zstd_max_train_bytes=0;parallel_threads=1;max_compressed_bytes_per_kb=896;checksum=false;max_dict_bytes=0;strategy=0;max_dict_buffer_bytes=0;level=32767;window_bits=-14;} + target_file_size_multiplier=1 + max_bytes_for_level_multiplier_additional=1:1:1:1:1:1:1 + blob_garbage_collection_force_threshold=1.000000 + enable_blob_files=false + level0_slowdown_writes_trigger=20 + compression=kSnappyCompression + level0_file_num_compaction_trigger=4 + block_protection_bytes_per_key=0 + prefix_extractor=nullptr + max_bytes_for_level_multiplier=10.000000 + write_buffer_size=67108864 + disable_auto_compactions=false + max_compaction_bytes=1677721600 + memtable_max_range_deletions=0 + compression_opts={use_zstd_dict_trainer=true;enabled=false;zstd_max_train_bytes=0;parallel_threads=1;max_compressed_bytes_per_kb=896;checksum=false;max_dict_bytes=0;strategy=0;max_dict_buffer_bytes=0;level=32767;window_bits=-14;} + hard_pending_compaction_bytes_limit=274877906944 + blob_file_size=268435456 + periodic_compaction_seconds=2592000 + paranoid_file_checks=false + experimental_mempurge_threshold=0.000000 + memtable_prefix_bloom_size_ratio=0.000000 + max_bytes_for_level_base=268435456 + max_sequential_skip_in_iterations=8 + report_bg_io_stats=false + sst_partitioner_factory=nullptr + compaction_pri=kMinOverlappingRatio + compaction_style=kCompactionStyleLevel + compaction_filter_factory=nullptr + compaction_filter=nullptr + memtable_factory=SkipListFactory + comparator=leveldb.BytewiseComparator + bloom_locality=0 + min_write_buffer_number_to_merge=1 + table_factory=BlockBasedTable + max_write_buffer_size_to_maintain=0 + max_write_buffer_number_to_maintain=0 + optimize_filters_for_hits=false + default_temperature=kUnknown + preserve_internal_time_seconds=0 + force_consistency_checks=true + merge_operator={id=StringAppendTESTOperator;delimiter=,;} + num_levels=7 + level_compaction_dynamic_file_size=true + memtable_insert_with_hint_prefix_extractor=nullptr + level_compaction_dynamic_level_bytes=false + persist_user_defined_timestamps=true + preclude_last_level_data_seconds=0 + inplace_update_support=false + +[TableOptions/BlockBasedTable "_timer_state/processing_user-timers"] + num_file_reads_for_auto_readahead=2 + metadata_cache_options={unpartitioned_pinning=kFallback;partition_pinning=kFallback;top_level_index_pinning=kFallback;} + read_amp_bytes_per_bit=0 + verify_compression=false + format_version=5 + optimize_filters_for_memory=false + partition_filters=false + detect_filter_construct_corruption=false + initial_auto_readahead_size=8192 + max_auto_readahead_size=262144 + enable_index_compression=true + checksum=kXXH3 + index_block_restart_interval=1 + pin_top_level_index_and_filter=true + block_align=false + block_size=4096 + index_type=kBinarySearch + filter_policy=nullptr + metadata_block_size=4096 + no_block_cache=false + index_shortening=kShortenSeparators + whole_key_filtering=true + block_size_deviation=10 + data_block_index_type=kDataBlockBinarySearch + data_block_hash_table_util_ratio=0.750000 + cache_index_and_filter_blocks=true + prepopulate_block_cache=kDisable + block_restart_interval=16 + pin_l0_filter_and_index_blocks_in_cache=true + cache_index_and_filter_blocks_with_high_priority=true + flush_block_policy_factory=FlushBlockBySizePolicyFactory + + +[CFOptions "_timer_state/event_user-timers"] + bottommost_file_compaction_delay=0 + memtable_protection_bytes_per_key=0 + compression_per_level=kSnappyCompression + bottommost_compression=kDisableCompressionOption + sample_for_compression=0 + blob_garbage_collection_age_cutoff=0.250000 + blob_compression_type=kNoCompression + prepopulate_blob_cache=kDisable + blob_compaction_readahead_size=0 + level0_stop_writes_trigger=36 + min_blob_size=0 + last_level_temperature=kUnknown + compaction_options_universal={allow_trivial_move=false;stop_style=kCompactionStopStyleTotalSize;min_merge_width=2;compression_size_percent=-1;max_size_amplification_percent=200;incremental=false;max_merge_width=4294967295;size_ratio=1;} + target_file_size_base=67108864 + ignore_max_compaction_bytes_for_input=true + memtable_whole_key_filtering=false + blob_file_starting_level=0 + soft_pending_compaction_bytes_limit=68719476736 + max_write_buffer_number=2 + ttl=2592000 + compaction_options_fifo={file_temperature_age_thresholds=;allow_compaction=false;age_for_warm=0;max_table_files_size=1073741824;} + check_flush_compaction_key_order=true + memtable_huge_page_size=0 + max_successive_merges=0 + inplace_update_num_locks=10000 + enable_blob_garbage_collection=false + arena_block_size=1048576 + bottommost_compression_opts={use_zstd_dict_trainer=true;enabled=false;zstd_max_train_bytes=0;parallel_threads=1;max_compressed_bytes_per_kb=896;checksum=false;max_dict_bytes=0;strategy=0;max_dict_buffer_bytes=0;level=32767;window_bits=-14;} + target_file_size_multiplier=1 + max_bytes_for_level_multiplier_additional=1:1:1:1:1:1:1 + blob_garbage_collection_force_threshold=1.000000 + enable_blob_files=false + level0_slowdown_writes_trigger=20 + compression=kSnappyCompression + level0_file_num_compaction_trigger=4 + block_protection_bytes_per_key=0 + prefix_extractor=nullptr + max_bytes_for_level_multiplier=10.000000 + write_buffer_size=67108864 + disable_auto_compactions=false + max_compaction_bytes=1677721600 + memtable_max_range_deletions=0 + compression_opts={use_zstd_dict_trainer=true;enabled=false;zstd_max_train_bytes=0;parallel_threads=1;max_compressed_bytes_per_kb=896;checksum=false;max_dict_bytes=0;strategy=0;max_dict_buffer_bytes=0;level=32767;window_bits=-14;} + hard_pending_compaction_bytes_limit=274877906944 + blob_file_size=268435456 + periodic_compaction_seconds=2592000 + paranoid_file_checks=false + experimental_mempurge_threshold=0.000000 + memtable_prefix_bloom_size_ratio=0.000000 + max_bytes_for_level_base=268435456 + max_sequential_skip_in_iterations=8 + report_bg_io_stats=false + sst_partitioner_factory=nullptr + compaction_pri=kMinOverlappingRatio + compaction_style=kCompactionStyleLevel + compaction_filter_factory=nullptr + compaction_filter=nullptr + memtable_factory=SkipListFactory + comparator=leveldb.BytewiseComparator + bloom_locality=0 + min_write_buffer_number_to_merge=1 + table_factory=BlockBasedTable + max_write_buffer_size_to_maintain=0 + max_write_buffer_number_to_maintain=0 + optimize_filters_for_hits=false + default_temperature=kUnknown + preserve_internal_time_seconds=0 + force_consistency_checks=true + merge_operator={id=StringAppendTESTOperator;delimiter=,;} + num_levels=7 + level_compaction_dynamic_file_size=true + memtable_insert_with_hint_prefix_extractor=nullptr + level_compaction_dynamic_level_bytes=false + persist_user_defined_timestamps=true + preclude_last_level_data_seconds=0 + inplace_update_support=false + +[TableOptions/BlockBasedTable "_timer_state/event_user-timers"] + num_file_reads_for_auto_readahead=2 + metadata_cache_options={unpartitioned_pinning=kFallback;partition_pinning=kFallback;top_level_index_pinning=kFallback;} + read_amp_bytes_per_bit=0 + verify_compression=false + format_version=5 + optimize_filters_for_memory=false + partition_filters=false + detect_filter_construct_corruption=false + initial_auto_readahead_size=8192 + max_auto_readahead_size=262144 + enable_index_compression=true + checksum=kXXH3 + index_block_restart_interval=1 + pin_top_level_index_and_filter=true + block_align=false + block_size=4096 + index_type=kBinarySearch + filter_policy=nullptr + metadata_block_size=4096 + no_block_cache=false + index_shortening=kShortenSeparators + whole_key_filtering=true + block_size_deviation=10 + data_block_index_type=kDataBlockBinarySearch + data_block_hash_table_util_ratio=0.750000 + cache_index_and_filter_blocks=true + prepopulate_block_cache=kDisable + block_restart_interval=16 + pin_l0_filter_and_index_blocks_in_cache=true + cache_index_and_filter_blocks_with_high_priority=true + flush_block_policy_factory=FlushBlockBySizePolicyFactory + diff --git a/flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-checkpoint/78d26e5c-c70a-432b-b78b-2c14a5f4cb7a b/flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-checkpoint/78d26e5c-c70a-432b-b78b-2c14a5f4cb7a new file mode 100644 index 00000000000000..ad0dfcf758edc5 --- /dev/null +++ b/flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-checkpoint/78d26e5c-c70a-432b-b78b-2c14a5f4cb7a @@ -0,0 +1,429 @@ +# This is a RocksDB option file. +# +# For detailed file format spec, please refer to the example file +# in examples/rocksdb_option_file_example.ini +# + +[Version] + rocksdb_version=8.10.0 + options_file_version=1.1 + +[DBOptions] + max_background_flushes=-1 + compaction_readahead_size=2097152 + strict_bytes_per_sync=false + wal_bytes_per_sync=0 + max_open_files=-1 + stats_history_buffer_size=1048576 + max_total_wal_size=0 + stats_persist_period_sec=600 + stats_dump_period_sec=0 + avoid_flush_during_shutdown=true + max_subcompactions=1 + bytes_per_sync=0 + delayed_write_rate=16777216 + max_background_compactions=-1 + max_background_jobs=2 + delete_obsolete_files_period_micros=21600000000 + writable_file_max_buffer_size=1048576 + file_checksum_gen_factory=nullptr + allow_data_in_errors=false + max_bgerror_resume_count=2147483647 + best_efforts_recovery=false + write_dbid_to_manifest=false + atomic_flush=false + manual_wal_flush=false + two_write_queues=false + avoid_flush_during_recovery=false + dump_malloc_stats=false + info_log_level=INFO_LEVEL + write_thread_slow_yield_usec=3 + unordered_write=false + allow_ingest_behind=false + fail_if_options_file_error=true + persist_stats_to_disk=false + WAL_ttl_seconds=0 + bgerror_resume_retry_interval=1000000 + allow_concurrent_memtable_write=true + paranoid_checks=true + WAL_size_limit_MB=0 + lowest_used_cache_tier=kNonVolatileBlockTier + keep_log_file_num=4 + table_cache_numshardbits=6 + max_file_opening_threads=16 + random_access_max_buffer_size=1048576 + log_readahead_size=0 + enable_pipelined_write=false + wal_recovery_mode=kPointInTimeRecovery + db_write_buffer_size=0 + allow_2pc=false + skip_checking_sst_file_sizes_on_db_open=false + skip_stats_update_on_db_open=false + recycle_log_file_num=0 + db_host_id=__hostname__ + track_and_verify_wals_in_manifest=false + use_fsync=false + wal_compression=kNoCompression + compaction_verify_record_count=true + error_if_exists=false + manifest_preallocation_size=4194304 + is_fd_close_on_exec=true + enable_write_thread_adaptive_yield=true + enable_thread_tracking=false + avoid_unnecessary_blocking_io=false + allow_fallocate=true + max_log_file_size=26214400 + advise_random_on_open=true + create_missing_column_families=false + max_write_batch_group_size_bytes=1048576 + use_adaptive_mutex=false + wal_filter=nullptr + create_if_missing=true + enforce_single_del_contracts=true + allow_mmap_writes=false + access_hint_on_compaction_start=NORMAL + verify_sst_unique_id_in_manifest=true + log_file_time_to_roll=0 + use_direct_io_for_flush_and_compaction=false + flush_verify_memtable_count=true + max_manifest_file_size=1073741824 + write_thread_max_yield_usec=100 + use_direct_reads=false + allow_mmap_reads=false + + +[CFOptions "default"] + bottommost_file_compaction_delay=0 + memtable_protection_bytes_per_key=0 + compression_per_level=kSnappyCompression + bottommost_compression=kDisableCompressionOption + sample_for_compression=0 + blob_garbage_collection_age_cutoff=0.250000 + blob_compression_type=kNoCompression + prepopulate_blob_cache=kDisable + blob_compaction_readahead_size=0 + level0_stop_writes_trigger=36 + min_blob_size=0 + last_level_temperature=kUnknown + compaction_options_universal={allow_trivial_move=false;stop_style=kCompactionStopStyleTotalSize;min_merge_width=2;compression_size_percent=-1;max_size_amplification_percent=200;incremental=false;max_merge_width=4294967295;size_ratio=1;} + target_file_size_base=67108864 + ignore_max_compaction_bytes_for_input=true + memtable_whole_key_filtering=false + blob_file_starting_level=0 + soft_pending_compaction_bytes_limit=68719476736 + max_write_buffer_number=2 + ttl=2592000 + compaction_options_fifo={file_temperature_age_thresholds=;allow_compaction=false;age_for_warm=0;max_table_files_size=1073741824;} + check_flush_compaction_key_order=true + memtable_huge_page_size=0 + max_successive_merges=0 + inplace_update_num_locks=10000 + enable_blob_garbage_collection=false + arena_block_size=1048576 + bottommost_compression_opts={use_zstd_dict_trainer=true;enabled=false;zstd_max_train_bytes=0;parallel_threads=1;max_compressed_bytes_per_kb=896;checksum=false;max_dict_bytes=0;strategy=0;max_dict_buffer_bytes=0;level=32767;window_bits=-14;} + target_file_size_multiplier=1 + max_bytes_for_level_multiplier_additional=1:1:1:1:1:1:1 + blob_garbage_collection_force_threshold=1.000000 + enable_blob_files=false + level0_slowdown_writes_trigger=20 + compression=kSnappyCompression + level0_file_num_compaction_trigger=4 + block_protection_bytes_per_key=0 + prefix_extractor=nullptr + max_bytes_for_level_multiplier=10.000000 + write_buffer_size=67108864 + disable_auto_compactions=false + max_compaction_bytes=1677721600 + memtable_max_range_deletions=0 + compression_opts={use_zstd_dict_trainer=true;enabled=false;zstd_max_train_bytes=0;parallel_threads=1;max_compressed_bytes_per_kb=896;checksum=false;max_dict_bytes=0;strategy=0;max_dict_buffer_bytes=0;level=32767;window_bits=-14;} + hard_pending_compaction_bytes_limit=274877906944 + blob_file_size=268435456 + periodic_compaction_seconds=2592000 + paranoid_file_checks=false + experimental_mempurge_threshold=0.000000 + memtable_prefix_bloom_size_ratio=0.000000 + max_bytes_for_level_base=268435456 + max_sequential_skip_in_iterations=8 + report_bg_io_stats=false + sst_partitioner_factory=nullptr + compaction_pri=kMinOverlappingRatio + compaction_style=kCompactionStyleLevel + compaction_filter_factory=nullptr + compaction_filter=nullptr + memtable_factory=SkipListFactory + comparator=leveldb.BytewiseComparator + bloom_locality=0 + min_write_buffer_number_to_merge=1 + table_factory=BlockBasedTable + max_write_buffer_size_to_maintain=0 + max_write_buffer_number_to_maintain=0 + optimize_filters_for_hits=false + default_temperature=kUnknown + preserve_internal_time_seconds=0 + force_consistency_checks=true + merge_operator={id=StringAppendTESTOperator;delimiter=,;} + num_levels=7 + level_compaction_dynamic_file_size=true + memtable_insert_with_hint_prefix_extractor=nullptr + level_compaction_dynamic_level_bytes=false + persist_user_defined_timestamps=true + preclude_last_level_data_seconds=0 + inplace_update_support=false + +[TableOptions/BlockBasedTable "default"] + num_file_reads_for_auto_readahead=2 + metadata_cache_options={unpartitioned_pinning=kFallback;partition_pinning=kFallback;top_level_index_pinning=kFallback;} + read_amp_bytes_per_bit=0 + verify_compression=false + format_version=5 + optimize_filters_for_memory=false + partition_filters=false + detect_filter_construct_corruption=false + initial_auto_readahead_size=8192 + max_auto_readahead_size=262144 + enable_index_compression=true + checksum=kXXH3 + index_block_restart_interval=1 + pin_top_level_index_and_filter=true + block_align=false + block_size=4096 + index_type=kBinarySearch + filter_policy=nullptr + metadata_block_size=4096 + no_block_cache=false + index_shortening=kShortenSeparators + whole_key_filtering=true + block_size_deviation=10 + data_block_index_type=kDataBlockBinarySearch + data_block_hash_table_util_ratio=0.750000 + cache_index_and_filter_blocks=true + prepopulate_block_cache=kDisable + block_restart_interval=16 + pin_l0_filter_and_index_blocks_in_cache=true + cache_index_and_filter_blocks_with_high_priority=true + flush_block_policy_factory=FlushBlockBySizePolicyFactory + + +[CFOptions "_timer_state/processing_user-timers"] + bottommost_file_compaction_delay=0 + memtable_protection_bytes_per_key=0 + compression_per_level=kSnappyCompression + bottommost_compression=kDisableCompressionOption + sample_for_compression=0 + blob_garbage_collection_age_cutoff=0.250000 + blob_compression_type=kNoCompression + prepopulate_blob_cache=kDisable + blob_compaction_readahead_size=0 + level0_stop_writes_trigger=36 + min_blob_size=0 + last_level_temperature=kUnknown + compaction_options_universal={allow_trivial_move=false;stop_style=kCompactionStopStyleTotalSize;min_merge_width=2;compression_size_percent=-1;max_size_amplification_percent=200;incremental=false;max_merge_width=4294967295;size_ratio=1;} + target_file_size_base=67108864 + ignore_max_compaction_bytes_for_input=true + memtable_whole_key_filtering=false + blob_file_starting_level=0 + soft_pending_compaction_bytes_limit=68719476736 + max_write_buffer_number=2 + ttl=2592000 + compaction_options_fifo={file_temperature_age_thresholds=;allow_compaction=false;age_for_warm=0;max_table_files_size=1073741824;} + check_flush_compaction_key_order=true + memtable_huge_page_size=0 + max_successive_merges=0 + inplace_update_num_locks=10000 + enable_blob_garbage_collection=false + arena_block_size=1048576 + bottommost_compression_opts={use_zstd_dict_trainer=true;enabled=false;zstd_max_train_bytes=0;parallel_threads=1;max_compressed_bytes_per_kb=896;checksum=false;max_dict_bytes=0;strategy=0;max_dict_buffer_bytes=0;level=32767;window_bits=-14;} + target_file_size_multiplier=1 + max_bytes_for_level_multiplier_additional=1:1:1:1:1:1:1 + blob_garbage_collection_force_threshold=1.000000 + enable_blob_files=false + level0_slowdown_writes_trigger=20 + compression=kSnappyCompression + level0_file_num_compaction_trigger=4 + block_protection_bytes_per_key=0 + prefix_extractor=nullptr + max_bytes_for_level_multiplier=10.000000 + write_buffer_size=67108864 + disable_auto_compactions=false + max_compaction_bytes=1677721600 + memtable_max_range_deletions=0 + compression_opts={use_zstd_dict_trainer=true;enabled=false;zstd_max_train_bytes=0;parallel_threads=1;max_compressed_bytes_per_kb=896;checksum=false;max_dict_bytes=0;strategy=0;max_dict_buffer_bytes=0;level=32767;window_bits=-14;} + hard_pending_compaction_bytes_limit=274877906944 + blob_file_size=268435456 + periodic_compaction_seconds=2592000 + paranoid_file_checks=false + experimental_mempurge_threshold=0.000000 + memtable_prefix_bloom_size_ratio=0.000000 + max_bytes_for_level_base=268435456 + max_sequential_skip_in_iterations=8 + report_bg_io_stats=false + sst_partitioner_factory=nullptr + compaction_pri=kMinOverlappingRatio + compaction_style=kCompactionStyleLevel + compaction_filter_factory=nullptr + compaction_filter=nullptr + memtable_factory=SkipListFactory + comparator=leveldb.BytewiseComparator + bloom_locality=0 + min_write_buffer_number_to_merge=1 + table_factory=BlockBasedTable + max_write_buffer_size_to_maintain=0 + max_write_buffer_number_to_maintain=0 + optimize_filters_for_hits=false + default_temperature=kUnknown + preserve_internal_time_seconds=0 + force_consistency_checks=true + merge_operator={id=StringAppendTESTOperator;delimiter=,;} + num_levels=7 + level_compaction_dynamic_file_size=true + memtable_insert_with_hint_prefix_extractor=nullptr + level_compaction_dynamic_level_bytes=false + persist_user_defined_timestamps=true + preclude_last_level_data_seconds=0 + inplace_update_support=false + +[TableOptions/BlockBasedTable "_timer_state/processing_user-timers"] + num_file_reads_for_auto_readahead=2 + metadata_cache_options={unpartitioned_pinning=kFallback;partition_pinning=kFallback;top_level_index_pinning=kFallback;} + read_amp_bytes_per_bit=0 + verify_compression=false + format_version=5 + optimize_filters_for_memory=false + partition_filters=false + detect_filter_construct_corruption=false + initial_auto_readahead_size=8192 + max_auto_readahead_size=262144 + enable_index_compression=true + checksum=kXXH3 + index_block_restart_interval=1 + pin_top_level_index_and_filter=true + block_align=false + block_size=4096 + index_type=kBinarySearch + filter_policy=nullptr + metadata_block_size=4096 + no_block_cache=false + index_shortening=kShortenSeparators + whole_key_filtering=true + block_size_deviation=10 + data_block_index_type=kDataBlockBinarySearch + data_block_hash_table_util_ratio=0.750000 + cache_index_and_filter_blocks=true + prepopulate_block_cache=kDisable + block_restart_interval=16 + pin_l0_filter_and_index_blocks_in_cache=true + cache_index_and_filter_blocks_with_high_priority=true + flush_block_policy_factory=FlushBlockBySizePolicyFactory + + +[CFOptions "_timer_state/event_user-timers"] + bottommost_file_compaction_delay=0 + memtable_protection_bytes_per_key=0 + compression_per_level=kSnappyCompression + bottommost_compression=kDisableCompressionOption + sample_for_compression=0 + blob_garbage_collection_age_cutoff=0.250000 + blob_compression_type=kNoCompression + prepopulate_blob_cache=kDisable + blob_compaction_readahead_size=0 + level0_stop_writes_trigger=36 + min_blob_size=0 + last_level_temperature=kUnknown + compaction_options_universal={allow_trivial_move=false;stop_style=kCompactionStopStyleTotalSize;min_merge_width=2;compression_size_percent=-1;max_size_amplification_percent=200;incremental=false;max_merge_width=4294967295;size_ratio=1;} + target_file_size_base=67108864 + ignore_max_compaction_bytes_for_input=true + memtable_whole_key_filtering=false + blob_file_starting_level=0 + soft_pending_compaction_bytes_limit=68719476736 + max_write_buffer_number=2 + ttl=2592000 + compaction_options_fifo={file_temperature_age_thresholds=;allow_compaction=false;age_for_warm=0;max_table_files_size=1073741824;} + check_flush_compaction_key_order=true + memtable_huge_page_size=0 + max_successive_merges=0 + inplace_update_num_locks=10000 + enable_blob_garbage_collection=false + arena_block_size=1048576 + bottommost_compression_opts={use_zstd_dict_trainer=true;enabled=false;zstd_max_train_bytes=0;parallel_threads=1;max_compressed_bytes_per_kb=896;checksum=false;max_dict_bytes=0;strategy=0;max_dict_buffer_bytes=0;level=32767;window_bits=-14;} + target_file_size_multiplier=1 + max_bytes_for_level_multiplier_additional=1:1:1:1:1:1:1 + blob_garbage_collection_force_threshold=1.000000 + enable_blob_files=false + level0_slowdown_writes_trigger=20 + compression=kSnappyCompression + level0_file_num_compaction_trigger=4 + block_protection_bytes_per_key=0 + prefix_extractor=nullptr + max_bytes_for_level_multiplier=10.000000 + write_buffer_size=67108864 + disable_auto_compactions=false + max_compaction_bytes=1677721600 + memtable_max_range_deletions=0 + compression_opts={use_zstd_dict_trainer=true;enabled=false;zstd_max_train_bytes=0;parallel_threads=1;max_compressed_bytes_per_kb=896;checksum=false;max_dict_bytes=0;strategy=0;max_dict_buffer_bytes=0;level=32767;window_bits=-14;} + hard_pending_compaction_bytes_limit=274877906944 + blob_file_size=268435456 + periodic_compaction_seconds=2592000 + paranoid_file_checks=false + experimental_mempurge_threshold=0.000000 + memtable_prefix_bloom_size_ratio=0.000000 + max_bytes_for_level_base=268435456 + max_sequential_skip_in_iterations=8 + report_bg_io_stats=false + sst_partitioner_factory=nullptr + compaction_pri=kMinOverlappingRatio + compaction_style=kCompactionStyleLevel + compaction_filter_factory=nullptr + compaction_filter=nullptr + memtable_factory=SkipListFactory + comparator=leveldb.BytewiseComparator + bloom_locality=0 + min_write_buffer_number_to_merge=1 + table_factory=BlockBasedTable + max_write_buffer_size_to_maintain=0 + max_write_buffer_number_to_maintain=0 + optimize_filters_for_hits=false + default_temperature=kUnknown + preserve_internal_time_seconds=0 + force_consistency_checks=true + merge_operator={id=StringAppendTESTOperator;delimiter=,;} + num_levels=7 + level_compaction_dynamic_file_size=true + memtable_insert_with_hint_prefix_extractor=nullptr + level_compaction_dynamic_level_bytes=false + persist_user_defined_timestamps=true + preclude_last_level_data_seconds=0 + inplace_update_support=false + +[TableOptions/BlockBasedTable "_timer_state/event_user-timers"] + num_file_reads_for_auto_readahead=2 + metadata_cache_options={unpartitioned_pinning=kFallback;partition_pinning=kFallback;top_level_index_pinning=kFallback;} + read_amp_bytes_per_bit=0 + verify_compression=false + format_version=5 + optimize_filters_for_memory=false + partition_filters=false + detect_filter_construct_corruption=false + initial_auto_readahead_size=8192 + max_auto_readahead_size=262144 + enable_index_compression=true + checksum=kXXH3 + index_block_restart_interval=1 + pin_top_level_index_and_filter=true + block_align=false + block_size=4096 + index_type=kBinarySearch + filter_policy=nullptr + metadata_block_size=4096 + no_block_cache=false + index_shortening=kShortenSeparators + whole_key_filtering=true + block_size_deviation=10 + data_block_index_type=kDataBlockBinarySearch + data_block_hash_table_util_ratio=0.750000 + cache_index_and_filter_blocks=true + prepopulate_block_cache=kDisable + block_restart_interval=16 + pin_l0_filter_and_index_blocks_in_cache=true + cache_index_and_filter_blocks_with_high_priority=true + flush_block_policy_factory=FlushBlockBySizePolicyFactory + diff --git a/flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-checkpoint/7ea2ec98-d255-448b-a70b-ca3c4c8115fc b/flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-checkpoint/7ea2ec98-d255-448b-a70b-ca3c4c8115fc new file mode 100644 index 0000000000000000000000000000000000000000..a7cffe07e97ea8f32df7b00c3ac885146bad8bee GIT binary patch literal 770 zcmeH@y-EX75QQf(*a;TaHc9LF3Z~d1ut>=23O37i9XA*E{xCBu=nMN4f_HBdmS7{; zIo74=K7$Ojyuf5Z+mF~j43p$wjO)mpvaKV>U5XD6)6;ZUznN)%;R*Lb*@`2|R zP8Ncb{EkS~51l=cVns_y1tSG}p`urp&Tp`8b+tA4t+vg3BoJP12fz`! lilOvCDV~H3rSFu0(Cxm7w~KFwep<3YI8-$7Lrt>@vu{x#xaa@? literal 0 HcmV?d00001 diff --git a/flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-checkpoint/_metadata b/flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-checkpoint/_metadata new file mode 100644 index 0000000000000000000000000000000000000000..d6d97c3394c85e22dfbc21f4d05c8ff71f239e3e GIT binary patch literal 5514 zcmcgwON<;>6|I>`j0q%htN_9iiWd%wKyT*#KMo7*!H$dvJ9x&4Fp9$ajwc!S4Bb7* zMu5ZylpP{S0fZn5QUt<~1q(m|1PeeYV#`N-7O=%xB!Y-Vfb*)VJrhscIFdz4UDefH zx8A+?oOAE3I`Oep(lpH;eCjsa9h$w(+m<)BhA|&LxVSYMZ(KOooi_I_p3m{g&5gCe zcx|xS{mAco?_>XX-mhGK{=OIA{Z8}6pW-Gn_}o@+R=?D3rk>3-ZymL_C8Mz)=c^at zuOHWou>GbxG=J-lukC3L8SS*B$r6{PAyTSLLh*s<cVF3@`O+Uh`0uA-Uj1z&Xm>d2 zBe*AAy-gbg5jAOjm@^A-H!JU`jDjc~6p>CVVguL2IblS}K8HYIQmsB(_iw2?Y_rWF znJJfoTar@>UeP`do;1i4y5qAl@nkFQU;@3vHO|m)+Og{h=eLP8>hB zyh3Q*6zmg4OeR=Tiqiy88Q5n=nC4EpoP^H4x4+Wdb^76z6Q@rtx8{t&+}Ol*R*^(Q zJwg0|1Y-l?kpbEwV=%q>k-6rO=2;t?B`MlOB9SlRX`v)Lt^}94WYe>uTe3oP)7VAo za&)c`>q=}@^A!fwM1q`iH}8*#JNi*06WI2EByzD z7Q3u111+(l%)pMq!g(qQ<&GDlQUJ2uiqo;9j5(xUljK7tpq(MM;C7A{pnXQh2RuFb5y~U0NOC|M|_>3T+K!n4<8=Ym! z%oYY+c7a?6yCjm3Q4%3Vr806Ks467VsA*&(r94T;RP4a_EJWrc1`pjaaK{H;ARHxJ zWF`ld`gBgi4s|u^C<<~_u#>1ePJ2qIH7S)!dD$1LR(FLZMx7(j0r(BQlVB4goaPKq z15KhQY9BHVH?2Ees~#jqv_%<%$ON&88iKm!gyNg)37U^(iBlAiqSBa zKpoJdY*4{?h(Z`^yX7l(1h4WAGNMmN_q+5X@C!M*m# zL+`u%ssHSmd&gIgz_LoUe!3lwEdgemUE<|Cq%`~C-T$+l|9=`if=6@&1*#`6P-j@w zm;pj0fm4xG?NO5%VD{(Lft^iNdtM6qiOvj22L+mYiaTiu5KwDf>}mcwf)vk9C<47W zS9PGyp|YVz`Ve{YB_f@DhNlxGsAz>n{YerlN=TZxlF=TlK*^LPDjTY&*rpPMGl$v_ zM)-)<2+ShvEj&S0;WlXz>_l(V2*Oj0P!FoPL=2LFDqu9)MDmGQSuhf)ZuLqK6v`aX zK_H?6HYbhR$!b4J(ZLkC&!)S&+gBysGHjtY&Pz(@vei|pfvrLGhH#!RV`Or%Fy^a@TX#FpyQXUe=LWS58U&koaKvjRFi~=eJ`qc} zanlt#lqk8c2AI=40}*ShK~0Fs8Aqv~=xHjp5&SJ)b0Df=Um_;jh~lFowbrJnFcfs| zP8GjLmv$(Q#%=77lrZ31;Y08xh=dyg_76iev1tT^8H z#cs(~dR4`@LbocwJ*6ozJfq`7IK<+d6z|cJYtN894R>LSk{Xrrh7^IFM5`p;IS|vi z>@_ryb*06QO3`8~F^E|!17VcI4CNX9zy(a>K*%%ir0r+u>AKZWhGoeUk2wOmtK4vg zVxm@lY27Skq1 zR4Gx^y`h0bFQSZ=F;)6u_j=fB=~GKYi&lV%1NNW_7Z`asrc=o#>6)tB?2T~&t6C@r zx(}#S9)%rhM6BFl!o1P2%!2Uf`QTCxSY9TGA%h=DXDbqB9JHklt%@ykm_is@RP-|pm z#-s^OhPT%}ve*CHi*Wo^J;C<-?$Er{9cT8UU86oqlwgda3eN^$u|v60D3BP?i%tc- zt1sy@_xI+L!=1}(gC`FkJUbZp3wTOz?s&%XL=Tvt74y_mQ% zvE4q_Xm)S4R_xv?%dXw7_2P-gp1bmmr#}C=Z-4ynU;n|`zt-{M|KP=SK%Mp$hONCq z*vV&p`Rc!}TpWFwt-cHoZz-fKX^Ku=2n!Ss8_`CPS7L@#7QpCR$%YxbqJQS`&K=m#;cujh2GxwHT2xL<3}@1C5m4c12I>lKqGzpKJD%4ZOO;mp5+>;<|@pX{otu+qacVn|a*uC4{lig|X0vvCxOHuzl&m z^1yG7&TovX&4U*=XX@58NCJOjNvQU}{mbdO+rRg&!?VroQgd6C_qf@=^o0L}Us(5p z)rIBp5HA%UTx#weo%i+Yain2{U-7PR_0qU`=nZ>(XnD$w5XQKC|YDpD!~>T#rUfD;u(dPh2SLn zBvQ3Uuiqr!&_YtdNX~w!XsL4kfOVtGqrv;i)~7UBT)Okw)i_=obBVSJc&CHGGJ0Dd zr14f)_RsjYM<8q6grke;b00=ax_z{*pRnbw7m&jp^sbZqxnA< CLtVxI literal 0 HcmV?d00001 diff --git a/flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-checkpoint/c09ec99f-89fd-4786-a535-701f6b6794b6 b/flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-checkpoint/c09ec99f-89fd-4786-a535-701f6b6794b6 new file mode 100644 index 0000000000000000000000000000000000000000..1aded13f6e4b64b595d56ab025bef35589f5f883 GIT binary patch literal 347 zcmb7-v2MaJ5QYzfkh-Aq1`J)XN_hg)c(6z@vP~trL?$(05#q=;1AY2h5e#ADpZ@z! zcOL)@A*Bc7op<`T)FDno)X_}m38Qv3;cF_0;-Zj>C|YDpD!~>T#rUfD;u(dPh2SLn zBvQ3Uuiqr!&_YtdNX~w!XsL4kfOVtGqrv;i)~7UBT)Okw)i_=obBVSJc&CHGGJ0Dd zr14f)_RsjYM<8q6grke;b00=ax_z{*pRnbw7m&jp^sbZqxnA< CLtVxI literal 0 HcmV?d00001 diff --git a/flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-checkpoint/c1c6fa62-9f6b-4fce-bc05-6c0888dc5681 b/flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-checkpoint/c1c6fa62-9f6b-4fce-bc05-6c0888dc5681 new file mode 100644 index 0000000000000000000000000000000000000000..0785704387c0ddbf67d7910eb632cf74e37d6936 GIT binary patch literal 237 zcmZS8)^KKEU^I2G?@(Z1WR%KDElbTwNz!wwEJ-cTEKYUK&n-wSN-W7Q>U3aa{KCu= z#lpbI#K6MvM@Q`^8v`RJ12Y>7!}a*3MgI7;GqEspurQopWIV~J9AA=|n_3iKT#{Il ys$Wo)pPX7;oSBy%Us{}6qzjfS2HBQ*R`Hb=K~uRvrZSymltVEU=#9J*bOQmd@Jj*! literal 0 HcmV?d00001 diff --git a/flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-checkpoint/d0ebb7b8-ff96-40d7-a8e1-162949ed36ea b/flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-checkpoint/d0ebb7b8-ff96-40d7-a8e1-162949ed36ea new file mode 100644 index 0000000000000000000000000000000000000000..0785704387c0ddbf67d7910eb632cf74e37d6936 GIT binary patch literal 237 zcmZS8)^KKEU^I2G?@(Z1WR%KDElbTwNz!wwEJ-cTEKYUK&n-wSN-W7Q>U3aa{KCu= z#lpbI#K6MvM@Q`^8v`RJ12Y>7!}a*3MgI7;GqEspurQopWIV~J9AA=|n_3iKT#{Il ys$Wo)pPX7;oSBy%Us{}6qzjfS2HBQ*R`Hb=K~uRvrZSymltVEU=#9J*bOQmd@Jj*! literal 0 HcmV?d00001 diff --git a/flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-checkpoint/d89254ac-1992-41cb-9905-017e78adcab3 b/flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-checkpoint/d89254ac-1992-41cb-9905-017e78adcab3 new file mode 100644 index 0000000000000000000000000000000000000000..a7cffe07e97ea8f32df7b00c3ac885146bad8bee GIT binary patch literal 770 zcmeH@y-EX75QQf(*a;TaHc9LF3Z~d1ut>=23O37i9XA*E{xCBu=nMN4f_HBdmS7{; zIoU3aa{KCu= z#lpbI#K6MvM@Q`^8v`RJ12Y>7!}a*3MgI7;GqEspurQopWIV~J9AA=|n_3iKT#{Il ys$Wo)pPX7;oSBy%Us{}6qzjfS2HBQ*R`Hb=K~uRvrZSymltVEU=#9J*bOQmd@Jj*! literal 0 HcmV?d00001 diff --git a/flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-checkpoint/e2d0994d-fe90-4051-8dc9-6f5f418c140d b/flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-checkpoint/e2d0994d-fe90-4051-8dc9-6f5f418c140d new file mode 100644 index 00000000000000..ad0dfcf758edc5 --- /dev/null +++ b/flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-checkpoint/e2d0994d-fe90-4051-8dc9-6f5f418c140d @@ -0,0 +1,429 @@ +# This is a RocksDB option file. +# +# For detailed file format spec, please refer to the example file +# in examples/rocksdb_option_file_example.ini +# + +[Version] + rocksdb_version=8.10.0 + options_file_version=1.1 + +[DBOptions] + max_background_flushes=-1 + compaction_readahead_size=2097152 + strict_bytes_per_sync=false + wal_bytes_per_sync=0 + max_open_files=-1 + stats_history_buffer_size=1048576 + max_total_wal_size=0 + stats_persist_period_sec=600 + stats_dump_period_sec=0 + avoid_flush_during_shutdown=true + max_subcompactions=1 + bytes_per_sync=0 + delayed_write_rate=16777216 + max_background_compactions=-1 + max_background_jobs=2 + delete_obsolete_files_period_micros=21600000000 + writable_file_max_buffer_size=1048576 + file_checksum_gen_factory=nullptr + allow_data_in_errors=false + max_bgerror_resume_count=2147483647 + best_efforts_recovery=false + write_dbid_to_manifest=false + atomic_flush=false + manual_wal_flush=false + two_write_queues=false + avoid_flush_during_recovery=false + dump_malloc_stats=false + info_log_level=INFO_LEVEL + write_thread_slow_yield_usec=3 + unordered_write=false + allow_ingest_behind=false + fail_if_options_file_error=true + persist_stats_to_disk=false + WAL_ttl_seconds=0 + bgerror_resume_retry_interval=1000000 + allow_concurrent_memtable_write=true + paranoid_checks=true + WAL_size_limit_MB=0 + lowest_used_cache_tier=kNonVolatileBlockTier + keep_log_file_num=4 + table_cache_numshardbits=6 + max_file_opening_threads=16 + random_access_max_buffer_size=1048576 + log_readahead_size=0 + enable_pipelined_write=false + wal_recovery_mode=kPointInTimeRecovery + db_write_buffer_size=0 + allow_2pc=false + skip_checking_sst_file_sizes_on_db_open=false + skip_stats_update_on_db_open=false + recycle_log_file_num=0 + db_host_id=__hostname__ + track_and_verify_wals_in_manifest=false + use_fsync=false + wal_compression=kNoCompression + compaction_verify_record_count=true + error_if_exists=false + manifest_preallocation_size=4194304 + is_fd_close_on_exec=true + enable_write_thread_adaptive_yield=true + enable_thread_tracking=false + avoid_unnecessary_blocking_io=false + allow_fallocate=true + max_log_file_size=26214400 + advise_random_on_open=true + create_missing_column_families=false + max_write_batch_group_size_bytes=1048576 + use_adaptive_mutex=false + wal_filter=nullptr + create_if_missing=true + enforce_single_del_contracts=true + allow_mmap_writes=false + access_hint_on_compaction_start=NORMAL + verify_sst_unique_id_in_manifest=true + log_file_time_to_roll=0 + use_direct_io_for_flush_and_compaction=false + flush_verify_memtable_count=true + max_manifest_file_size=1073741824 + write_thread_max_yield_usec=100 + use_direct_reads=false + allow_mmap_reads=false + + +[CFOptions "default"] + bottommost_file_compaction_delay=0 + memtable_protection_bytes_per_key=0 + compression_per_level=kSnappyCompression + bottommost_compression=kDisableCompressionOption + sample_for_compression=0 + blob_garbage_collection_age_cutoff=0.250000 + blob_compression_type=kNoCompression + prepopulate_blob_cache=kDisable + blob_compaction_readahead_size=0 + level0_stop_writes_trigger=36 + min_blob_size=0 + last_level_temperature=kUnknown + compaction_options_universal={allow_trivial_move=false;stop_style=kCompactionStopStyleTotalSize;min_merge_width=2;compression_size_percent=-1;max_size_amplification_percent=200;incremental=false;max_merge_width=4294967295;size_ratio=1;} + target_file_size_base=67108864 + ignore_max_compaction_bytes_for_input=true + memtable_whole_key_filtering=false + blob_file_starting_level=0 + soft_pending_compaction_bytes_limit=68719476736 + max_write_buffer_number=2 + ttl=2592000 + compaction_options_fifo={file_temperature_age_thresholds=;allow_compaction=false;age_for_warm=0;max_table_files_size=1073741824;} + check_flush_compaction_key_order=true + memtable_huge_page_size=0 + max_successive_merges=0 + inplace_update_num_locks=10000 + enable_blob_garbage_collection=false + arena_block_size=1048576 + bottommost_compression_opts={use_zstd_dict_trainer=true;enabled=false;zstd_max_train_bytes=0;parallel_threads=1;max_compressed_bytes_per_kb=896;checksum=false;max_dict_bytes=0;strategy=0;max_dict_buffer_bytes=0;level=32767;window_bits=-14;} + target_file_size_multiplier=1 + max_bytes_for_level_multiplier_additional=1:1:1:1:1:1:1 + blob_garbage_collection_force_threshold=1.000000 + enable_blob_files=false + level0_slowdown_writes_trigger=20 + compression=kSnappyCompression + level0_file_num_compaction_trigger=4 + block_protection_bytes_per_key=0 + prefix_extractor=nullptr + max_bytes_for_level_multiplier=10.000000 + write_buffer_size=67108864 + disable_auto_compactions=false + max_compaction_bytes=1677721600 + memtable_max_range_deletions=0 + compression_opts={use_zstd_dict_trainer=true;enabled=false;zstd_max_train_bytes=0;parallel_threads=1;max_compressed_bytes_per_kb=896;checksum=false;max_dict_bytes=0;strategy=0;max_dict_buffer_bytes=0;level=32767;window_bits=-14;} + hard_pending_compaction_bytes_limit=274877906944 + blob_file_size=268435456 + periodic_compaction_seconds=2592000 + paranoid_file_checks=false + experimental_mempurge_threshold=0.000000 + memtable_prefix_bloom_size_ratio=0.000000 + max_bytes_for_level_base=268435456 + max_sequential_skip_in_iterations=8 + report_bg_io_stats=false + sst_partitioner_factory=nullptr + compaction_pri=kMinOverlappingRatio + compaction_style=kCompactionStyleLevel + compaction_filter_factory=nullptr + compaction_filter=nullptr + memtable_factory=SkipListFactory + comparator=leveldb.BytewiseComparator + bloom_locality=0 + min_write_buffer_number_to_merge=1 + table_factory=BlockBasedTable + max_write_buffer_size_to_maintain=0 + max_write_buffer_number_to_maintain=0 + optimize_filters_for_hits=false + default_temperature=kUnknown + preserve_internal_time_seconds=0 + force_consistency_checks=true + merge_operator={id=StringAppendTESTOperator;delimiter=,;} + num_levels=7 + level_compaction_dynamic_file_size=true + memtable_insert_with_hint_prefix_extractor=nullptr + level_compaction_dynamic_level_bytes=false + persist_user_defined_timestamps=true + preclude_last_level_data_seconds=0 + inplace_update_support=false + +[TableOptions/BlockBasedTable "default"] + num_file_reads_for_auto_readahead=2 + metadata_cache_options={unpartitioned_pinning=kFallback;partition_pinning=kFallback;top_level_index_pinning=kFallback;} + read_amp_bytes_per_bit=0 + verify_compression=false + format_version=5 + optimize_filters_for_memory=false + partition_filters=false + detect_filter_construct_corruption=false + initial_auto_readahead_size=8192 + max_auto_readahead_size=262144 + enable_index_compression=true + checksum=kXXH3 + index_block_restart_interval=1 + pin_top_level_index_and_filter=true + block_align=false + block_size=4096 + index_type=kBinarySearch + filter_policy=nullptr + metadata_block_size=4096 + no_block_cache=false + index_shortening=kShortenSeparators + whole_key_filtering=true + block_size_deviation=10 + data_block_index_type=kDataBlockBinarySearch + data_block_hash_table_util_ratio=0.750000 + cache_index_and_filter_blocks=true + prepopulate_block_cache=kDisable + block_restart_interval=16 + pin_l0_filter_and_index_blocks_in_cache=true + cache_index_and_filter_blocks_with_high_priority=true + flush_block_policy_factory=FlushBlockBySizePolicyFactory + + +[CFOptions "_timer_state/processing_user-timers"] + bottommost_file_compaction_delay=0 + memtable_protection_bytes_per_key=0 + compression_per_level=kSnappyCompression + bottommost_compression=kDisableCompressionOption + sample_for_compression=0 + blob_garbage_collection_age_cutoff=0.250000 + blob_compression_type=kNoCompression + prepopulate_blob_cache=kDisable + blob_compaction_readahead_size=0 + level0_stop_writes_trigger=36 + min_blob_size=0 + last_level_temperature=kUnknown + compaction_options_universal={allow_trivial_move=false;stop_style=kCompactionStopStyleTotalSize;min_merge_width=2;compression_size_percent=-1;max_size_amplification_percent=200;incremental=false;max_merge_width=4294967295;size_ratio=1;} + target_file_size_base=67108864 + ignore_max_compaction_bytes_for_input=true + memtable_whole_key_filtering=false + blob_file_starting_level=0 + soft_pending_compaction_bytes_limit=68719476736 + max_write_buffer_number=2 + ttl=2592000 + compaction_options_fifo={file_temperature_age_thresholds=;allow_compaction=false;age_for_warm=0;max_table_files_size=1073741824;} + check_flush_compaction_key_order=true + memtable_huge_page_size=0 + max_successive_merges=0 + inplace_update_num_locks=10000 + enable_blob_garbage_collection=false + arena_block_size=1048576 + bottommost_compression_opts={use_zstd_dict_trainer=true;enabled=false;zstd_max_train_bytes=0;parallel_threads=1;max_compressed_bytes_per_kb=896;checksum=false;max_dict_bytes=0;strategy=0;max_dict_buffer_bytes=0;level=32767;window_bits=-14;} + target_file_size_multiplier=1 + max_bytes_for_level_multiplier_additional=1:1:1:1:1:1:1 + blob_garbage_collection_force_threshold=1.000000 + enable_blob_files=false + level0_slowdown_writes_trigger=20 + compression=kSnappyCompression + level0_file_num_compaction_trigger=4 + block_protection_bytes_per_key=0 + prefix_extractor=nullptr + max_bytes_for_level_multiplier=10.000000 + write_buffer_size=67108864 + disable_auto_compactions=false + max_compaction_bytes=1677721600 + memtable_max_range_deletions=0 + compression_opts={use_zstd_dict_trainer=true;enabled=false;zstd_max_train_bytes=0;parallel_threads=1;max_compressed_bytes_per_kb=896;checksum=false;max_dict_bytes=0;strategy=0;max_dict_buffer_bytes=0;level=32767;window_bits=-14;} + hard_pending_compaction_bytes_limit=274877906944 + blob_file_size=268435456 + periodic_compaction_seconds=2592000 + paranoid_file_checks=false + experimental_mempurge_threshold=0.000000 + memtable_prefix_bloom_size_ratio=0.000000 + max_bytes_for_level_base=268435456 + max_sequential_skip_in_iterations=8 + report_bg_io_stats=false + sst_partitioner_factory=nullptr + compaction_pri=kMinOverlappingRatio + compaction_style=kCompactionStyleLevel + compaction_filter_factory=nullptr + compaction_filter=nullptr + memtable_factory=SkipListFactory + comparator=leveldb.BytewiseComparator + bloom_locality=0 + min_write_buffer_number_to_merge=1 + table_factory=BlockBasedTable + max_write_buffer_size_to_maintain=0 + max_write_buffer_number_to_maintain=0 + optimize_filters_for_hits=false + default_temperature=kUnknown + preserve_internal_time_seconds=0 + force_consistency_checks=true + merge_operator={id=StringAppendTESTOperator;delimiter=,;} + num_levels=7 + level_compaction_dynamic_file_size=true + memtable_insert_with_hint_prefix_extractor=nullptr + level_compaction_dynamic_level_bytes=false + persist_user_defined_timestamps=true + preclude_last_level_data_seconds=0 + inplace_update_support=false + +[TableOptions/BlockBasedTable "_timer_state/processing_user-timers"] + num_file_reads_for_auto_readahead=2 + metadata_cache_options={unpartitioned_pinning=kFallback;partition_pinning=kFallback;top_level_index_pinning=kFallback;} + read_amp_bytes_per_bit=0 + verify_compression=false + format_version=5 + optimize_filters_for_memory=false + partition_filters=false + detect_filter_construct_corruption=false + initial_auto_readahead_size=8192 + max_auto_readahead_size=262144 + enable_index_compression=true + checksum=kXXH3 + index_block_restart_interval=1 + pin_top_level_index_and_filter=true + block_align=false + block_size=4096 + index_type=kBinarySearch + filter_policy=nullptr + metadata_block_size=4096 + no_block_cache=false + index_shortening=kShortenSeparators + whole_key_filtering=true + block_size_deviation=10 + data_block_index_type=kDataBlockBinarySearch + data_block_hash_table_util_ratio=0.750000 + cache_index_and_filter_blocks=true + prepopulate_block_cache=kDisable + block_restart_interval=16 + pin_l0_filter_and_index_blocks_in_cache=true + cache_index_and_filter_blocks_with_high_priority=true + flush_block_policy_factory=FlushBlockBySizePolicyFactory + + +[CFOptions "_timer_state/event_user-timers"] + bottommost_file_compaction_delay=0 + memtable_protection_bytes_per_key=0 + compression_per_level=kSnappyCompression + bottommost_compression=kDisableCompressionOption + sample_for_compression=0 + blob_garbage_collection_age_cutoff=0.250000 + blob_compression_type=kNoCompression + prepopulate_blob_cache=kDisable + blob_compaction_readahead_size=0 + level0_stop_writes_trigger=36 + min_blob_size=0 + last_level_temperature=kUnknown + compaction_options_universal={allow_trivial_move=false;stop_style=kCompactionStopStyleTotalSize;min_merge_width=2;compression_size_percent=-1;max_size_amplification_percent=200;incremental=false;max_merge_width=4294967295;size_ratio=1;} + target_file_size_base=67108864 + ignore_max_compaction_bytes_for_input=true + memtable_whole_key_filtering=false + blob_file_starting_level=0 + soft_pending_compaction_bytes_limit=68719476736 + max_write_buffer_number=2 + ttl=2592000 + compaction_options_fifo={file_temperature_age_thresholds=;allow_compaction=false;age_for_warm=0;max_table_files_size=1073741824;} + check_flush_compaction_key_order=true + memtable_huge_page_size=0 + max_successive_merges=0 + inplace_update_num_locks=10000 + enable_blob_garbage_collection=false + arena_block_size=1048576 + bottommost_compression_opts={use_zstd_dict_trainer=true;enabled=false;zstd_max_train_bytes=0;parallel_threads=1;max_compressed_bytes_per_kb=896;checksum=false;max_dict_bytes=0;strategy=0;max_dict_buffer_bytes=0;level=32767;window_bits=-14;} + target_file_size_multiplier=1 + max_bytes_for_level_multiplier_additional=1:1:1:1:1:1:1 + blob_garbage_collection_force_threshold=1.000000 + enable_blob_files=false + level0_slowdown_writes_trigger=20 + compression=kSnappyCompression + level0_file_num_compaction_trigger=4 + block_protection_bytes_per_key=0 + prefix_extractor=nullptr + max_bytes_for_level_multiplier=10.000000 + write_buffer_size=67108864 + disable_auto_compactions=false + max_compaction_bytes=1677721600 + memtable_max_range_deletions=0 + compression_opts={use_zstd_dict_trainer=true;enabled=false;zstd_max_train_bytes=0;parallel_threads=1;max_compressed_bytes_per_kb=896;checksum=false;max_dict_bytes=0;strategy=0;max_dict_buffer_bytes=0;level=32767;window_bits=-14;} + hard_pending_compaction_bytes_limit=274877906944 + blob_file_size=268435456 + periodic_compaction_seconds=2592000 + paranoid_file_checks=false + experimental_mempurge_threshold=0.000000 + memtable_prefix_bloom_size_ratio=0.000000 + max_bytes_for_level_base=268435456 + max_sequential_skip_in_iterations=8 + report_bg_io_stats=false + sst_partitioner_factory=nullptr + compaction_pri=kMinOverlappingRatio + compaction_style=kCompactionStyleLevel + compaction_filter_factory=nullptr + compaction_filter=nullptr + memtable_factory=SkipListFactory + comparator=leveldb.BytewiseComparator + bloom_locality=0 + min_write_buffer_number_to_merge=1 + table_factory=BlockBasedTable + max_write_buffer_size_to_maintain=0 + max_write_buffer_number_to_maintain=0 + optimize_filters_for_hits=false + default_temperature=kUnknown + preserve_internal_time_seconds=0 + force_consistency_checks=true + merge_operator={id=StringAppendTESTOperator;delimiter=,;} + num_levels=7 + level_compaction_dynamic_file_size=true + memtable_insert_with_hint_prefix_extractor=nullptr + level_compaction_dynamic_level_bytes=false + persist_user_defined_timestamps=true + preclude_last_level_data_seconds=0 + inplace_update_support=false + +[TableOptions/BlockBasedTable "_timer_state/event_user-timers"] + num_file_reads_for_auto_readahead=2 + metadata_cache_options={unpartitioned_pinning=kFallback;partition_pinning=kFallback;top_level_index_pinning=kFallback;} + read_amp_bytes_per_bit=0 + verify_compression=false + format_version=5 + optimize_filters_for_memory=false + partition_filters=false + detect_filter_construct_corruption=false + initial_auto_readahead_size=8192 + max_auto_readahead_size=262144 + enable_index_compression=true + checksum=kXXH3 + index_block_restart_interval=1 + pin_top_level_index_and_filter=true + block_align=false + block_size=4096 + index_type=kBinarySearch + filter_policy=nullptr + metadata_block_size=4096 + no_block_cache=false + index_shortening=kShortenSeparators + whole_key_filtering=true + block_size_deviation=10 + data_block_index_type=kDataBlockBinarySearch + data_block_hash_table_util_ratio=0.750000 + cache_index_and_filter_blocks=true + prepopulate_block_cache=kDisable + block_restart_interval=16 + pin_l0_filter_and_index_blocks_in_cache=true + cache_index_and_filter_blocks_with_high_priority=true + flush_block_policy_factory=FlushBlockBySizePolicyFactory + diff --git a/flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-checkpoint/e5a904c3-56b5-4965-8b26-99373feaebb0 b/flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-checkpoint/e5a904c3-56b5-4965-8b26-99373feaebb0 new file mode 100644 index 0000000000000000000000000000000000000000..1aded13f6e4b64b595d56ab025bef35589f5f883 GIT binary patch literal 347 zcmb7-v2MaJ5QYzfkh-Aq1`J)XN_hg)c(6z@vP~trL?$(05#q=;1AY2h5e#ADpZ@z! zcOL)@A*Bc7op<`T)FDno)X_}m38Qv3;cF_0;-Zj>C|YDpD!~>T#rUfD;u(dPh2SLn zBvQ3Uuiqr!&_YtdNX~w!XsL4kfOVtGqrv;i)~7UBT)Okw)i_=obBVSJc&CHGGJ0Dd zr14f)_RsjYM<8q6grke;b00=ax_z{*pRnbw7m&jp^sbZqxnA< CLtVxI literal 0 HcmV?d00001 diff --git a/flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-checkpoint/e681adcf-84e7-40f5-9a04-0292f75db142 b/flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-checkpoint/e681adcf-84e7-40f5-9a04-0292f75db142 new file mode 100644 index 0000000000000000000000000000000000000000..a7cffe07e97ea8f32df7b00c3ac885146bad8bee GIT binary patch literal 770 zcmeH@y-EX75QQf(*a;TaHc9LF3Z~d1ut>=23O37i9XA*E{xCBu=nMN4f_HBdmS7{; zIo74=K7$Ojyuf5Z+mF~j43p$wjO)mpvaKV>U5XD6)6;ZUznN)%;R*Lb*@`2|R zP8Ncb{EkS~51l=cVns_y1tSG}p`urp&Tp`8b+tA4t+vg3BoJP12fz`! lilOvCDV~H3rSFu0(Cxm7w~KFwep<3YI8-$7Lrt>@vu{x#xaa@? literal 0 HcmV?d00001 diff --git a/flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-checkpoint/e8322799-4490-42b9-a653-6d2425bcfb42 b/flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-checkpoint/e8322799-4490-42b9-a653-6d2425bcfb42 new file mode 100644 index 0000000000000000000000000000000000000000..a7cffe07e97ea8f32df7b00c3ac885146bad8bee GIT binary patch literal 770 zcmeH@y-EX75QQf(*a;TaHc9LF3Z~d1ut>=23O37i9XA*E{xCBu=nMN4f_HBdmS7{; zIoU3aa{KCu= z#lpbI#K6MvM@Q`^8v`RJ12Y>7!}a*3MgI7;GqEspurQopWIV~J9AA=|n_3iKT#{Il ys$Wo)pPX7;oSBy%Us{}6qzjfS2HBQ*R`Hb=K~uRvrZSymltVEU=#9J*bOQmd@Jj*! literal 0 HcmV?d00001 diff --git a/flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-checkpoint/f5014293-9647-47ab-8685-fec899807da2 b/flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-checkpoint/f5014293-9647-47ab-8685-fec899807da2 new file mode 100644 index 0000000000000000000000000000000000000000..a7cffe07e97ea8f32df7b00c3ac885146bad8bee GIT binary patch literal 770 zcmeH@y-EX75QQf(*a;TaHc9LF3Z~d1ut>=23O37i9XA*E{xCBu=nMN4f_HBdmS7{; zIo=23O37i9XA*E{xCBu=nMN4f_HBdmS7{; zIoC|YDpD!~>T#rUfD;u(dPh2SLn zBvQ3Uuiqr!&_YtdNX~w!XsL4kfOVtGqrv;i)~7UBT)Okw)i_=obBVSJc&CHGGJ0Dd zr14f)_RsjYM<8q6grke;b00=ax_z{*pRnbw7m&jp^sbZqxnA< CLtVxI literal 0 HcmV?d00001 diff --git a/flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/0732b46b-af1e-49e8-b7c4-c71c265c3755 b/flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/0732b46b-af1e-49e8-b7c4-c71c265c3755 new file mode 100644 index 0000000000000000000000000000000000000000..89e40fd41805fd1170a58f8dbe0d1ac7a4a47abc GIT binary patch literal 705 zcmdT?Jx{|h5WTnvi3PzwU|_Aq$1iY+2aA9!+eLyUa)W6t(l~O=0KXnPO^1Yufq}Q& zy(iy2>74=K7$Ojyuf5Z+mF~j43p$wjO)mpvaKV>U5XD6)6;ZUznN)%;R*Lb*@`2|R zP8Ncb{EkS~51l=cVns_y1tSG}p`urp&Tp`8b+tA4t+vg3BoJP12fz`! lilOvCDV~H3rSFu0(Cxm7w~KFwep<3YI8-$7Lrt>@vu{x#xaa@? literal 0 HcmV?d00001 diff --git a/flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/0820f20c-f077-4d74-97a4-65f3999758b1 b/flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/0820f20c-f077-4d74-97a4-65f3999758b1 new file mode 100644 index 0000000000000000000000000000000000000000..89e40fd41805fd1170a58f8dbe0d1ac7a4a47abc GIT binary patch literal 705 zcmdT?Jx{|h5WTnvi3PzwU|_Aq$1iY+2aA9!+eLyUa)W6t(l~O=0KXnPO^1Yufq}Q& zy(iy2>74=K7$Ojyuf5Z+mF~j43p$wjO)mpvaKV>U5XD6)6;ZUznN)%;R*Lb*@`2|R zP8Ncb{EkS~51l=cVns_y1tSG}p`urp&Tp`8b+tA4t+vg3BoJP12fz`! lilOvCDV~H3rSFu0(Cxm7w~KFwep<3YI8-$7Lrt>@vu{x#xaa@? literal 0 HcmV?d00001 diff --git a/flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/0d3ad900-46cd-42a6-8bb8-a11f885fc90f b/flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/0d3ad900-46cd-42a6-8bb8-a11f885fc90f new file mode 100644 index 0000000000000000000000000000000000000000..5e924258b13ca8ebcaf30d5c62affc8f8894615f GIT binary patch literal 293 zcmZ9^v1-FG5P;!p1D!IYONT(gfvnX#xI_?v69-A@(8Vb3#TK7xYP(hfJ= z_j3mTPXG@vjs6sBe2ZiV;U>4q${m-vE@h>3u6eZ*N=xy+*P`53n{vfrrgnwUzk%QH zW*>R6=au48UU%@oq#l_1Ay-#7(`KV{4>`!?e3$>U^B#iWPb_Hq; BT5|vZ literal 0 HcmV?d00001 diff --git a/flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/1038cde8-e97f-4a38-8cdf-03af8145b6d7 b/flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/1038cde8-e97f-4a38-8cdf-03af8145b6d7 new file mode 100644 index 0000000000000000000000000000000000000000..0785704387c0ddbf67d7910eb632cf74e37d6936 GIT binary patch literal 237 zcmZS8)^KKEU^I2G?@(Z1WR%KDElbTwNz!wwEJ-cTEKYUK&n-wSN-W7Q>U3aa{KCu= z#lpbI#K6MvM@Q`^8v`RJ12Y>7!}a*3MgI7;GqEspurQopWIV~J9AA=|n_3iKT#{Il ys$Wo)pPX7;oSBy%Us{}6qzjfS2HBQ*R`Hb=K~uRvrZSymltVEU=#9J*bOQmd@Jj*! literal 0 HcmV?d00001 diff --git a/flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/135da05c-1a8f-490b-b1ca-500a5811666a b/flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/135da05c-1a8f-490b-b1ca-500a5811666a new file mode 100644 index 0000000000000000000000000000000000000000..a7cffe07e97ea8f32df7b00c3ac885146bad8bee GIT binary patch literal 770 zcmeH@y-EX75QQf(*a;TaHc9LF3Z~d1ut>=23O37i9XA*E{xCBu=nMN4f_HBdmS7{; zIoU3aa{KCu= z#lpbI#K6MvM@Q`^8v`RJ12Y>7!}a*3MgI7;GqEspurQopWIV~J9AA=|n_3iKT#{Il ys$Wo)pPX7;oSBy%Us{}6qzjfS2HBQ*R`Hb=K~uRvrZSymltVEU=#9J*bOQmd@Jj*! literal 0 HcmV?d00001 diff --git a/flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/3409cc82-59da-4248-8e82-d5b4481e3e9a b/flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/3409cc82-59da-4248-8e82-d5b4481e3e9a new file mode 100644 index 0000000000000000000000000000000000000000..0785704387c0ddbf67d7910eb632cf74e37d6936 GIT binary patch literal 237 zcmZS8)^KKEU^I2G?@(Z1WR%KDElbTwNz!wwEJ-cTEKYUK&n-wSN-W7Q>U3aa{KCu= z#lpbI#K6MvM@Q`^8v`RJ12Y>7!}a*3MgI7;GqEspurQopWIV~J9AA=|n_3iKT#{Il ys$Wo)pPX7;oSBy%Us{}6qzjfS2HBQ*R`Hb=K~uRvrZSymltVEU=#9J*bOQmd@Jj*! literal 0 HcmV?d00001 diff --git a/flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/39f83302-8ef4-4e4e-add2-59c2c34fd59e b/flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/39f83302-8ef4-4e4e-add2-59c2c34fd59e new file mode 100644 index 00000000000000..ad0dfcf758edc5 --- /dev/null +++ b/flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/39f83302-8ef4-4e4e-add2-59c2c34fd59e @@ -0,0 +1,429 @@ +# This is a RocksDB option file. +# +# For detailed file format spec, please refer to the example file +# in examples/rocksdb_option_file_example.ini +# + +[Version] + rocksdb_version=8.10.0 + options_file_version=1.1 + +[DBOptions] + max_background_flushes=-1 + compaction_readahead_size=2097152 + strict_bytes_per_sync=false + wal_bytes_per_sync=0 + max_open_files=-1 + stats_history_buffer_size=1048576 + max_total_wal_size=0 + stats_persist_period_sec=600 + stats_dump_period_sec=0 + avoid_flush_during_shutdown=true + max_subcompactions=1 + bytes_per_sync=0 + delayed_write_rate=16777216 + max_background_compactions=-1 + max_background_jobs=2 + delete_obsolete_files_period_micros=21600000000 + writable_file_max_buffer_size=1048576 + file_checksum_gen_factory=nullptr + allow_data_in_errors=false + max_bgerror_resume_count=2147483647 + best_efforts_recovery=false + write_dbid_to_manifest=false + atomic_flush=false + manual_wal_flush=false + two_write_queues=false + avoid_flush_during_recovery=false + dump_malloc_stats=false + info_log_level=INFO_LEVEL + write_thread_slow_yield_usec=3 + unordered_write=false + allow_ingest_behind=false + fail_if_options_file_error=true + persist_stats_to_disk=false + WAL_ttl_seconds=0 + bgerror_resume_retry_interval=1000000 + allow_concurrent_memtable_write=true + paranoid_checks=true + WAL_size_limit_MB=0 + lowest_used_cache_tier=kNonVolatileBlockTier + keep_log_file_num=4 + table_cache_numshardbits=6 + max_file_opening_threads=16 + random_access_max_buffer_size=1048576 + log_readahead_size=0 + enable_pipelined_write=false + wal_recovery_mode=kPointInTimeRecovery + db_write_buffer_size=0 + allow_2pc=false + skip_checking_sst_file_sizes_on_db_open=false + skip_stats_update_on_db_open=false + recycle_log_file_num=0 + db_host_id=__hostname__ + track_and_verify_wals_in_manifest=false + use_fsync=false + wal_compression=kNoCompression + compaction_verify_record_count=true + error_if_exists=false + manifest_preallocation_size=4194304 + is_fd_close_on_exec=true + enable_write_thread_adaptive_yield=true + enable_thread_tracking=false + avoid_unnecessary_blocking_io=false + allow_fallocate=true + max_log_file_size=26214400 + advise_random_on_open=true + create_missing_column_families=false + max_write_batch_group_size_bytes=1048576 + use_adaptive_mutex=false + wal_filter=nullptr + create_if_missing=true + enforce_single_del_contracts=true + allow_mmap_writes=false + access_hint_on_compaction_start=NORMAL + verify_sst_unique_id_in_manifest=true + log_file_time_to_roll=0 + use_direct_io_for_flush_and_compaction=false + flush_verify_memtable_count=true + max_manifest_file_size=1073741824 + write_thread_max_yield_usec=100 + use_direct_reads=false + allow_mmap_reads=false + + +[CFOptions "default"] + bottommost_file_compaction_delay=0 + memtable_protection_bytes_per_key=0 + compression_per_level=kSnappyCompression + bottommost_compression=kDisableCompressionOption + sample_for_compression=0 + blob_garbage_collection_age_cutoff=0.250000 + blob_compression_type=kNoCompression + prepopulate_blob_cache=kDisable + blob_compaction_readahead_size=0 + level0_stop_writes_trigger=36 + min_blob_size=0 + last_level_temperature=kUnknown + compaction_options_universal={allow_trivial_move=false;stop_style=kCompactionStopStyleTotalSize;min_merge_width=2;compression_size_percent=-1;max_size_amplification_percent=200;incremental=false;max_merge_width=4294967295;size_ratio=1;} + target_file_size_base=67108864 + ignore_max_compaction_bytes_for_input=true + memtable_whole_key_filtering=false + blob_file_starting_level=0 + soft_pending_compaction_bytes_limit=68719476736 + max_write_buffer_number=2 + ttl=2592000 + compaction_options_fifo={file_temperature_age_thresholds=;allow_compaction=false;age_for_warm=0;max_table_files_size=1073741824;} + check_flush_compaction_key_order=true + memtable_huge_page_size=0 + max_successive_merges=0 + inplace_update_num_locks=10000 + enable_blob_garbage_collection=false + arena_block_size=1048576 + bottommost_compression_opts={use_zstd_dict_trainer=true;enabled=false;zstd_max_train_bytes=0;parallel_threads=1;max_compressed_bytes_per_kb=896;checksum=false;max_dict_bytes=0;strategy=0;max_dict_buffer_bytes=0;level=32767;window_bits=-14;} + target_file_size_multiplier=1 + max_bytes_for_level_multiplier_additional=1:1:1:1:1:1:1 + blob_garbage_collection_force_threshold=1.000000 + enable_blob_files=false + level0_slowdown_writes_trigger=20 + compression=kSnappyCompression + level0_file_num_compaction_trigger=4 + block_protection_bytes_per_key=0 + prefix_extractor=nullptr + max_bytes_for_level_multiplier=10.000000 + write_buffer_size=67108864 + disable_auto_compactions=false + max_compaction_bytes=1677721600 + memtable_max_range_deletions=0 + compression_opts={use_zstd_dict_trainer=true;enabled=false;zstd_max_train_bytes=0;parallel_threads=1;max_compressed_bytes_per_kb=896;checksum=false;max_dict_bytes=0;strategy=0;max_dict_buffer_bytes=0;level=32767;window_bits=-14;} + hard_pending_compaction_bytes_limit=274877906944 + blob_file_size=268435456 + periodic_compaction_seconds=2592000 + paranoid_file_checks=false + experimental_mempurge_threshold=0.000000 + memtable_prefix_bloom_size_ratio=0.000000 + max_bytes_for_level_base=268435456 + max_sequential_skip_in_iterations=8 + report_bg_io_stats=false + sst_partitioner_factory=nullptr + compaction_pri=kMinOverlappingRatio + compaction_style=kCompactionStyleLevel + compaction_filter_factory=nullptr + compaction_filter=nullptr + memtable_factory=SkipListFactory + comparator=leveldb.BytewiseComparator + bloom_locality=0 + min_write_buffer_number_to_merge=1 + table_factory=BlockBasedTable + max_write_buffer_size_to_maintain=0 + max_write_buffer_number_to_maintain=0 + optimize_filters_for_hits=false + default_temperature=kUnknown + preserve_internal_time_seconds=0 + force_consistency_checks=true + merge_operator={id=StringAppendTESTOperator;delimiter=,;} + num_levels=7 + level_compaction_dynamic_file_size=true + memtable_insert_with_hint_prefix_extractor=nullptr + level_compaction_dynamic_level_bytes=false + persist_user_defined_timestamps=true + preclude_last_level_data_seconds=0 + inplace_update_support=false + +[TableOptions/BlockBasedTable "default"] + num_file_reads_for_auto_readahead=2 + metadata_cache_options={unpartitioned_pinning=kFallback;partition_pinning=kFallback;top_level_index_pinning=kFallback;} + read_amp_bytes_per_bit=0 + verify_compression=false + format_version=5 + optimize_filters_for_memory=false + partition_filters=false + detect_filter_construct_corruption=false + initial_auto_readahead_size=8192 + max_auto_readahead_size=262144 + enable_index_compression=true + checksum=kXXH3 + index_block_restart_interval=1 + pin_top_level_index_and_filter=true + block_align=false + block_size=4096 + index_type=kBinarySearch + filter_policy=nullptr + metadata_block_size=4096 + no_block_cache=false + index_shortening=kShortenSeparators + whole_key_filtering=true + block_size_deviation=10 + data_block_index_type=kDataBlockBinarySearch + data_block_hash_table_util_ratio=0.750000 + cache_index_and_filter_blocks=true + prepopulate_block_cache=kDisable + block_restart_interval=16 + pin_l0_filter_and_index_blocks_in_cache=true + cache_index_and_filter_blocks_with_high_priority=true + flush_block_policy_factory=FlushBlockBySizePolicyFactory + + +[CFOptions "_timer_state/processing_user-timers"] + bottommost_file_compaction_delay=0 + memtable_protection_bytes_per_key=0 + compression_per_level=kSnappyCompression + bottommost_compression=kDisableCompressionOption + sample_for_compression=0 + blob_garbage_collection_age_cutoff=0.250000 + blob_compression_type=kNoCompression + prepopulate_blob_cache=kDisable + blob_compaction_readahead_size=0 + level0_stop_writes_trigger=36 + min_blob_size=0 + last_level_temperature=kUnknown + compaction_options_universal={allow_trivial_move=false;stop_style=kCompactionStopStyleTotalSize;min_merge_width=2;compression_size_percent=-1;max_size_amplification_percent=200;incremental=false;max_merge_width=4294967295;size_ratio=1;} + target_file_size_base=67108864 + ignore_max_compaction_bytes_for_input=true + memtable_whole_key_filtering=false + blob_file_starting_level=0 + soft_pending_compaction_bytes_limit=68719476736 + max_write_buffer_number=2 + ttl=2592000 + compaction_options_fifo={file_temperature_age_thresholds=;allow_compaction=false;age_for_warm=0;max_table_files_size=1073741824;} + check_flush_compaction_key_order=true + memtable_huge_page_size=0 + max_successive_merges=0 + inplace_update_num_locks=10000 + enable_blob_garbage_collection=false + arena_block_size=1048576 + bottommost_compression_opts={use_zstd_dict_trainer=true;enabled=false;zstd_max_train_bytes=0;parallel_threads=1;max_compressed_bytes_per_kb=896;checksum=false;max_dict_bytes=0;strategy=0;max_dict_buffer_bytes=0;level=32767;window_bits=-14;} + target_file_size_multiplier=1 + max_bytes_for_level_multiplier_additional=1:1:1:1:1:1:1 + blob_garbage_collection_force_threshold=1.000000 + enable_blob_files=false + level0_slowdown_writes_trigger=20 + compression=kSnappyCompression + level0_file_num_compaction_trigger=4 + block_protection_bytes_per_key=0 + prefix_extractor=nullptr + max_bytes_for_level_multiplier=10.000000 + write_buffer_size=67108864 + disable_auto_compactions=false + max_compaction_bytes=1677721600 + memtable_max_range_deletions=0 + compression_opts={use_zstd_dict_trainer=true;enabled=false;zstd_max_train_bytes=0;parallel_threads=1;max_compressed_bytes_per_kb=896;checksum=false;max_dict_bytes=0;strategy=0;max_dict_buffer_bytes=0;level=32767;window_bits=-14;} + hard_pending_compaction_bytes_limit=274877906944 + blob_file_size=268435456 + periodic_compaction_seconds=2592000 + paranoid_file_checks=false + experimental_mempurge_threshold=0.000000 + memtable_prefix_bloom_size_ratio=0.000000 + max_bytes_for_level_base=268435456 + max_sequential_skip_in_iterations=8 + report_bg_io_stats=false + sst_partitioner_factory=nullptr + compaction_pri=kMinOverlappingRatio + compaction_style=kCompactionStyleLevel + compaction_filter_factory=nullptr + compaction_filter=nullptr + memtable_factory=SkipListFactory + comparator=leveldb.BytewiseComparator + bloom_locality=0 + min_write_buffer_number_to_merge=1 + table_factory=BlockBasedTable + max_write_buffer_size_to_maintain=0 + max_write_buffer_number_to_maintain=0 + optimize_filters_for_hits=false + default_temperature=kUnknown + preserve_internal_time_seconds=0 + force_consistency_checks=true + merge_operator={id=StringAppendTESTOperator;delimiter=,;} + num_levels=7 + level_compaction_dynamic_file_size=true + memtable_insert_with_hint_prefix_extractor=nullptr + level_compaction_dynamic_level_bytes=false + persist_user_defined_timestamps=true + preclude_last_level_data_seconds=0 + inplace_update_support=false + +[TableOptions/BlockBasedTable "_timer_state/processing_user-timers"] + num_file_reads_for_auto_readahead=2 + metadata_cache_options={unpartitioned_pinning=kFallback;partition_pinning=kFallback;top_level_index_pinning=kFallback;} + read_amp_bytes_per_bit=0 + verify_compression=false + format_version=5 + optimize_filters_for_memory=false + partition_filters=false + detect_filter_construct_corruption=false + initial_auto_readahead_size=8192 + max_auto_readahead_size=262144 + enable_index_compression=true + checksum=kXXH3 + index_block_restart_interval=1 + pin_top_level_index_and_filter=true + block_align=false + block_size=4096 + index_type=kBinarySearch + filter_policy=nullptr + metadata_block_size=4096 + no_block_cache=false + index_shortening=kShortenSeparators + whole_key_filtering=true + block_size_deviation=10 + data_block_index_type=kDataBlockBinarySearch + data_block_hash_table_util_ratio=0.750000 + cache_index_and_filter_blocks=true + prepopulate_block_cache=kDisable + block_restart_interval=16 + pin_l0_filter_and_index_blocks_in_cache=true + cache_index_and_filter_blocks_with_high_priority=true + flush_block_policy_factory=FlushBlockBySizePolicyFactory + + +[CFOptions "_timer_state/event_user-timers"] + bottommost_file_compaction_delay=0 + memtable_protection_bytes_per_key=0 + compression_per_level=kSnappyCompression + bottommost_compression=kDisableCompressionOption + sample_for_compression=0 + blob_garbage_collection_age_cutoff=0.250000 + blob_compression_type=kNoCompression + prepopulate_blob_cache=kDisable + blob_compaction_readahead_size=0 + level0_stop_writes_trigger=36 + min_blob_size=0 + last_level_temperature=kUnknown + compaction_options_universal={allow_trivial_move=false;stop_style=kCompactionStopStyleTotalSize;min_merge_width=2;compression_size_percent=-1;max_size_amplification_percent=200;incremental=false;max_merge_width=4294967295;size_ratio=1;} + target_file_size_base=67108864 + ignore_max_compaction_bytes_for_input=true + memtable_whole_key_filtering=false + blob_file_starting_level=0 + soft_pending_compaction_bytes_limit=68719476736 + max_write_buffer_number=2 + ttl=2592000 + compaction_options_fifo={file_temperature_age_thresholds=;allow_compaction=false;age_for_warm=0;max_table_files_size=1073741824;} + check_flush_compaction_key_order=true + memtable_huge_page_size=0 + max_successive_merges=0 + inplace_update_num_locks=10000 + enable_blob_garbage_collection=false + arena_block_size=1048576 + bottommost_compression_opts={use_zstd_dict_trainer=true;enabled=false;zstd_max_train_bytes=0;parallel_threads=1;max_compressed_bytes_per_kb=896;checksum=false;max_dict_bytes=0;strategy=0;max_dict_buffer_bytes=0;level=32767;window_bits=-14;} + target_file_size_multiplier=1 + max_bytes_for_level_multiplier_additional=1:1:1:1:1:1:1 + blob_garbage_collection_force_threshold=1.000000 + enable_blob_files=false + level0_slowdown_writes_trigger=20 + compression=kSnappyCompression + level0_file_num_compaction_trigger=4 + block_protection_bytes_per_key=0 + prefix_extractor=nullptr + max_bytes_for_level_multiplier=10.000000 + write_buffer_size=67108864 + disable_auto_compactions=false + max_compaction_bytes=1677721600 + memtable_max_range_deletions=0 + compression_opts={use_zstd_dict_trainer=true;enabled=false;zstd_max_train_bytes=0;parallel_threads=1;max_compressed_bytes_per_kb=896;checksum=false;max_dict_bytes=0;strategy=0;max_dict_buffer_bytes=0;level=32767;window_bits=-14;} + hard_pending_compaction_bytes_limit=274877906944 + blob_file_size=268435456 + periodic_compaction_seconds=2592000 + paranoid_file_checks=false + experimental_mempurge_threshold=0.000000 + memtable_prefix_bloom_size_ratio=0.000000 + max_bytes_for_level_base=268435456 + max_sequential_skip_in_iterations=8 + report_bg_io_stats=false + sst_partitioner_factory=nullptr + compaction_pri=kMinOverlappingRatio + compaction_style=kCompactionStyleLevel + compaction_filter_factory=nullptr + compaction_filter=nullptr + memtable_factory=SkipListFactory + comparator=leveldb.BytewiseComparator + bloom_locality=0 + min_write_buffer_number_to_merge=1 + table_factory=BlockBasedTable + max_write_buffer_size_to_maintain=0 + max_write_buffer_number_to_maintain=0 + optimize_filters_for_hits=false + default_temperature=kUnknown + preserve_internal_time_seconds=0 + force_consistency_checks=true + merge_operator={id=StringAppendTESTOperator;delimiter=,;} + num_levels=7 + level_compaction_dynamic_file_size=true + memtable_insert_with_hint_prefix_extractor=nullptr + level_compaction_dynamic_level_bytes=false + persist_user_defined_timestamps=true + preclude_last_level_data_seconds=0 + inplace_update_support=false + +[TableOptions/BlockBasedTable "_timer_state/event_user-timers"] + num_file_reads_for_auto_readahead=2 + metadata_cache_options={unpartitioned_pinning=kFallback;partition_pinning=kFallback;top_level_index_pinning=kFallback;} + read_amp_bytes_per_bit=0 + verify_compression=false + format_version=5 + optimize_filters_for_memory=false + partition_filters=false + detect_filter_construct_corruption=false + initial_auto_readahead_size=8192 + max_auto_readahead_size=262144 + enable_index_compression=true + checksum=kXXH3 + index_block_restart_interval=1 + pin_top_level_index_and_filter=true + block_align=false + block_size=4096 + index_type=kBinarySearch + filter_policy=nullptr + metadata_block_size=4096 + no_block_cache=false + index_shortening=kShortenSeparators + whole_key_filtering=true + block_size_deviation=10 + data_block_index_type=kDataBlockBinarySearch + data_block_hash_table_util_ratio=0.750000 + cache_index_and_filter_blocks=true + prepopulate_block_cache=kDisable + block_restart_interval=16 + pin_l0_filter_and_index_blocks_in_cache=true + cache_index_and_filter_blocks_with_high_priority=true + flush_block_policy_factory=FlushBlockBySizePolicyFactory + diff --git a/flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/3d66b41a-c24a-4b95-8547-51dea66dce54 b/flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/3d66b41a-c24a-4b95-8547-51dea66dce54 new file mode 100644 index 00000000000000..ad0dfcf758edc5 --- /dev/null +++ b/flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/3d66b41a-c24a-4b95-8547-51dea66dce54 @@ -0,0 +1,429 @@ +# This is a RocksDB option file. +# +# For detailed file format spec, please refer to the example file +# in examples/rocksdb_option_file_example.ini +# + +[Version] + rocksdb_version=8.10.0 + options_file_version=1.1 + +[DBOptions] + max_background_flushes=-1 + compaction_readahead_size=2097152 + strict_bytes_per_sync=false + wal_bytes_per_sync=0 + max_open_files=-1 + stats_history_buffer_size=1048576 + max_total_wal_size=0 + stats_persist_period_sec=600 + stats_dump_period_sec=0 + avoid_flush_during_shutdown=true + max_subcompactions=1 + bytes_per_sync=0 + delayed_write_rate=16777216 + max_background_compactions=-1 + max_background_jobs=2 + delete_obsolete_files_period_micros=21600000000 + writable_file_max_buffer_size=1048576 + file_checksum_gen_factory=nullptr + allow_data_in_errors=false + max_bgerror_resume_count=2147483647 + best_efforts_recovery=false + write_dbid_to_manifest=false + atomic_flush=false + manual_wal_flush=false + two_write_queues=false + avoid_flush_during_recovery=false + dump_malloc_stats=false + info_log_level=INFO_LEVEL + write_thread_slow_yield_usec=3 + unordered_write=false + allow_ingest_behind=false + fail_if_options_file_error=true + persist_stats_to_disk=false + WAL_ttl_seconds=0 + bgerror_resume_retry_interval=1000000 + allow_concurrent_memtable_write=true + paranoid_checks=true + WAL_size_limit_MB=0 + lowest_used_cache_tier=kNonVolatileBlockTier + keep_log_file_num=4 + table_cache_numshardbits=6 + max_file_opening_threads=16 + random_access_max_buffer_size=1048576 + log_readahead_size=0 + enable_pipelined_write=false + wal_recovery_mode=kPointInTimeRecovery + db_write_buffer_size=0 + allow_2pc=false + skip_checking_sst_file_sizes_on_db_open=false + skip_stats_update_on_db_open=false + recycle_log_file_num=0 + db_host_id=__hostname__ + track_and_verify_wals_in_manifest=false + use_fsync=false + wal_compression=kNoCompression + compaction_verify_record_count=true + error_if_exists=false + manifest_preallocation_size=4194304 + is_fd_close_on_exec=true + enable_write_thread_adaptive_yield=true + enable_thread_tracking=false + avoid_unnecessary_blocking_io=false + allow_fallocate=true + max_log_file_size=26214400 + advise_random_on_open=true + create_missing_column_families=false + max_write_batch_group_size_bytes=1048576 + use_adaptive_mutex=false + wal_filter=nullptr + create_if_missing=true + enforce_single_del_contracts=true + allow_mmap_writes=false + access_hint_on_compaction_start=NORMAL + verify_sst_unique_id_in_manifest=true + log_file_time_to_roll=0 + use_direct_io_for_flush_and_compaction=false + flush_verify_memtable_count=true + max_manifest_file_size=1073741824 + write_thread_max_yield_usec=100 + use_direct_reads=false + allow_mmap_reads=false + + +[CFOptions "default"] + bottommost_file_compaction_delay=0 + memtable_protection_bytes_per_key=0 + compression_per_level=kSnappyCompression + bottommost_compression=kDisableCompressionOption + sample_for_compression=0 + blob_garbage_collection_age_cutoff=0.250000 + blob_compression_type=kNoCompression + prepopulate_blob_cache=kDisable + blob_compaction_readahead_size=0 + level0_stop_writes_trigger=36 + min_blob_size=0 + last_level_temperature=kUnknown + compaction_options_universal={allow_trivial_move=false;stop_style=kCompactionStopStyleTotalSize;min_merge_width=2;compression_size_percent=-1;max_size_amplification_percent=200;incremental=false;max_merge_width=4294967295;size_ratio=1;} + target_file_size_base=67108864 + ignore_max_compaction_bytes_for_input=true + memtable_whole_key_filtering=false + blob_file_starting_level=0 + soft_pending_compaction_bytes_limit=68719476736 + max_write_buffer_number=2 + ttl=2592000 + compaction_options_fifo={file_temperature_age_thresholds=;allow_compaction=false;age_for_warm=0;max_table_files_size=1073741824;} + check_flush_compaction_key_order=true + memtable_huge_page_size=0 + max_successive_merges=0 + inplace_update_num_locks=10000 + enable_blob_garbage_collection=false + arena_block_size=1048576 + bottommost_compression_opts={use_zstd_dict_trainer=true;enabled=false;zstd_max_train_bytes=0;parallel_threads=1;max_compressed_bytes_per_kb=896;checksum=false;max_dict_bytes=0;strategy=0;max_dict_buffer_bytes=0;level=32767;window_bits=-14;} + target_file_size_multiplier=1 + max_bytes_for_level_multiplier_additional=1:1:1:1:1:1:1 + blob_garbage_collection_force_threshold=1.000000 + enable_blob_files=false + level0_slowdown_writes_trigger=20 + compression=kSnappyCompression + level0_file_num_compaction_trigger=4 + block_protection_bytes_per_key=0 + prefix_extractor=nullptr + max_bytes_for_level_multiplier=10.000000 + write_buffer_size=67108864 + disable_auto_compactions=false + max_compaction_bytes=1677721600 + memtable_max_range_deletions=0 + compression_opts={use_zstd_dict_trainer=true;enabled=false;zstd_max_train_bytes=0;parallel_threads=1;max_compressed_bytes_per_kb=896;checksum=false;max_dict_bytes=0;strategy=0;max_dict_buffer_bytes=0;level=32767;window_bits=-14;} + hard_pending_compaction_bytes_limit=274877906944 + blob_file_size=268435456 + periodic_compaction_seconds=2592000 + paranoid_file_checks=false + experimental_mempurge_threshold=0.000000 + memtable_prefix_bloom_size_ratio=0.000000 + max_bytes_for_level_base=268435456 + max_sequential_skip_in_iterations=8 + report_bg_io_stats=false + sst_partitioner_factory=nullptr + compaction_pri=kMinOverlappingRatio + compaction_style=kCompactionStyleLevel + compaction_filter_factory=nullptr + compaction_filter=nullptr + memtable_factory=SkipListFactory + comparator=leveldb.BytewiseComparator + bloom_locality=0 + min_write_buffer_number_to_merge=1 + table_factory=BlockBasedTable + max_write_buffer_size_to_maintain=0 + max_write_buffer_number_to_maintain=0 + optimize_filters_for_hits=false + default_temperature=kUnknown + preserve_internal_time_seconds=0 + force_consistency_checks=true + merge_operator={id=StringAppendTESTOperator;delimiter=,;} + num_levels=7 + level_compaction_dynamic_file_size=true + memtable_insert_with_hint_prefix_extractor=nullptr + level_compaction_dynamic_level_bytes=false + persist_user_defined_timestamps=true + preclude_last_level_data_seconds=0 + inplace_update_support=false + +[TableOptions/BlockBasedTable "default"] + num_file_reads_for_auto_readahead=2 + metadata_cache_options={unpartitioned_pinning=kFallback;partition_pinning=kFallback;top_level_index_pinning=kFallback;} + read_amp_bytes_per_bit=0 + verify_compression=false + format_version=5 + optimize_filters_for_memory=false + partition_filters=false + detect_filter_construct_corruption=false + initial_auto_readahead_size=8192 + max_auto_readahead_size=262144 + enable_index_compression=true + checksum=kXXH3 + index_block_restart_interval=1 + pin_top_level_index_and_filter=true + block_align=false + block_size=4096 + index_type=kBinarySearch + filter_policy=nullptr + metadata_block_size=4096 + no_block_cache=false + index_shortening=kShortenSeparators + whole_key_filtering=true + block_size_deviation=10 + data_block_index_type=kDataBlockBinarySearch + data_block_hash_table_util_ratio=0.750000 + cache_index_and_filter_blocks=true + prepopulate_block_cache=kDisable + block_restart_interval=16 + pin_l0_filter_and_index_blocks_in_cache=true + cache_index_and_filter_blocks_with_high_priority=true + flush_block_policy_factory=FlushBlockBySizePolicyFactory + + +[CFOptions "_timer_state/processing_user-timers"] + bottommost_file_compaction_delay=0 + memtable_protection_bytes_per_key=0 + compression_per_level=kSnappyCompression + bottommost_compression=kDisableCompressionOption + sample_for_compression=0 + blob_garbage_collection_age_cutoff=0.250000 + blob_compression_type=kNoCompression + prepopulate_blob_cache=kDisable + blob_compaction_readahead_size=0 + level0_stop_writes_trigger=36 + min_blob_size=0 + last_level_temperature=kUnknown + compaction_options_universal={allow_trivial_move=false;stop_style=kCompactionStopStyleTotalSize;min_merge_width=2;compression_size_percent=-1;max_size_amplification_percent=200;incremental=false;max_merge_width=4294967295;size_ratio=1;} + target_file_size_base=67108864 + ignore_max_compaction_bytes_for_input=true + memtable_whole_key_filtering=false + blob_file_starting_level=0 + soft_pending_compaction_bytes_limit=68719476736 + max_write_buffer_number=2 + ttl=2592000 + compaction_options_fifo={file_temperature_age_thresholds=;allow_compaction=false;age_for_warm=0;max_table_files_size=1073741824;} + check_flush_compaction_key_order=true + memtable_huge_page_size=0 + max_successive_merges=0 + inplace_update_num_locks=10000 + enable_blob_garbage_collection=false + arena_block_size=1048576 + bottommost_compression_opts={use_zstd_dict_trainer=true;enabled=false;zstd_max_train_bytes=0;parallel_threads=1;max_compressed_bytes_per_kb=896;checksum=false;max_dict_bytes=0;strategy=0;max_dict_buffer_bytes=0;level=32767;window_bits=-14;} + target_file_size_multiplier=1 + max_bytes_for_level_multiplier_additional=1:1:1:1:1:1:1 + blob_garbage_collection_force_threshold=1.000000 + enable_blob_files=false + level0_slowdown_writes_trigger=20 + compression=kSnappyCompression + level0_file_num_compaction_trigger=4 + block_protection_bytes_per_key=0 + prefix_extractor=nullptr + max_bytes_for_level_multiplier=10.000000 + write_buffer_size=67108864 + disable_auto_compactions=false + max_compaction_bytes=1677721600 + memtable_max_range_deletions=0 + compression_opts={use_zstd_dict_trainer=true;enabled=false;zstd_max_train_bytes=0;parallel_threads=1;max_compressed_bytes_per_kb=896;checksum=false;max_dict_bytes=0;strategy=0;max_dict_buffer_bytes=0;level=32767;window_bits=-14;} + hard_pending_compaction_bytes_limit=274877906944 + blob_file_size=268435456 + periodic_compaction_seconds=2592000 + paranoid_file_checks=false + experimental_mempurge_threshold=0.000000 + memtable_prefix_bloom_size_ratio=0.000000 + max_bytes_for_level_base=268435456 + max_sequential_skip_in_iterations=8 + report_bg_io_stats=false + sst_partitioner_factory=nullptr + compaction_pri=kMinOverlappingRatio + compaction_style=kCompactionStyleLevel + compaction_filter_factory=nullptr + compaction_filter=nullptr + memtable_factory=SkipListFactory + comparator=leveldb.BytewiseComparator + bloom_locality=0 + min_write_buffer_number_to_merge=1 + table_factory=BlockBasedTable + max_write_buffer_size_to_maintain=0 + max_write_buffer_number_to_maintain=0 + optimize_filters_for_hits=false + default_temperature=kUnknown + preserve_internal_time_seconds=0 + force_consistency_checks=true + merge_operator={id=StringAppendTESTOperator;delimiter=,;} + num_levels=7 + level_compaction_dynamic_file_size=true + memtable_insert_with_hint_prefix_extractor=nullptr + level_compaction_dynamic_level_bytes=false + persist_user_defined_timestamps=true + preclude_last_level_data_seconds=0 + inplace_update_support=false + +[TableOptions/BlockBasedTable "_timer_state/processing_user-timers"] + num_file_reads_for_auto_readahead=2 + metadata_cache_options={unpartitioned_pinning=kFallback;partition_pinning=kFallback;top_level_index_pinning=kFallback;} + read_amp_bytes_per_bit=0 + verify_compression=false + format_version=5 + optimize_filters_for_memory=false + partition_filters=false + detect_filter_construct_corruption=false + initial_auto_readahead_size=8192 + max_auto_readahead_size=262144 + enable_index_compression=true + checksum=kXXH3 + index_block_restart_interval=1 + pin_top_level_index_and_filter=true + block_align=false + block_size=4096 + index_type=kBinarySearch + filter_policy=nullptr + metadata_block_size=4096 + no_block_cache=false + index_shortening=kShortenSeparators + whole_key_filtering=true + block_size_deviation=10 + data_block_index_type=kDataBlockBinarySearch + data_block_hash_table_util_ratio=0.750000 + cache_index_and_filter_blocks=true + prepopulate_block_cache=kDisable + block_restart_interval=16 + pin_l0_filter_and_index_blocks_in_cache=true + cache_index_and_filter_blocks_with_high_priority=true + flush_block_policy_factory=FlushBlockBySizePolicyFactory + + +[CFOptions "_timer_state/event_user-timers"] + bottommost_file_compaction_delay=0 + memtable_protection_bytes_per_key=0 + compression_per_level=kSnappyCompression + bottommost_compression=kDisableCompressionOption + sample_for_compression=0 + blob_garbage_collection_age_cutoff=0.250000 + blob_compression_type=kNoCompression + prepopulate_blob_cache=kDisable + blob_compaction_readahead_size=0 + level0_stop_writes_trigger=36 + min_blob_size=0 + last_level_temperature=kUnknown + compaction_options_universal={allow_trivial_move=false;stop_style=kCompactionStopStyleTotalSize;min_merge_width=2;compression_size_percent=-1;max_size_amplification_percent=200;incremental=false;max_merge_width=4294967295;size_ratio=1;} + target_file_size_base=67108864 + ignore_max_compaction_bytes_for_input=true + memtable_whole_key_filtering=false + blob_file_starting_level=0 + soft_pending_compaction_bytes_limit=68719476736 + max_write_buffer_number=2 + ttl=2592000 + compaction_options_fifo={file_temperature_age_thresholds=;allow_compaction=false;age_for_warm=0;max_table_files_size=1073741824;} + check_flush_compaction_key_order=true + memtable_huge_page_size=0 + max_successive_merges=0 + inplace_update_num_locks=10000 + enable_blob_garbage_collection=false + arena_block_size=1048576 + bottommost_compression_opts={use_zstd_dict_trainer=true;enabled=false;zstd_max_train_bytes=0;parallel_threads=1;max_compressed_bytes_per_kb=896;checksum=false;max_dict_bytes=0;strategy=0;max_dict_buffer_bytes=0;level=32767;window_bits=-14;} + target_file_size_multiplier=1 + max_bytes_for_level_multiplier_additional=1:1:1:1:1:1:1 + blob_garbage_collection_force_threshold=1.000000 + enable_blob_files=false + level0_slowdown_writes_trigger=20 + compression=kSnappyCompression + level0_file_num_compaction_trigger=4 + block_protection_bytes_per_key=0 + prefix_extractor=nullptr + max_bytes_for_level_multiplier=10.000000 + write_buffer_size=67108864 + disable_auto_compactions=false + max_compaction_bytes=1677721600 + memtable_max_range_deletions=0 + compression_opts={use_zstd_dict_trainer=true;enabled=false;zstd_max_train_bytes=0;parallel_threads=1;max_compressed_bytes_per_kb=896;checksum=false;max_dict_bytes=0;strategy=0;max_dict_buffer_bytes=0;level=32767;window_bits=-14;} + hard_pending_compaction_bytes_limit=274877906944 + blob_file_size=268435456 + periodic_compaction_seconds=2592000 + paranoid_file_checks=false + experimental_mempurge_threshold=0.000000 + memtable_prefix_bloom_size_ratio=0.000000 + max_bytes_for_level_base=268435456 + max_sequential_skip_in_iterations=8 + report_bg_io_stats=false + sst_partitioner_factory=nullptr + compaction_pri=kMinOverlappingRatio + compaction_style=kCompactionStyleLevel + compaction_filter_factory=nullptr + compaction_filter=nullptr + memtable_factory=SkipListFactory + comparator=leveldb.BytewiseComparator + bloom_locality=0 + min_write_buffer_number_to_merge=1 + table_factory=BlockBasedTable + max_write_buffer_size_to_maintain=0 + max_write_buffer_number_to_maintain=0 + optimize_filters_for_hits=false + default_temperature=kUnknown + preserve_internal_time_seconds=0 + force_consistency_checks=true + merge_operator={id=StringAppendTESTOperator;delimiter=,;} + num_levels=7 + level_compaction_dynamic_file_size=true + memtable_insert_with_hint_prefix_extractor=nullptr + level_compaction_dynamic_level_bytes=false + persist_user_defined_timestamps=true + preclude_last_level_data_seconds=0 + inplace_update_support=false + +[TableOptions/BlockBasedTable "_timer_state/event_user-timers"] + num_file_reads_for_auto_readahead=2 + metadata_cache_options={unpartitioned_pinning=kFallback;partition_pinning=kFallback;top_level_index_pinning=kFallback;} + read_amp_bytes_per_bit=0 + verify_compression=false + format_version=5 + optimize_filters_for_memory=false + partition_filters=false + detect_filter_construct_corruption=false + initial_auto_readahead_size=8192 + max_auto_readahead_size=262144 + enable_index_compression=true + checksum=kXXH3 + index_block_restart_interval=1 + pin_top_level_index_and_filter=true + block_align=false + block_size=4096 + index_type=kBinarySearch + filter_policy=nullptr + metadata_block_size=4096 + no_block_cache=false + index_shortening=kShortenSeparators + whole_key_filtering=true + block_size_deviation=10 + data_block_index_type=kDataBlockBinarySearch + data_block_hash_table_util_ratio=0.750000 + cache_index_and_filter_blocks=true + prepopulate_block_cache=kDisable + block_restart_interval=16 + pin_l0_filter_and_index_blocks_in_cache=true + cache_index_and_filter_blocks_with_high_priority=true + flush_block_policy_factory=FlushBlockBySizePolicyFactory + diff --git a/flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/4baf8c14-d5d1-46c6-a22b-6cf01b015fd5 b/flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/4baf8c14-d5d1-46c6-a22b-6cf01b015fd5 new file mode 100644 index 00000000000000..aa5bb8ea50905a --- /dev/null +++ b/flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/4baf8c14-d5d1-46c6-a22b-6cf01b015fd5 @@ -0,0 +1 @@ +MANIFEST-000005 diff --git a/flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/520f29a7-9ddd-4bac-ba41-550bb701a0ef b/flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/520f29a7-9ddd-4bac-ba41-550bb701a0ef new file mode 100644 index 00000000000000..aa5bb8ea50905a --- /dev/null +++ b/flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/520f29a7-9ddd-4bac-ba41-550bb701a0ef @@ -0,0 +1 @@ +MANIFEST-000005 diff --git a/flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/6f7d7bf7-df0d-4488-9c77-a2ffddace92f b/flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/6f7d7bf7-df0d-4488-9c77-a2ffddace92f new file mode 100644 index 00000000000000..ad0dfcf758edc5 --- /dev/null +++ b/flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/6f7d7bf7-df0d-4488-9c77-a2ffddace92f @@ -0,0 +1,429 @@ +# This is a RocksDB option file. +# +# For detailed file format spec, please refer to the example file +# in examples/rocksdb_option_file_example.ini +# + +[Version] + rocksdb_version=8.10.0 + options_file_version=1.1 + +[DBOptions] + max_background_flushes=-1 + compaction_readahead_size=2097152 + strict_bytes_per_sync=false + wal_bytes_per_sync=0 + max_open_files=-1 + stats_history_buffer_size=1048576 + max_total_wal_size=0 + stats_persist_period_sec=600 + stats_dump_period_sec=0 + avoid_flush_during_shutdown=true + max_subcompactions=1 + bytes_per_sync=0 + delayed_write_rate=16777216 + max_background_compactions=-1 + max_background_jobs=2 + delete_obsolete_files_period_micros=21600000000 + writable_file_max_buffer_size=1048576 + file_checksum_gen_factory=nullptr + allow_data_in_errors=false + max_bgerror_resume_count=2147483647 + best_efforts_recovery=false + write_dbid_to_manifest=false + atomic_flush=false + manual_wal_flush=false + two_write_queues=false + avoid_flush_during_recovery=false + dump_malloc_stats=false + info_log_level=INFO_LEVEL + write_thread_slow_yield_usec=3 + unordered_write=false + allow_ingest_behind=false + fail_if_options_file_error=true + persist_stats_to_disk=false + WAL_ttl_seconds=0 + bgerror_resume_retry_interval=1000000 + allow_concurrent_memtable_write=true + paranoid_checks=true + WAL_size_limit_MB=0 + lowest_used_cache_tier=kNonVolatileBlockTier + keep_log_file_num=4 + table_cache_numshardbits=6 + max_file_opening_threads=16 + random_access_max_buffer_size=1048576 + log_readahead_size=0 + enable_pipelined_write=false + wal_recovery_mode=kPointInTimeRecovery + db_write_buffer_size=0 + allow_2pc=false + skip_checking_sst_file_sizes_on_db_open=false + skip_stats_update_on_db_open=false + recycle_log_file_num=0 + db_host_id=__hostname__ + track_and_verify_wals_in_manifest=false + use_fsync=false + wal_compression=kNoCompression + compaction_verify_record_count=true + error_if_exists=false + manifest_preallocation_size=4194304 + is_fd_close_on_exec=true + enable_write_thread_adaptive_yield=true + enable_thread_tracking=false + avoid_unnecessary_blocking_io=false + allow_fallocate=true + max_log_file_size=26214400 + advise_random_on_open=true + create_missing_column_families=false + max_write_batch_group_size_bytes=1048576 + use_adaptive_mutex=false + wal_filter=nullptr + create_if_missing=true + enforce_single_del_contracts=true + allow_mmap_writes=false + access_hint_on_compaction_start=NORMAL + verify_sst_unique_id_in_manifest=true + log_file_time_to_roll=0 + use_direct_io_for_flush_and_compaction=false + flush_verify_memtable_count=true + max_manifest_file_size=1073741824 + write_thread_max_yield_usec=100 + use_direct_reads=false + allow_mmap_reads=false + + +[CFOptions "default"] + bottommost_file_compaction_delay=0 + memtable_protection_bytes_per_key=0 + compression_per_level=kSnappyCompression + bottommost_compression=kDisableCompressionOption + sample_for_compression=0 + blob_garbage_collection_age_cutoff=0.250000 + blob_compression_type=kNoCompression + prepopulate_blob_cache=kDisable + blob_compaction_readahead_size=0 + level0_stop_writes_trigger=36 + min_blob_size=0 + last_level_temperature=kUnknown + compaction_options_universal={allow_trivial_move=false;stop_style=kCompactionStopStyleTotalSize;min_merge_width=2;compression_size_percent=-1;max_size_amplification_percent=200;incremental=false;max_merge_width=4294967295;size_ratio=1;} + target_file_size_base=67108864 + ignore_max_compaction_bytes_for_input=true + memtable_whole_key_filtering=false + blob_file_starting_level=0 + soft_pending_compaction_bytes_limit=68719476736 + max_write_buffer_number=2 + ttl=2592000 + compaction_options_fifo={file_temperature_age_thresholds=;allow_compaction=false;age_for_warm=0;max_table_files_size=1073741824;} + check_flush_compaction_key_order=true + memtable_huge_page_size=0 + max_successive_merges=0 + inplace_update_num_locks=10000 + enable_blob_garbage_collection=false + arena_block_size=1048576 + bottommost_compression_opts={use_zstd_dict_trainer=true;enabled=false;zstd_max_train_bytes=0;parallel_threads=1;max_compressed_bytes_per_kb=896;checksum=false;max_dict_bytes=0;strategy=0;max_dict_buffer_bytes=0;level=32767;window_bits=-14;} + target_file_size_multiplier=1 + max_bytes_for_level_multiplier_additional=1:1:1:1:1:1:1 + blob_garbage_collection_force_threshold=1.000000 + enable_blob_files=false + level0_slowdown_writes_trigger=20 + compression=kSnappyCompression + level0_file_num_compaction_trigger=4 + block_protection_bytes_per_key=0 + prefix_extractor=nullptr + max_bytes_for_level_multiplier=10.000000 + write_buffer_size=67108864 + disable_auto_compactions=false + max_compaction_bytes=1677721600 + memtable_max_range_deletions=0 + compression_opts={use_zstd_dict_trainer=true;enabled=false;zstd_max_train_bytes=0;parallel_threads=1;max_compressed_bytes_per_kb=896;checksum=false;max_dict_bytes=0;strategy=0;max_dict_buffer_bytes=0;level=32767;window_bits=-14;} + hard_pending_compaction_bytes_limit=274877906944 + blob_file_size=268435456 + periodic_compaction_seconds=2592000 + paranoid_file_checks=false + experimental_mempurge_threshold=0.000000 + memtable_prefix_bloom_size_ratio=0.000000 + max_bytes_for_level_base=268435456 + max_sequential_skip_in_iterations=8 + report_bg_io_stats=false + sst_partitioner_factory=nullptr + compaction_pri=kMinOverlappingRatio + compaction_style=kCompactionStyleLevel + compaction_filter_factory=nullptr + compaction_filter=nullptr + memtable_factory=SkipListFactory + comparator=leveldb.BytewiseComparator + bloom_locality=0 + min_write_buffer_number_to_merge=1 + table_factory=BlockBasedTable + max_write_buffer_size_to_maintain=0 + max_write_buffer_number_to_maintain=0 + optimize_filters_for_hits=false + default_temperature=kUnknown + preserve_internal_time_seconds=0 + force_consistency_checks=true + merge_operator={id=StringAppendTESTOperator;delimiter=,;} + num_levels=7 + level_compaction_dynamic_file_size=true + memtable_insert_with_hint_prefix_extractor=nullptr + level_compaction_dynamic_level_bytes=false + persist_user_defined_timestamps=true + preclude_last_level_data_seconds=0 + inplace_update_support=false + +[TableOptions/BlockBasedTable "default"] + num_file_reads_for_auto_readahead=2 + metadata_cache_options={unpartitioned_pinning=kFallback;partition_pinning=kFallback;top_level_index_pinning=kFallback;} + read_amp_bytes_per_bit=0 + verify_compression=false + format_version=5 + optimize_filters_for_memory=false + partition_filters=false + detect_filter_construct_corruption=false + initial_auto_readahead_size=8192 + max_auto_readahead_size=262144 + enable_index_compression=true + checksum=kXXH3 + index_block_restart_interval=1 + pin_top_level_index_and_filter=true + block_align=false + block_size=4096 + index_type=kBinarySearch + filter_policy=nullptr + metadata_block_size=4096 + no_block_cache=false + index_shortening=kShortenSeparators + whole_key_filtering=true + block_size_deviation=10 + data_block_index_type=kDataBlockBinarySearch + data_block_hash_table_util_ratio=0.750000 + cache_index_and_filter_blocks=true + prepopulate_block_cache=kDisable + block_restart_interval=16 + pin_l0_filter_and_index_blocks_in_cache=true + cache_index_and_filter_blocks_with_high_priority=true + flush_block_policy_factory=FlushBlockBySizePolicyFactory + + +[CFOptions "_timer_state/processing_user-timers"] + bottommost_file_compaction_delay=0 + memtable_protection_bytes_per_key=0 + compression_per_level=kSnappyCompression + bottommost_compression=kDisableCompressionOption + sample_for_compression=0 + blob_garbage_collection_age_cutoff=0.250000 + blob_compression_type=kNoCompression + prepopulate_blob_cache=kDisable + blob_compaction_readahead_size=0 + level0_stop_writes_trigger=36 + min_blob_size=0 + last_level_temperature=kUnknown + compaction_options_universal={allow_trivial_move=false;stop_style=kCompactionStopStyleTotalSize;min_merge_width=2;compression_size_percent=-1;max_size_amplification_percent=200;incremental=false;max_merge_width=4294967295;size_ratio=1;} + target_file_size_base=67108864 + ignore_max_compaction_bytes_for_input=true + memtable_whole_key_filtering=false + blob_file_starting_level=0 + soft_pending_compaction_bytes_limit=68719476736 + max_write_buffer_number=2 + ttl=2592000 + compaction_options_fifo={file_temperature_age_thresholds=;allow_compaction=false;age_for_warm=0;max_table_files_size=1073741824;} + check_flush_compaction_key_order=true + memtable_huge_page_size=0 + max_successive_merges=0 + inplace_update_num_locks=10000 + enable_blob_garbage_collection=false + arena_block_size=1048576 + bottommost_compression_opts={use_zstd_dict_trainer=true;enabled=false;zstd_max_train_bytes=0;parallel_threads=1;max_compressed_bytes_per_kb=896;checksum=false;max_dict_bytes=0;strategy=0;max_dict_buffer_bytes=0;level=32767;window_bits=-14;} + target_file_size_multiplier=1 + max_bytes_for_level_multiplier_additional=1:1:1:1:1:1:1 + blob_garbage_collection_force_threshold=1.000000 + enable_blob_files=false + level0_slowdown_writes_trigger=20 + compression=kSnappyCompression + level0_file_num_compaction_trigger=4 + block_protection_bytes_per_key=0 + prefix_extractor=nullptr + max_bytes_for_level_multiplier=10.000000 + write_buffer_size=67108864 + disable_auto_compactions=false + max_compaction_bytes=1677721600 + memtable_max_range_deletions=0 + compression_opts={use_zstd_dict_trainer=true;enabled=false;zstd_max_train_bytes=0;parallel_threads=1;max_compressed_bytes_per_kb=896;checksum=false;max_dict_bytes=0;strategy=0;max_dict_buffer_bytes=0;level=32767;window_bits=-14;} + hard_pending_compaction_bytes_limit=274877906944 + blob_file_size=268435456 + periodic_compaction_seconds=2592000 + paranoid_file_checks=false + experimental_mempurge_threshold=0.000000 + memtable_prefix_bloom_size_ratio=0.000000 + max_bytes_for_level_base=268435456 + max_sequential_skip_in_iterations=8 + report_bg_io_stats=false + sst_partitioner_factory=nullptr + compaction_pri=kMinOverlappingRatio + compaction_style=kCompactionStyleLevel + compaction_filter_factory=nullptr + compaction_filter=nullptr + memtable_factory=SkipListFactory + comparator=leveldb.BytewiseComparator + bloom_locality=0 + min_write_buffer_number_to_merge=1 + table_factory=BlockBasedTable + max_write_buffer_size_to_maintain=0 + max_write_buffer_number_to_maintain=0 + optimize_filters_for_hits=false + default_temperature=kUnknown + preserve_internal_time_seconds=0 + force_consistency_checks=true + merge_operator={id=StringAppendTESTOperator;delimiter=,;} + num_levels=7 + level_compaction_dynamic_file_size=true + memtable_insert_with_hint_prefix_extractor=nullptr + level_compaction_dynamic_level_bytes=false + persist_user_defined_timestamps=true + preclude_last_level_data_seconds=0 + inplace_update_support=false + +[TableOptions/BlockBasedTable "_timer_state/processing_user-timers"] + num_file_reads_for_auto_readahead=2 + metadata_cache_options={unpartitioned_pinning=kFallback;partition_pinning=kFallback;top_level_index_pinning=kFallback;} + read_amp_bytes_per_bit=0 + verify_compression=false + format_version=5 + optimize_filters_for_memory=false + partition_filters=false + detect_filter_construct_corruption=false + initial_auto_readahead_size=8192 + max_auto_readahead_size=262144 + enable_index_compression=true + checksum=kXXH3 + index_block_restart_interval=1 + pin_top_level_index_and_filter=true + block_align=false + block_size=4096 + index_type=kBinarySearch + filter_policy=nullptr + metadata_block_size=4096 + no_block_cache=false + index_shortening=kShortenSeparators + whole_key_filtering=true + block_size_deviation=10 + data_block_index_type=kDataBlockBinarySearch + data_block_hash_table_util_ratio=0.750000 + cache_index_and_filter_blocks=true + prepopulate_block_cache=kDisable + block_restart_interval=16 + pin_l0_filter_and_index_blocks_in_cache=true + cache_index_and_filter_blocks_with_high_priority=true + flush_block_policy_factory=FlushBlockBySizePolicyFactory + + +[CFOptions "_timer_state/event_user-timers"] + bottommost_file_compaction_delay=0 + memtable_protection_bytes_per_key=0 + compression_per_level=kSnappyCompression + bottommost_compression=kDisableCompressionOption + sample_for_compression=0 + blob_garbage_collection_age_cutoff=0.250000 + blob_compression_type=kNoCompression + prepopulate_blob_cache=kDisable + blob_compaction_readahead_size=0 + level0_stop_writes_trigger=36 + min_blob_size=0 + last_level_temperature=kUnknown + compaction_options_universal={allow_trivial_move=false;stop_style=kCompactionStopStyleTotalSize;min_merge_width=2;compression_size_percent=-1;max_size_amplification_percent=200;incremental=false;max_merge_width=4294967295;size_ratio=1;} + target_file_size_base=67108864 + ignore_max_compaction_bytes_for_input=true + memtable_whole_key_filtering=false + blob_file_starting_level=0 + soft_pending_compaction_bytes_limit=68719476736 + max_write_buffer_number=2 + ttl=2592000 + compaction_options_fifo={file_temperature_age_thresholds=;allow_compaction=false;age_for_warm=0;max_table_files_size=1073741824;} + check_flush_compaction_key_order=true + memtable_huge_page_size=0 + max_successive_merges=0 + inplace_update_num_locks=10000 + enable_blob_garbage_collection=false + arena_block_size=1048576 + bottommost_compression_opts={use_zstd_dict_trainer=true;enabled=false;zstd_max_train_bytes=0;parallel_threads=1;max_compressed_bytes_per_kb=896;checksum=false;max_dict_bytes=0;strategy=0;max_dict_buffer_bytes=0;level=32767;window_bits=-14;} + target_file_size_multiplier=1 + max_bytes_for_level_multiplier_additional=1:1:1:1:1:1:1 + blob_garbage_collection_force_threshold=1.000000 + enable_blob_files=false + level0_slowdown_writes_trigger=20 + compression=kSnappyCompression + level0_file_num_compaction_trigger=4 + block_protection_bytes_per_key=0 + prefix_extractor=nullptr + max_bytes_for_level_multiplier=10.000000 + write_buffer_size=67108864 + disable_auto_compactions=false + max_compaction_bytes=1677721600 + memtable_max_range_deletions=0 + compression_opts={use_zstd_dict_trainer=true;enabled=false;zstd_max_train_bytes=0;parallel_threads=1;max_compressed_bytes_per_kb=896;checksum=false;max_dict_bytes=0;strategy=0;max_dict_buffer_bytes=0;level=32767;window_bits=-14;} + hard_pending_compaction_bytes_limit=274877906944 + blob_file_size=268435456 + periodic_compaction_seconds=2592000 + paranoid_file_checks=false + experimental_mempurge_threshold=0.000000 + memtable_prefix_bloom_size_ratio=0.000000 + max_bytes_for_level_base=268435456 + max_sequential_skip_in_iterations=8 + report_bg_io_stats=false + sst_partitioner_factory=nullptr + compaction_pri=kMinOverlappingRatio + compaction_style=kCompactionStyleLevel + compaction_filter_factory=nullptr + compaction_filter=nullptr + memtable_factory=SkipListFactory + comparator=leveldb.BytewiseComparator + bloom_locality=0 + min_write_buffer_number_to_merge=1 + table_factory=BlockBasedTable + max_write_buffer_size_to_maintain=0 + max_write_buffer_number_to_maintain=0 + optimize_filters_for_hits=false + default_temperature=kUnknown + preserve_internal_time_seconds=0 + force_consistency_checks=true + merge_operator={id=StringAppendTESTOperator;delimiter=,;} + num_levels=7 + level_compaction_dynamic_file_size=true + memtable_insert_with_hint_prefix_extractor=nullptr + level_compaction_dynamic_level_bytes=false + persist_user_defined_timestamps=true + preclude_last_level_data_seconds=0 + inplace_update_support=false + +[TableOptions/BlockBasedTable "_timer_state/event_user-timers"] + num_file_reads_for_auto_readahead=2 + metadata_cache_options={unpartitioned_pinning=kFallback;partition_pinning=kFallback;top_level_index_pinning=kFallback;} + read_amp_bytes_per_bit=0 + verify_compression=false + format_version=5 + optimize_filters_for_memory=false + partition_filters=false + detect_filter_construct_corruption=false + initial_auto_readahead_size=8192 + max_auto_readahead_size=262144 + enable_index_compression=true + checksum=kXXH3 + index_block_restart_interval=1 + pin_top_level_index_and_filter=true + block_align=false + block_size=4096 + index_type=kBinarySearch + filter_policy=nullptr + metadata_block_size=4096 + no_block_cache=false + index_shortening=kShortenSeparators + whole_key_filtering=true + block_size_deviation=10 + data_block_index_type=kDataBlockBinarySearch + data_block_hash_table_util_ratio=0.750000 + cache_index_and_filter_blocks=true + prepopulate_block_cache=kDisable + block_restart_interval=16 + pin_l0_filter_and_index_blocks_in_cache=true + cache_index_and_filter_blocks_with_high_priority=true + flush_block_policy_factory=FlushBlockBySizePolicyFactory + diff --git a/flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/776a81d6-b722-4468-acde-8d1bd79a7e90 b/flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/776a81d6-b722-4468-acde-8d1bd79a7e90 new file mode 100644 index 00000000000000..ad0dfcf758edc5 --- /dev/null +++ b/flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/776a81d6-b722-4468-acde-8d1bd79a7e90 @@ -0,0 +1,429 @@ +# This is a RocksDB option file. +# +# For detailed file format spec, please refer to the example file +# in examples/rocksdb_option_file_example.ini +# + +[Version] + rocksdb_version=8.10.0 + options_file_version=1.1 + +[DBOptions] + max_background_flushes=-1 + compaction_readahead_size=2097152 + strict_bytes_per_sync=false + wal_bytes_per_sync=0 + max_open_files=-1 + stats_history_buffer_size=1048576 + max_total_wal_size=0 + stats_persist_period_sec=600 + stats_dump_period_sec=0 + avoid_flush_during_shutdown=true + max_subcompactions=1 + bytes_per_sync=0 + delayed_write_rate=16777216 + max_background_compactions=-1 + max_background_jobs=2 + delete_obsolete_files_period_micros=21600000000 + writable_file_max_buffer_size=1048576 + file_checksum_gen_factory=nullptr + allow_data_in_errors=false + max_bgerror_resume_count=2147483647 + best_efforts_recovery=false + write_dbid_to_manifest=false + atomic_flush=false + manual_wal_flush=false + two_write_queues=false + avoid_flush_during_recovery=false + dump_malloc_stats=false + info_log_level=INFO_LEVEL + write_thread_slow_yield_usec=3 + unordered_write=false + allow_ingest_behind=false + fail_if_options_file_error=true + persist_stats_to_disk=false + WAL_ttl_seconds=0 + bgerror_resume_retry_interval=1000000 + allow_concurrent_memtable_write=true + paranoid_checks=true + WAL_size_limit_MB=0 + lowest_used_cache_tier=kNonVolatileBlockTier + keep_log_file_num=4 + table_cache_numshardbits=6 + max_file_opening_threads=16 + random_access_max_buffer_size=1048576 + log_readahead_size=0 + enable_pipelined_write=false + wal_recovery_mode=kPointInTimeRecovery + db_write_buffer_size=0 + allow_2pc=false + skip_checking_sst_file_sizes_on_db_open=false + skip_stats_update_on_db_open=false + recycle_log_file_num=0 + db_host_id=__hostname__ + track_and_verify_wals_in_manifest=false + use_fsync=false + wal_compression=kNoCompression + compaction_verify_record_count=true + error_if_exists=false + manifest_preallocation_size=4194304 + is_fd_close_on_exec=true + enable_write_thread_adaptive_yield=true + enable_thread_tracking=false + avoid_unnecessary_blocking_io=false + allow_fallocate=true + max_log_file_size=26214400 + advise_random_on_open=true + create_missing_column_families=false + max_write_batch_group_size_bytes=1048576 + use_adaptive_mutex=false + wal_filter=nullptr + create_if_missing=true + enforce_single_del_contracts=true + allow_mmap_writes=false + access_hint_on_compaction_start=NORMAL + verify_sst_unique_id_in_manifest=true + log_file_time_to_roll=0 + use_direct_io_for_flush_and_compaction=false + flush_verify_memtable_count=true + max_manifest_file_size=1073741824 + write_thread_max_yield_usec=100 + use_direct_reads=false + allow_mmap_reads=false + + +[CFOptions "default"] + bottommost_file_compaction_delay=0 + memtable_protection_bytes_per_key=0 + compression_per_level=kSnappyCompression + bottommost_compression=kDisableCompressionOption + sample_for_compression=0 + blob_garbage_collection_age_cutoff=0.250000 + blob_compression_type=kNoCompression + prepopulate_blob_cache=kDisable + blob_compaction_readahead_size=0 + level0_stop_writes_trigger=36 + min_blob_size=0 + last_level_temperature=kUnknown + compaction_options_universal={allow_trivial_move=false;stop_style=kCompactionStopStyleTotalSize;min_merge_width=2;compression_size_percent=-1;max_size_amplification_percent=200;incremental=false;max_merge_width=4294967295;size_ratio=1;} + target_file_size_base=67108864 + ignore_max_compaction_bytes_for_input=true + memtable_whole_key_filtering=false + blob_file_starting_level=0 + soft_pending_compaction_bytes_limit=68719476736 + max_write_buffer_number=2 + ttl=2592000 + compaction_options_fifo={file_temperature_age_thresholds=;allow_compaction=false;age_for_warm=0;max_table_files_size=1073741824;} + check_flush_compaction_key_order=true + memtable_huge_page_size=0 + max_successive_merges=0 + inplace_update_num_locks=10000 + enable_blob_garbage_collection=false + arena_block_size=1048576 + bottommost_compression_opts={use_zstd_dict_trainer=true;enabled=false;zstd_max_train_bytes=0;parallel_threads=1;max_compressed_bytes_per_kb=896;checksum=false;max_dict_bytes=0;strategy=0;max_dict_buffer_bytes=0;level=32767;window_bits=-14;} + target_file_size_multiplier=1 + max_bytes_for_level_multiplier_additional=1:1:1:1:1:1:1 + blob_garbage_collection_force_threshold=1.000000 + enable_blob_files=false + level0_slowdown_writes_trigger=20 + compression=kSnappyCompression + level0_file_num_compaction_trigger=4 + block_protection_bytes_per_key=0 + prefix_extractor=nullptr + max_bytes_for_level_multiplier=10.000000 + write_buffer_size=67108864 + disable_auto_compactions=false + max_compaction_bytes=1677721600 + memtable_max_range_deletions=0 + compression_opts={use_zstd_dict_trainer=true;enabled=false;zstd_max_train_bytes=0;parallel_threads=1;max_compressed_bytes_per_kb=896;checksum=false;max_dict_bytes=0;strategy=0;max_dict_buffer_bytes=0;level=32767;window_bits=-14;} + hard_pending_compaction_bytes_limit=274877906944 + blob_file_size=268435456 + periodic_compaction_seconds=2592000 + paranoid_file_checks=false + experimental_mempurge_threshold=0.000000 + memtable_prefix_bloom_size_ratio=0.000000 + max_bytes_for_level_base=268435456 + max_sequential_skip_in_iterations=8 + report_bg_io_stats=false + sst_partitioner_factory=nullptr + compaction_pri=kMinOverlappingRatio + compaction_style=kCompactionStyleLevel + compaction_filter_factory=nullptr + compaction_filter=nullptr + memtable_factory=SkipListFactory + comparator=leveldb.BytewiseComparator + bloom_locality=0 + min_write_buffer_number_to_merge=1 + table_factory=BlockBasedTable + max_write_buffer_size_to_maintain=0 + max_write_buffer_number_to_maintain=0 + optimize_filters_for_hits=false + default_temperature=kUnknown + preserve_internal_time_seconds=0 + force_consistency_checks=true + merge_operator={id=StringAppendTESTOperator;delimiter=,;} + num_levels=7 + level_compaction_dynamic_file_size=true + memtable_insert_with_hint_prefix_extractor=nullptr + level_compaction_dynamic_level_bytes=false + persist_user_defined_timestamps=true + preclude_last_level_data_seconds=0 + inplace_update_support=false + +[TableOptions/BlockBasedTable "default"] + num_file_reads_for_auto_readahead=2 + metadata_cache_options={unpartitioned_pinning=kFallback;partition_pinning=kFallback;top_level_index_pinning=kFallback;} + read_amp_bytes_per_bit=0 + verify_compression=false + format_version=5 + optimize_filters_for_memory=false + partition_filters=false + detect_filter_construct_corruption=false + initial_auto_readahead_size=8192 + max_auto_readahead_size=262144 + enable_index_compression=true + checksum=kXXH3 + index_block_restart_interval=1 + pin_top_level_index_and_filter=true + block_align=false + block_size=4096 + index_type=kBinarySearch + filter_policy=nullptr + metadata_block_size=4096 + no_block_cache=false + index_shortening=kShortenSeparators + whole_key_filtering=true + block_size_deviation=10 + data_block_index_type=kDataBlockBinarySearch + data_block_hash_table_util_ratio=0.750000 + cache_index_and_filter_blocks=true + prepopulate_block_cache=kDisable + block_restart_interval=16 + pin_l0_filter_and_index_blocks_in_cache=true + cache_index_and_filter_blocks_with_high_priority=true + flush_block_policy_factory=FlushBlockBySizePolicyFactory + + +[CFOptions "_timer_state/processing_user-timers"] + bottommost_file_compaction_delay=0 + memtable_protection_bytes_per_key=0 + compression_per_level=kSnappyCompression + bottommost_compression=kDisableCompressionOption + sample_for_compression=0 + blob_garbage_collection_age_cutoff=0.250000 + blob_compression_type=kNoCompression + prepopulate_blob_cache=kDisable + blob_compaction_readahead_size=0 + level0_stop_writes_trigger=36 + min_blob_size=0 + last_level_temperature=kUnknown + compaction_options_universal={allow_trivial_move=false;stop_style=kCompactionStopStyleTotalSize;min_merge_width=2;compression_size_percent=-1;max_size_amplification_percent=200;incremental=false;max_merge_width=4294967295;size_ratio=1;} + target_file_size_base=67108864 + ignore_max_compaction_bytes_for_input=true + memtable_whole_key_filtering=false + blob_file_starting_level=0 + soft_pending_compaction_bytes_limit=68719476736 + max_write_buffer_number=2 + ttl=2592000 + compaction_options_fifo={file_temperature_age_thresholds=;allow_compaction=false;age_for_warm=0;max_table_files_size=1073741824;} + check_flush_compaction_key_order=true + memtable_huge_page_size=0 + max_successive_merges=0 + inplace_update_num_locks=10000 + enable_blob_garbage_collection=false + arena_block_size=1048576 + bottommost_compression_opts={use_zstd_dict_trainer=true;enabled=false;zstd_max_train_bytes=0;parallel_threads=1;max_compressed_bytes_per_kb=896;checksum=false;max_dict_bytes=0;strategy=0;max_dict_buffer_bytes=0;level=32767;window_bits=-14;} + target_file_size_multiplier=1 + max_bytes_for_level_multiplier_additional=1:1:1:1:1:1:1 + blob_garbage_collection_force_threshold=1.000000 + enable_blob_files=false + level0_slowdown_writes_trigger=20 + compression=kSnappyCompression + level0_file_num_compaction_trigger=4 + block_protection_bytes_per_key=0 + prefix_extractor=nullptr + max_bytes_for_level_multiplier=10.000000 + write_buffer_size=67108864 + disable_auto_compactions=false + max_compaction_bytes=1677721600 + memtable_max_range_deletions=0 + compression_opts={use_zstd_dict_trainer=true;enabled=false;zstd_max_train_bytes=0;parallel_threads=1;max_compressed_bytes_per_kb=896;checksum=false;max_dict_bytes=0;strategy=0;max_dict_buffer_bytes=0;level=32767;window_bits=-14;} + hard_pending_compaction_bytes_limit=274877906944 + blob_file_size=268435456 + periodic_compaction_seconds=2592000 + paranoid_file_checks=false + experimental_mempurge_threshold=0.000000 + memtable_prefix_bloom_size_ratio=0.000000 + max_bytes_for_level_base=268435456 + max_sequential_skip_in_iterations=8 + report_bg_io_stats=false + sst_partitioner_factory=nullptr + compaction_pri=kMinOverlappingRatio + compaction_style=kCompactionStyleLevel + compaction_filter_factory=nullptr + compaction_filter=nullptr + memtable_factory=SkipListFactory + comparator=leveldb.BytewiseComparator + bloom_locality=0 + min_write_buffer_number_to_merge=1 + table_factory=BlockBasedTable + max_write_buffer_size_to_maintain=0 + max_write_buffer_number_to_maintain=0 + optimize_filters_for_hits=false + default_temperature=kUnknown + preserve_internal_time_seconds=0 + force_consistency_checks=true + merge_operator={id=StringAppendTESTOperator;delimiter=,;} + num_levels=7 + level_compaction_dynamic_file_size=true + memtable_insert_with_hint_prefix_extractor=nullptr + level_compaction_dynamic_level_bytes=false + persist_user_defined_timestamps=true + preclude_last_level_data_seconds=0 + inplace_update_support=false + +[TableOptions/BlockBasedTable "_timer_state/processing_user-timers"] + num_file_reads_for_auto_readahead=2 + metadata_cache_options={unpartitioned_pinning=kFallback;partition_pinning=kFallback;top_level_index_pinning=kFallback;} + read_amp_bytes_per_bit=0 + verify_compression=false + format_version=5 + optimize_filters_for_memory=false + partition_filters=false + detect_filter_construct_corruption=false + initial_auto_readahead_size=8192 + max_auto_readahead_size=262144 + enable_index_compression=true + checksum=kXXH3 + index_block_restart_interval=1 + pin_top_level_index_and_filter=true + block_align=false + block_size=4096 + index_type=kBinarySearch + filter_policy=nullptr + metadata_block_size=4096 + no_block_cache=false + index_shortening=kShortenSeparators + whole_key_filtering=true + block_size_deviation=10 + data_block_index_type=kDataBlockBinarySearch + data_block_hash_table_util_ratio=0.750000 + cache_index_and_filter_blocks=true + prepopulate_block_cache=kDisable + block_restart_interval=16 + pin_l0_filter_and_index_blocks_in_cache=true + cache_index_and_filter_blocks_with_high_priority=true + flush_block_policy_factory=FlushBlockBySizePolicyFactory + + +[CFOptions "_timer_state/event_user-timers"] + bottommost_file_compaction_delay=0 + memtable_protection_bytes_per_key=0 + compression_per_level=kSnappyCompression + bottommost_compression=kDisableCompressionOption + sample_for_compression=0 + blob_garbage_collection_age_cutoff=0.250000 + blob_compression_type=kNoCompression + prepopulate_blob_cache=kDisable + blob_compaction_readahead_size=0 + level0_stop_writes_trigger=36 + min_blob_size=0 + last_level_temperature=kUnknown + compaction_options_universal={allow_trivial_move=false;stop_style=kCompactionStopStyleTotalSize;min_merge_width=2;compression_size_percent=-1;max_size_amplification_percent=200;incremental=false;max_merge_width=4294967295;size_ratio=1;} + target_file_size_base=67108864 + ignore_max_compaction_bytes_for_input=true + memtable_whole_key_filtering=false + blob_file_starting_level=0 + soft_pending_compaction_bytes_limit=68719476736 + max_write_buffer_number=2 + ttl=2592000 + compaction_options_fifo={file_temperature_age_thresholds=;allow_compaction=false;age_for_warm=0;max_table_files_size=1073741824;} + check_flush_compaction_key_order=true + memtable_huge_page_size=0 + max_successive_merges=0 + inplace_update_num_locks=10000 + enable_blob_garbage_collection=false + arena_block_size=1048576 + bottommost_compression_opts={use_zstd_dict_trainer=true;enabled=false;zstd_max_train_bytes=0;parallel_threads=1;max_compressed_bytes_per_kb=896;checksum=false;max_dict_bytes=0;strategy=0;max_dict_buffer_bytes=0;level=32767;window_bits=-14;} + target_file_size_multiplier=1 + max_bytes_for_level_multiplier_additional=1:1:1:1:1:1:1 + blob_garbage_collection_force_threshold=1.000000 + enable_blob_files=false + level0_slowdown_writes_trigger=20 + compression=kSnappyCompression + level0_file_num_compaction_trigger=4 + block_protection_bytes_per_key=0 + prefix_extractor=nullptr + max_bytes_for_level_multiplier=10.000000 + write_buffer_size=67108864 + disable_auto_compactions=false + max_compaction_bytes=1677721600 + memtable_max_range_deletions=0 + compression_opts={use_zstd_dict_trainer=true;enabled=false;zstd_max_train_bytes=0;parallel_threads=1;max_compressed_bytes_per_kb=896;checksum=false;max_dict_bytes=0;strategy=0;max_dict_buffer_bytes=0;level=32767;window_bits=-14;} + hard_pending_compaction_bytes_limit=274877906944 + blob_file_size=268435456 + periodic_compaction_seconds=2592000 + paranoid_file_checks=false + experimental_mempurge_threshold=0.000000 + memtable_prefix_bloom_size_ratio=0.000000 + max_bytes_for_level_base=268435456 + max_sequential_skip_in_iterations=8 + report_bg_io_stats=false + sst_partitioner_factory=nullptr + compaction_pri=kMinOverlappingRatio + compaction_style=kCompactionStyleLevel + compaction_filter_factory=nullptr + compaction_filter=nullptr + memtable_factory=SkipListFactory + comparator=leveldb.BytewiseComparator + bloom_locality=0 + min_write_buffer_number_to_merge=1 + table_factory=BlockBasedTable + max_write_buffer_size_to_maintain=0 + max_write_buffer_number_to_maintain=0 + optimize_filters_for_hits=false + default_temperature=kUnknown + preserve_internal_time_seconds=0 + force_consistency_checks=true + merge_operator={id=StringAppendTESTOperator;delimiter=,;} + num_levels=7 + level_compaction_dynamic_file_size=true + memtable_insert_with_hint_prefix_extractor=nullptr + level_compaction_dynamic_level_bytes=false + persist_user_defined_timestamps=true + preclude_last_level_data_seconds=0 + inplace_update_support=false + +[TableOptions/BlockBasedTable "_timer_state/event_user-timers"] + num_file_reads_for_auto_readahead=2 + metadata_cache_options={unpartitioned_pinning=kFallback;partition_pinning=kFallback;top_level_index_pinning=kFallback;} + read_amp_bytes_per_bit=0 + verify_compression=false + format_version=5 + optimize_filters_for_memory=false + partition_filters=false + detect_filter_construct_corruption=false + initial_auto_readahead_size=8192 + max_auto_readahead_size=262144 + enable_index_compression=true + checksum=kXXH3 + index_block_restart_interval=1 + pin_top_level_index_and_filter=true + block_align=false + block_size=4096 + index_type=kBinarySearch + filter_policy=nullptr + metadata_block_size=4096 + no_block_cache=false + index_shortening=kShortenSeparators + whole_key_filtering=true + block_size_deviation=10 + data_block_index_type=kDataBlockBinarySearch + data_block_hash_table_util_ratio=0.750000 + cache_index_and_filter_blocks=true + prepopulate_block_cache=kDisable + block_restart_interval=16 + pin_l0_filter_and_index_blocks_in_cache=true + cache_index_and_filter_blocks_with_high_priority=true + flush_block_policy_factory=FlushBlockBySizePolicyFactory + diff --git a/flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/79b9437d-ee76-411a-9759-6e220e5fb58b b/flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/79b9437d-ee76-411a-9759-6e220e5fb58b new file mode 100644 index 00000000000000..aa5bb8ea50905a --- /dev/null +++ b/flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/79b9437d-ee76-411a-9759-6e220e5fb58b @@ -0,0 +1 @@ +MANIFEST-000005 diff --git a/flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/7db9c167-b8ca-455c-b0ab-aa3612ad1e7d b/flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/7db9c167-b8ca-455c-b0ab-aa3612ad1e7d new file mode 100644 index 0000000000000000000000000000000000000000..a7cffe07e97ea8f32df7b00c3ac885146bad8bee GIT binary patch literal 770 zcmeH@y-EX75QQf(*a;TaHc9LF3Z~d1ut>=23O37i9XA*E{xCBu=nMN4f_HBdmS7{; zIoC~ZJIs^(1WUb!8C4vZ&I7o7bE=F;$wumhm=`y5GUnSr`G927} z-~S%~JONDLIr?L$@gtHUgflr$R_wUUbs;OIbIq%zP+E%5Qj20+ZHgs_X}L}NCH(T0 zuS;GjE=9f;-&`j80NRI!nZeX8vfs|SLpm(0ecyY>=rrJwY!}(yL}ZGBb&bMcO=tfw zEbf7FW{9n)^!X9sb%g=5J!U__G~UJe+X#A}#7Ji&Jt1W`=6y8OVlt61(zW&v${$w; literal 0 HcmV?d00001 diff --git a/flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/87fc8e49-ed6e-4abb-b28f-a64106810954 b/flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/87fc8e49-ed6e-4abb-b28f-a64106810954 new file mode 100644 index 0000000000000000000000000000000000000000..a7cffe07e97ea8f32df7b00c3ac885146bad8bee GIT binary patch literal 770 zcmeH@y-EX75QQf(*a;TaHc9LF3Z~d1ut>=23O37i9XA*E{xCBu=nMN4f_HBdmS7{; zIo=23O37i9XA*E{xCBu=nMN4f_HBdmS7{; zIo7xYP(hfJ= z_j3mTPXG@vjs6sBe2ZiV;U>4q${m-vE@h>3u6eZ*N=xy+*P`53n{vfrrgnwUzk%QH zW*>R6=au48UU%@oq#l_1Ay-#7(`KV{4>`!?e3$>U^B#iWPb_Hq; BT5|vZ literal 0 HcmV?d00001 diff --git a/flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/9b7ef958-6f0b-4f71-a94d-f46dacbab5b1 b/flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/9b7ef958-6f0b-4f71-a94d-f46dacbab5b1 new file mode 100644 index 00000000000000..aa5bb8ea50905a --- /dev/null +++ b/flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/9b7ef958-6f0b-4f71-a94d-f46dacbab5b1 @@ -0,0 +1 @@ +MANIFEST-000005 diff --git a/flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/9c9b0059-0d9c-4b13-b39d-3b264253f867 b/flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/9c9b0059-0d9c-4b13-b39d-3b264253f867 new file mode 100644 index 0000000000000000000000000000000000000000..a7cffe07e97ea8f32df7b00c3ac885146bad8bee GIT binary patch literal 770 zcmeH@y-EX75QQf(*a;TaHc9LF3Z~d1ut>=23O37i9XA*E{xCBu=nMN4f_HBdmS7{; zIoC|YDpD!~>T#rUfD;u(dPh2SLn zBvQ3Uuiqr!&_YtdNX~w!XsL4kfOVtGqrv;i)~7UBT)Okw)i_=obBVSJc&CHGGJ0Dd zr14f)_RsjYM<8q6grke;b00=ax_z{*pRnbw7m&jp^sbZqxnA< CLtVxI literal 0 HcmV?d00001 diff --git a/flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/_metadata b/flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/_metadata new file mode 100644 index 0000000000000000000000000000000000000000..836b309007d4b4ffc9ba07ba5f43cec8e16880d0 GIT binary patch literal 5652 zcmcgwON<>y744ZZ#t!6X84%vY3kOA@nyLRMVS#Op!DO&aW^5oRg8JH%jNeS&dlT6R zBC#RL4iTgPLSO|HfiTK~1wjG?3qUAh#R3qpfi2D=5kxEkoa*j39($f0FDzPmU9Ue? zb?csU&%M>hKYNxmO|u)nddzlBv!{92^7`g5<_8ZR-5ibA&mZhAoBc=6<@m(L`s!f3 zIyl?i1cq1B1WOqE6bSH+IQXN zCJ4_pZ$Enakw+F!te`&^n(`3fTVpJdi7EoeCXyAmD(EP!l>M~#G%HNeir(0^snFaqc9fOi zSc%nsNn~c6ST7|Bfd?gZkj9#B@EzFsz^Jh@6H^pCnI#7Zj1pyGP!`enM5`(N4^4|* zay+Tz6ai^6k--JxElVUZ0k?3+q`E0~#sw#Z0azK7lZ<)djB-S0I3j~I%7)J3W-4~x zcujLkAPWn?PB;>{DnvVHLDx`9nP5K+JK>5Ig2GL?REJ^xKBdZp$fJ-YDc3W$Vwa?F zkp)S(FqPljkPt&8AxWBTVZp^~uxmrBQ;xTeyCQiC$tYsDf+tF_Bv77-woX_Ux%6Il zp4f?9aUxKVFH-4X7tX`sxoj}q_@~vQ=-l2kz4G1K-_Uepx2U7Z5ef{ z_ucfklff4onM9x@P)1`$&v_s^7JxySg8OcYU2-O;!a!QW6H!P20uD)va5{6QL!_n3K!QzI0heqn8X2GB4m`zM+2hr?(Ob8 zhvt^!4)PH)k64KfFvSW4kAQ*zGZCCIA<`RZrj^=h5D&H&sE6|rb}4jqCI=&hML@%p z)|}3=7CVzbHl{&93#F6_>KUj<@Ohyb_laeb`i0y;GhI|k7NR_&RVEngWURswa#kt9 z<~nUXrp6t&K0zZXDLMjsrD3+^i8$^!V>VeQZP$IOW&#Kk3p6@X_)1cs5j<3YX$h-5 zb%?93d&Mp@mJ@T1FiEjk6A+~Zkz!Lpz-XDEwEbjgZY^oDeSi3qd-KePKY01`|J^gRkPWKv)x3h~Q7I9{QubP>h_!XSD?x&SRy!n+5+UBwr9hmZ znUw5dbD$Ak>)!6pZ5FE_-wte3R7hYDKguB2(jm9|f=Z8rvQqLOh3a)^2e#2O8H*`I zXfQ%bsF$mXmWl;kkQsp;tZdEgEN_E9D5e7|mK5O;d=|X$pb_yDj?oStmi=<43%9Cd zgg_FPkU7CCh=-SqC`D0)Q08f##M4x4i;}YFoC%j1yhP$69?FNLZQ*MWkE_1Sn2K$t zG0LEkbQMBg3gqmX;E+75E;=MoY@2Y43?e`#hC^nWVl2HiUSs%%o8HDE^0&X zc46zm^hB*kv=y*8Gvt`$SgnnH_RgX5>~(4fwpa&P=QMFBVo{kOMjM1ez$RVL6)0iv0F59;YV0$D4{DM{rYCJig++yANp{d2 z=>;}AF%?1urbYo2bh=sG)=JsRpa{*nreSP(P=hF_taBN=8I^+XR$Db$TkOGVJ??Vd zRY9V$Gl0mT;CI|;Y|Z>6fuPe3Htg>{GMutyXJ35jrSyYW|MH~k3aUpm2W@$%$L6ZO{!jemGtXao%+72e#6IedA_WHt@Fc8d=ERH=W(b1IyQeb>hO_iBM--` zc?84iF+1Drd9=AFt&XA}rlWok^V(WYk2ZJqw~qPM_WJJ0_3B`CbgsTJxwE_(Mw74=K7$Ojyuf5Z+mF~j43p$wjO)mpvaKV>U5XD6)6;ZUznN)%;R*Lb*@`2|R zP8Ncb{EkS~51l=cVns_y1tSG}p`urp&Tp`8b+tA4t+vg3BoJP12fz`! lilOvCDV~H3rSFu0(Cxm7w~KFwep<3YI8-$7Lrt>@vu{x#xaa@? literal 0 HcmV?d00001 diff --git a/flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/a7886ab2-3f30-42c7-997d-a135d957ef70 b/flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/a7886ab2-3f30-42c7-997d-a135d957ef70 new file mode 100644 index 00000000000000..ad0dfcf758edc5 --- /dev/null +++ b/flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/a7886ab2-3f30-42c7-997d-a135d957ef70 @@ -0,0 +1,429 @@ +# This is a RocksDB option file. +# +# For detailed file format spec, please refer to the example file +# in examples/rocksdb_option_file_example.ini +# + +[Version] + rocksdb_version=8.10.0 + options_file_version=1.1 + +[DBOptions] + max_background_flushes=-1 + compaction_readahead_size=2097152 + strict_bytes_per_sync=false + wal_bytes_per_sync=0 + max_open_files=-1 + stats_history_buffer_size=1048576 + max_total_wal_size=0 + stats_persist_period_sec=600 + stats_dump_period_sec=0 + avoid_flush_during_shutdown=true + max_subcompactions=1 + bytes_per_sync=0 + delayed_write_rate=16777216 + max_background_compactions=-1 + max_background_jobs=2 + delete_obsolete_files_period_micros=21600000000 + writable_file_max_buffer_size=1048576 + file_checksum_gen_factory=nullptr + allow_data_in_errors=false + max_bgerror_resume_count=2147483647 + best_efforts_recovery=false + write_dbid_to_manifest=false + atomic_flush=false + manual_wal_flush=false + two_write_queues=false + avoid_flush_during_recovery=false + dump_malloc_stats=false + info_log_level=INFO_LEVEL + write_thread_slow_yield_usec=3 + unordered_write=false + allow_ingest_behind=false + fail_if_options_file_error=true + persist_stats_to_disk=false + WAL_ttl_seconds=0 + bgerror_resume_retry_interval=1000000 + allow_concurrent_memtable_write=true + paranoid_checks=true + WAL_size_limit_MB=0 + lowest_used_cache_tier=kNonVolatileBlockTier + keep_log_file_num=4 + table_cache_numshardbits=6 + max_file_opening_threads=16 + random_access_max_buffer_size=1048576 + log_readahead_size=0 + enable_pipelined_write=false + wal_recovery_mode=kPointInTimeRecovery + db_write_buffer_size=0 + allow_2pc=false + skip_checking_sst_file_sizes_on_db_open=false + skip_stats_update_on_db_open=false + recycle_log_file_num=0 + db_host_id=__hostname__ + track_and_verify_wals_in_manifest=false + use_fsync=false + wal_compression=kNoCompression + compaction_verify_record_count=true + error_if_exists=false + manifest_preallocation_size=4194304 + is_fd_close_on_exec=true + enable_write_thread_adaptive_yield=true + enable_thread_tracking=false + avoid_unnecessary_blocking_io=false + allow_fallocate=true + max_log_file_size=26214400 + advise_random_on_open=true + create_missing_column_families=false + max_write_batch_group_size_bytes=1048576 + use_adaptive_mutex=false + wal_filter=nullptr + create_if_missing=true + enforce_single_del_contracts=true + allow_mmap_writes=false + access_hint_on_compaction_start=NORMAL + verify_sst_unique_id_in_manifest=true + log_file_time_to_roll=0 + use_direct_io_for_flush_and_compaction=false + flush_verify_memtable_count=true + max_manifest_file_size=1073741824 + write_thread_max_yield_usec=100 + use_direct_reads=false + allow_mmap_reads=false + + +[CFOptions "default"] + bottommost_file_compaction_delay=0 + memtable_protection_bytes_per_key=0 + compression_per_level=kSnappyCompression + bottommost_compression=kDisableCompressionOption + sample_for_compression=0 + blob_garbage_collection_age_cutoff=0.250000 + blob_compression_type=kNoCompression + prepopulate_blob_cache=kDisable + blob_compaction_readahead_size=0 + level0_stop_writes_trigger=36 + min_blob_size=0 + last_level_temperature=kUnknown + compaction_options_universal={allow_trivial_move=false;stop_style=kCompactionStopStyleTotalSize;min_merge_width=2;compression_size_percent=-1;max_size_amplification_percent=200;incremental=false;max_merge_width=4294967295;size_ratio=1;} + target_file_size_base=67108864 + ignore_max_compaction_bytes_for_input=true + memtable_whole_key_filtering=false + blob_file_starting_level=0 + soft_pending_compaction_bytes_limit=68719476736 + max_write_buffer_number=2 + ttl=2592000 + compaction_options_fifo={file_temperature_age_thresholds=;allow_compaction=false;age_for_warm=0;max_table_files_size=1073741824;} + check_flush_compaction_key_order=true + memtable_huge_page_size=0 + max_successive_merges=0 + inplace_update_num_locks=10000 + enable_blob_garbage_collection=false + arena_block_size=1048576 + bottommost_compression_opts={use_zstd_dict_trainer=true;enabled=false;zstd_max_train_bytes=0;parallel_threads=1;max_compressed_bytes_per_kb=896;checksum=false;max_dict_bytes=0;strategy=0;max_dict_buffer_bytes=0;level=32767;window_bits=-14;} + target_file_size_multiplier=1 + max_bytes_for_level_multiplier_additional=1:1:1:1:1:1:1 + blob_garbage_collection_force_threshold=1.000000 + enable_blob_files=false + level0_slowdown_writes_trigger=20 + compression=kSnappyCompression + level0_file_num_compaction_trigger=4 + block_protection_bytes_per_key=0 + prefix_extractor=nullptr + max_bytes_for_level_multiplier=10.000000 + write_buffer_size=67108864 + disable_auto_compactions=false + max_compaction_bytes=1677721600 + memtable_max_range_deletions=0 + compression_opts={use_zstd_dict_trainer=true;enabled=false;zstd_max_train_bytes=0;parallel_threads=1;max_compressed_bytes_per_kb=896;checksum=false;max_dict_bytes=0;strategy=0;max_dict_buffer_bytes=0;level=32767;window_bits=-14;} + hard_pending_compaction_bytes_limit=274877906944 + blob_file_size=268435456 + periodic_compaction_seconds=2592000 + paranoid_file_checks=false + experimental_mempurge_threshold=0.000000 + memtable_prefix_bloom_size_ratio=0.000000 + max_bytes_for_level_base=268435456 + max_sequential_skip_in_iterations=8 + report_bg_io_stats=false + sst_partitioner_factory=nullptr + compaction_pri=kMinOverlappingRatio + compaction_style=kCompactionStyleLevel + compaction_filter_factory=nullptr + compaction_filter=nullptr + memtable_factory=SkipListFactory + comparator=leveldb.BytewiseComparator + bloom_locality=0 + min_write_buffer_number_to_merge=1 + table_factory=BlockBasedTable + max_write_buffer_size_to_maintain=0 + max_write_buffer_number_to_maintain=0 + optimize_filters_for_hits=false + default_temperature=kUnknown + preserve_internal_time_seconds=0 + force_consistency_checks=true + merge_operator={id=StringAppendTESTOperator;delimiter=,;} + num_levels=7 + level_compaction_dynamic_file_size=true + memtable_insert_with_hint_prefix_extractor=nullptr + level_compaction_dynamic_level_bytes=false + persist_user_defined_timestamps=true + preclude_last_level_data_seconds=0 + inplace_update_support=false + +[TableOptions/BlockBasedTable "default"] + num_file_reads_for_auto_readahead=2 + metadata_cache_options={unpartitioned_pinning=kFallback;partition_pinning=kFallback;top_level_index_pinning=kFallback;} + read_amp_bytes_per_bit=0 + verify_compression=false + format_version=5 + optimize_filters_for_memory=false + partition_filters=false + detect_filter_construct_corruption=false + initial_auto_readahead_size=8192 + max_auto_readahead_size=262144 + enable_index_compression=true + checksum=kXXH3 + index_block_restart_interval=1 + pin_top_level_index_and_filter=true + block_align=false + block_size=4096 + index_type=kBinarySearch + filter_policy=nullptr + metadata_block_size=4096 + no_block_cache=false + index_shortening=kShortenSeparators + whole_key_filtering=true + block_size_deviation=10 + data_block_index_type=kDataBlockBinarySearch + data_block_hash_table_util_ratio=0.750000 + cache_index_and_filter_blocks=true + prepopulate_block_cache=kDisable + block_restart_interval=16 + pin_l0_filter_and_index_blocks_in_cache=true + cache_index_and_filter_blocks_with_high_priority=true + flush_block_policy_factory=FlushBlockBySizePolicyFactory + + +[CFOptions "_timer_state/processing_user-timers"] + bottommost_file_compaction_delay=0 + memtable_protection_bytes_per_key=0 + compression_per_level=kSnappyCompression + bottommost_compression=kDisableCompressionOption + sample_for_compression=0 + blob_garbage_collection_age_cutoff=0.250000 + blob_compression_type=kNoCompression + prepopulate_blob_cache=kDisable + blob_compaction_readahead_size=0 + level0_stop_writes_trigger=36 + min_blob_size=0 + last_level_temperature=kUnknown + compaction_options_universal={allow_trivial_move=false;stop_style=kCompactionStopStyleTotalSize;min_merge_width=2;compression_size_percent=-1;max_size_amplification_percent=200;incremental=false;max_merge_width=4294967295;size_ratio=1;} + target_file_size_base=67108864 + ignore_max_compaction_bytes_for_input=true + memtable_whole_key_filtering=false + blob_file_starting_level=0 + soft_pending_compaction_bytes_limit=68719476736 + max_write_buffer_number=2 + ttl=2592000 + compaction_options_fifo={file_temperature_age_thresholds=;allow_compaction=false;age_for_warm=0;max_table_files_size=1073741824;} + check_flush_compaction_key_order=true + memtable_huge_page_size=0 + max_successive_merges=0 + inplace_update_num_locks=10000 + enable_blob_garbage_collection=false + arena_block_size=1048576 + bottommost_compression_opts={use_zstd_dict_trainer=true;enabled=false;zstd_max_train_bytes=0;parallel_threads=1;max_compressed_bytes_per_kb=896;checksum=false;max_dict_bytes=0;strategy=0;max_dict_buffer_bytes=0;level=32767;window_bits=-14;} + target_file_size_multiplier=1 + max_bytes_for_level_multiplier_additional=1:1:1:1:1:1:1 + blob_garbage_collection_force_threshold=1.000000 + enable_blob_files=false + level0_slowdown_writes_trigger=20 + compression=kSnappyCompression + level0_file_num_compaction_trigger=4 + block_protection_bytes_per_key=0 + prefix_extractor=nullptr + max_bytes_for_level_multiplier=10.000000 + write_buffer_size=67108864 + disable_auto_compactions=false + max_compaction_bytes=1677721600 + memtable_max_range_deletions=0 + compression_opts={use_zstd_dict_trainer=true;enabled=false;zstd_max_train_bytes=0;parallel_threads=1;max_compressed_bytes_per_kb=896;checksum=false;max_dict_bytes=0;strategy=0;max_dict_buffer_bytes=0;level=32767;window_bits=-14;} + hard_pending_compaction_bytes_limit=274877906944 + blob_file_size=268435456 + periodic_compaction_seconds=2592000 + paranoid_file_checks=false + experimental_mempurge_threshold=0.000000 + memtable_prefix_bloom_size_ratio=0.000000 + max_bytes_for_level_base=268435456 + max_sequential_skip_in_iterations=8 + report_bg_io_stats=false + sst_partitioner_factory=nullptr + compaction_pri=kMinOverlappingRatio + compaction_style=kCompactionStyleLevel + compaction_filter_factory=nullptr + compaction_filter=nullptr + memtable_factory=SkipListFactory + comparator=leveldb.BytewiseComparator + bloom_locality=0 + min_write_buffer_number_to_merge=1 + table_factory=BlockBasedTable + max_write_buffer_size_to_maintain=0 + max_write_buffer_number_to_maintain=0 + optimize_filters_for_hits=false + default_temperature=kUnknown + preserve_internal_time_seconds=0 + force_consistency_checks=true + merge_operator={id=StringAppendTESTOperator;delimiter=,;} + num_levels=7 + level_compaction_dynamic_file_size=true + memtable_insert_with_hint_prefix_extractor=nullptr + level_compaction_dynamic_level_bytes=false + persist_user_defined_timestamps=true + preclude_last_level_data_seconds=0 + inplace_update_support=false + +[TableOptions/BlockBasedTable "_timer_state/processing_user-timers"] + num_file_reads_for_auto_readahead=2 + metadata_cache_options={unpartitioned_pinning=kFallback;partition_pinning=kFallback;top_level_index_pinning=kFallback;} + read_amp_bytes_per_bit=0 + verify_compression=false + format_version=5 + optimize_filters_for_memory=false + partition_filters=false + detect_filter_construct_corruption=false + initial_auto_readahead_size=8192 + max_auto_readahead_size=262144 + enable_index_compression=true + checksum=kXXH3 + index_block_restart_interval=1 + pin_top_level_index_and_filter=true + block_align=false + block_size=4096 + index_type=kBinarySearch + filter_policy=nullptr + metadata_block_size=4096 + no_block_cache=false + index_shortening=kShortenSeparators + whole_key_filtering=true + block_size_deviation=10 + data_block_index_type=kDataBlockBinarySearch + data_block_hash_table_util_ratio=0.750000 + cache_index_and_filter_blocks=true + prepopulate_block_cache=kDisable + block_restart_interval=16 + pin_l0_filter_and_index_blocks_in_cache=true + cache_index_and_filter_blocks_with_high_priority=true + flush_block_policy_factory=FlushBlockBySizePolicyFactory + + +[CFOptions "_timer_state/event_user-timers"] + bottommost_file_compaction_delay=0 + memtable_protection_bytes_per_key=0 + compression_per_level=kSnappyCompression + bottommost_compression=kDisableCompressionOption + sample_for_compression=0 + blob_garbage_collection_age_cutoff=0.250000 + blob_compression_type=kNoCompression + prepopulate_blob_cache=kDisable + blob_compaction_readahead_size=0 + level0_stop_writes_trigger=36 + min_blob_size=0 + last_level_temperature=kUnknown + compaction_options_universal={allow_trivial_move=false;stop_style=kCompactionStopStyleTotalSize;min_merge_width=2;compression_size_percent=-1;max_size_amplification_percent=200;incremental=false;max_merge_width=4294967295;size_ratio=1;} + target_file_size_base=67108864 + ignore_max_compaction_bytes_for_input=true + memtable_whole_key_filtering=false + blob_file_starting_level=0 + soft_pending_compaction_bytes_limit=68719476736 + max_write_buffer_number=2 + ttl=2592000 + compaction_options_fifo={file_temperature_age_thresholds=;allow_compaction=false;age_for_warm=0;max_table_files_size=1073741824;} + check_flush_compaction_key_order=true + memtable_huge_page_size=0 + max_successive_merges=0 + inplace_update_num_locks=10000 + enable_blob_garbage_collection=false + arena_block_size=1048576 + bottommost_compression_opts={use_zstd_dict_trainer=true;enabled=false;zstd_max_train_bytes=0;parallel_threads=1;max_compressed_bytes_per_kb=896;checksum=false;max_dict_bytes=0;strategy=0;max_dict_buffer_bytes=0;level=32767;window_bits=-14;} + target_file_size_multiplier=1 + max_bytes_for_level_multiplier_additional=1:1:1:1:1:1:1 + blob_garbage_collection_force_threshold=1.000000 + enable_blob_files=false + level0_slowdown_writes_trigger=20 + compression=kSnappyCompression + level0_file_num_compaction_trigger=4 + block_protection_bytes_per_key=0 + prefix_extractor=nullptr + max_bytes_for_level_multiplier=10.000000 + write_buffer_size=67108864 + disable_auto_compactions=false + max_compaction_bytes=1677721600 + memtable_max_range_deletions=0 + compression_opts={use_zstd_dict_trainer=true;enabled=false;zstd_max_train_bytes=0;parallel_threads=1;max_compressed_bytes_per_kb=896;checksum=false;max_dict_bytes=0;strategy=0;max_dict_buffer_bytes=0;level=32767;window_bits=-14;} + hard_pending_compaction_bytes_limit=274877906944 + blob_file_size=268435456 + periodic_compaction_seconds=2592000 + paranoid_file_checks=false + experimental_mempurge_threshold=0.000000 + memtable_prefix_bloom_size_ratio=0.000000 + max_bytes_for_level_base=268435456 + max_sequential_skip_in_iterations=8 + report_bg_io_stats=false + sst_partitioner_factory=nullptr + compaction_pri=kMinOverlappingRatio + compaction_style=kCompactionStyleLevel + compaction_filter_factory=nullptr + compaction_filter=nullptr + memtable_factory=SkipListFactory + comparator=leveldb.BytewiseComparator + bloom_locality=0 + min_write_buffer_number_to_merge=1 + table_factory=BlockBasedTable + max_write_buffer_size_to_maintain=0 + max_write_buffer_number_to_maintain=0 + optimize_filters_for_hits=false + default_temperature=kUnknown + preserve_internal_time_seconds=0 + force_consistency_checks=true + merge_operator={id=StringAppendTESTOperator;delimiter=,;} + num_levels=7 + level_compaction_dynamic_file_size=true + memtable_insert_with_hint_prefix_extractor=nullptr + level_compaction_dynamic_level_bytes=false + persist_user_defined_timestamps=true + preclude_last_level_data_seconds=0 + inplace_update_support=false + +[TableOptions/BlockBasedTable "_timer_state/event_user-timers"] + num_file_reads_for_auto_readahead=2 + metadata_cache_options={unpartitioned_pinning=kFallback;partition_pinning=kFallback;top_level_index_pinning=kFallback;} + read_amp_bytes_per_bit=0 + verify_compression=false + format_version=5 + optimize_filters_for_memory=false + partition_filters=false + detect_filter_construct_corruption=false + initial_auto_readahead_size=8192 + max_auto_readahead_size=262144 + enable_index_compression=true + checksum=kXXH3 + index_block_restart_interval=1 + pin_top_level_index_and_filter=true + block_align=false + block_size=4096 + index_type=kBinarySearch + filter_policy=nullptr + metadata_block_size=4096 + no_block_cache=false + index_shortening=kShortenSeparators + whole_key_filtering=true + block_size_deviation=10 + data_block_index_type=kDataBlockBinarySearch + data_block_hash_table_util_ratio=0.750000 + cache_index_and_filter_blocks=true + prepopulate_block_cache=kDisable + block_restart_interval=16 + pin_l0_filter_and_index_blocks_in_cache=true + cache_index_and_filter_blocks_with_high_priority=true + flush_block_policy_factory=FlushBlockBySizePolicyFactory + diff --git a/flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/a7a60edd-501b-4239-b25f-6998471bfff4 b/flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/a7a60edd-501b-4239-b25f-6998471bfff4 new file mode 100644 index 0000000000000000000000000000000000000000..0785704387c0ddbf67d7910eb632cf74e37d6936 GIT binary patch literal 237 zcmZS8)^KKEU^I2G?@(Z1WR%KDElbTwNz!wwEJ-cTEKYUK&n-wSN-W7Q>U3aa{KCu= z#lpbI#K6MvM@Q`^8v`RJ12Y>7!}a*3MgI7;GqEspurQopWIV~J9AA=|n_3iKT#{Il ys$Wo)pPX7;oSBy%Us{}6qzjfS2HBQ*R`Hb=K~uRvrZSymltVEU=#9J*bOQmd@Jj*! literal 0 HcmV?d00001 diff --git a/flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/ad98e1eb-4239-4773-b56f-d90baa191c63 b/flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/ad98e1eb-4239-4773-b56f-d90baa191c63 new file mode 100644 index 0000000000000000000000000000000000000000..0785704387c0ddbf67d7910eb632cf74e37d6936 GIT binary patch literal 237 zcmZS8)^KKEU^I2G?@(Z1WR%KDElbTwNz!wwEJ-cTEKYUK&n-wSN-W7Q>U3aa{KCu= z#lpbI#K6MvM@Q`^8v`RJ12Y>7!}a*3MgI7;GqEspurQopWIV~J9AA=|n_3iKT#{Il ys$Wo)pPX7;oSBy%Us{}6qzjfS2HBQ*R`Hb=K~uRvrZSymltVEU=#9J*bOQmd@Jj*! literal 0 HcmV?d00001 diff --git a/flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/b4e6e54c-7d83-4755-921e-c2f7a4f11374 b/flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/b4e6e54c-7d83-4755-921e-c2f7a4f11374 new file mode 100644 index 0000000000000000000000000000000000000000..a7cffe07e97ea8f32df7b00c3ac885146bad8bee GIT binary patch literal 770 zcmeH@y-EX75QQf(*a;TaHc9LF3Z~d1ut>=23O37i9XA*E{xCBu=nMN4f_HBdmS7{; zIo=23O37i9XA*E{xCBu=nMN4f_HBdmS7{; zIoC|YDpD!~>T#rUfD;u(dPh2SLn zBvQ3Uuiqr!&_YtdNX~w!XsL4kfOVtGqrv;i)~7UBT)Okw)i_=obBVSJc&CHGGJ0Dd zr14f)_RsjYM<8q6grke;b00=ax_z{*pRnbw7m&jp^sbZqxnA< CLtVxI literal 0 HcmV?d00001 diff --git a/flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/d7fa4f76-34ac-4d74-b4d1-05f849e50f05 b/flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/d7fa4f76-34ac-4d74-b4d1-05f849e50f05 new file mode 100644 index 0000000000000000000000000000000000000000..0785704387c0ddbf67d7910eb632cf74e37d6936 GIT binary patch literal 237 zcmZS8)^KKEU^I2G?@(Z1WR%KDElbTwNz!wwEJ-cTEKYUK&n-wSN-W7Q>U3aa{KCu= z#lpbI#K6MvM@Q`^8v`RJ12Y>7!}a*3MgI7;GqEspurQopWIV~J9AA=|n_3iKT#{Il ys$Wo)pPX7;oSBy%Us{}6qzjfS2HBQ*R`Hb=K~uRvrZSymltVEU=#9J*bOQmd@Jj*! literal 0 HcmV?d00001 diff --git a/flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/d92d5d95-5d6e-4b9b-a81d-d13f7d29145a b/flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/d92d5d95-5d6e-4b9b-a81d-d13f7d29145a new file mode 100644 index 0000000000000000000000000000000000000000..a7cffe07e97ea8f32df7b00c3ac885146bad8bee GIT binary patch literal 770 zcmeH@y-EX75QQf(*a;TaHc9LF3Z~d1ut>=23O37i9XA*E{xCBu=nMN4f_HBdmS7{; zIo74=K7$Ojyuf5Z+mF~j43p$wjO)mpvaKV>U5XD6)6;ZUznN)%;R*Lb*@`2|R zP8Ncb{EkS~51l=cVns_y1tSG}p`urp&Tp`8b+tA4t+vg3BoJP12fz`! lilOvCDV~H3rSFu0(Cxm7w~KFwep<3YI8-$7Lrt>@vu{x#xaa@? literal 0 HcmV?d00001 diff --git a/flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/e0cc4b62-857d-4339-81c2-a286f6bdc860 b/flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/e0cc4b62-857d-4339-81c2-a286f6bdc860 new file mode 100644 index 00000000000000..ad0dfcf758edc5 --- /dev/null +++ b/flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/e0cc4b62-857d-4339-81c2-a286f6bdc860 @@ -0,0 +1,429 @@ +# This is a RocksDB option file. +# +# For detailed file format spec, please refer to the example file +# in examples/rocksdb_option_file_example.ini +# + +[Version] + rocksdb_version=8.10.0 + options_file_version=1.1 + +[DBOptions] + max_background_flushes=-1 + compaction_readahead_size=2097152 + strict_bytes_per_sync=false + wal_bytes_per_sync=0 + max_open_files=-1 + stats_history_buffer_size=1048576 + max_total_wal_size=0 + stats_persist_period_sec=600 + stats_dump_period_sec=0 + avoid_flush_during_shutdown=true + max_subcompactions=1 + bytes_per_sync=0 + delayed_write_rate=16777216 + max_background_compactions=-1 + max_background_jobs=2 + delete_obsolete_files_period_micros=21600000000 + writable_file_max_buffer_size=1048576 + file_checksum_gen_factory=nullptr + allow_data_in_errors=false + max_bgerror_resume_count=2147483647 + best_efforts_recovery=false + write_dbid_to_manifest=false + atomic_flush=false + manual_wal_flush=false + two_write_queues=false + avoid_flush_during_recovery=false + dump_malloc_stats=false + info_log_level=INFO_LEVEL + write_thread_slow_yield_usec=3 + unordered_write=false + allow_ingest_behind=false + fail_if_options_file_error=true + persist_stats_to_disk=false + WAL_ttl_seconds=0 + bgerror_resume_retry_interval=1000000 + allow_concurrent_memtable_write=true + paranoid_checks=true + WAL_size_limit_MB=0 + lowest_used_cache_tier=kNonVolatileBlockTier + keep_log_file_num=4 + table_cache_numshardbits=6 + max_file_opening_threads=16 + random_access_max_buffer_size=1048576 + log_readahead_size=0 + enable_pipelined_write=false + wal_recovery_mode=kPointInTimeRecovery + db_write_buffer_size=0 + allow_2pc=false + skip_checking_sst_file_sizes_on_db_open=false + skip_stats_update_on_db_open=false + recycle_log_file_num=0 + db_host_id=__hostname__ + track_and_verify_wals_in_manifest=false + use_fsync=false + wal_compression=kNoCompression + compaction_verify_record_count=true + error_if_exists=false + manifest_preallocation_size=4194304 + is_fd_close_on_exec=true + enable_write_thread_adaptive_yield=true + enable_thread_tracking=false + avoid_unnecessary_blocking_io=false + allow_fallocate=true + max_log_file_size=26214400 + advise_random_on_open=true + create_missing_column_families=false + max_write_batch_group_size_bytes=1048576 + use_adaptive_mutex=false + wal_filter=nullptr + create_if_missing=true + enforce_single_del_contracts=true + allow_mmap_writes=false + access_hint_on_compaction_start=NORMAL + verify_sst_unique_id_in_manifest=true + log_file_time_to_roll=0 + use_direct_io_for_flush_and_compaction=false + flush_verify_memtable_count=true + max_manifest_file_size=1073741824 + write_thread_max_yield_usec=100 + use_direct_reads=false + allow_mmap_reads=false + + +[CFOptions "default"] + bottommost_file_compaction_delay=0 + memtable_protection_bytes_per_key=0 + compression_per_level=kSnappyCompression + bottommost_compression=kDisableCompressionOption + sample_for_compression=0 + blob_garbage_collection_age_cutoff=0.250000 + blob_compression_type=kNoCompression + prepopulate_blob_cache=kDisable + blob_compaction_readahead_size=0 + level0_stop_writes_trigger=36 + min_blob_size=0 + last_level_temperature=kUnknown + compaction_options_universal={allow_trivial_move=false;stop_style=kCompactionStopStyleTotalSize;min_merge_width=2;compression_size_percent=-1;max_size_amplification_percent=200;incremental=false;max_merge_width=4294967295;size_ratio=1;} + target_file_size_base=67108864 + ignore_max_compaction_bytes_for_input=true + memtable_whole_key_filtering=false + blob_file_starting_level=0 + soft_pending_compaction_bytes_limit=68719476736 + max_write_buffer_number=2 + ttl=2592000 + compaction_options_fifo={file_temperature_age_thresholds=;allow_compaction=false;age_for_warm=0;max_table_files_size=1073741824;} + check_flush_compaction_key_order=true + memtable_huge_page_size=0 + max_successive_merges=0 + inplace_update_num_locks=10000 + enable_blob_garbage_collection=false + arena_block_size=1048576 + bottommost_compression_opts={use_zstd_dict_trainer=true;enabled=false;zstd_max_train_bytes=0;parallel_threads=1;max_compressed_bytes_per_kb=896;checksum=false;max_dict_bytes=0;strategy=0;max_dict_buffer_bytes=0;level=32767;window_bits=-14;} + target_file_size_multiplier=1 + max_bytes_for_level_multiplier_additional=1:1:1:1:1:1:1 + blob_garbage_collection_force_threshold=1.000000 + enable_blob_files=false + level0_slowdown_writes_trigger=20 + compression=kSnappyCompression + level0_file_num_compaction_trigger=4 + block_protection_bytes_per_key=0 + prefix_extractor=nullptr + max_bytes_for_level_multiplier=10.000000 + write_buffer_size=67108864 + disable_auto_compactions=false + max_compaction_bytes=1677721600 + memtable_max_range_deletions=0 + compression_opts={use_zstd_dict_trainer=true;enabled=false;zstd_max_train_bytes=0;parallel_threads=1;max_compressed_bytes_per_kb=896;checksum=false;max_dict_bytes=0;strategy=0;max_dict_buffer_bytes=0;level=32767;window_bits=-14;} + hard_pending_compaction_bytes_limit=274877906944 + blob_file_size=268435456 + periodic_compaction_seconds=2592000 + paranoid_file_checks=false + experimental_mempurge_threshold=0.000000 + memtable_prefix_bloom_size_ratio=0.000000 + max_bytes_for_level_base=268435456 + max_sequential_skip_in_iterations=8 + report_bg_io_stats=false + sst_partitioner_factory=nullptr + compaction_pri=kMinOverlappingRatio + compaction_style=kCompactionStyleLevel + compaction_filter_factory=nullptr + compaction_filter=nullptr + memtable_factory=SkipListFactory + comparator=leveldb.BytewiseComparator + bloom_locality=0 + min_write_buffer_number_to_merge=1 + table_factory=BlockBasedTable + max_write_buffer_size_to_maintain=0 + max_write_buffer_number_to_maintain=0 + optimize_filters_for_hits=false + default_temperature=kUnknown + preserve_internal_time_seconds=0 + force_consistency_checks=true + merge_operator={id=StringAppendTESTOperator;delimiter=,;} + num_levels=7 + level_compaction_dynamic_file_size=true + memtable_insert_with_hint_prefix_extractor=nullptr + level_compaction_dynamic_level_bytes=false + persist_user_defined_timestamps=true + preclude_last_level_data_seconds=0 + inplace_update_support=false + +[TableOptions/BlockBasedTable "default"] + num_file_reads_for_auto_readahead=2 + metadata_cache_options={unpartitioned_pinning=kFallback;partition_pinning=kFallback;top_level_index_pinning=kFallback;} + read_amp_bytes_per_bit=0 + verify_compression=false + format_version=5 + optimize_filters_for_memory=false + partition_filters=false + detect_filter_construct_corruption=false + initial_auto_readahead_size=8192 + max_auto_readahead_size=262144 + enable_index_compression=true + checksum=kXXH3 + index_block_restart_interval=1 + pin_top_level_index_and_filter=true + block_align=false + block_size=4096 + index_type=kBinarySearch + filter_policy=nullptr + metadata_block_size=4096 + no_block_cache=false + index_shortening=kShortenSeparators + whole_key_filtering=true + block_size_deviation=10 + data_block_index_type=kDataBlockBinarySearch + data_block_hash_table_util_ratio=0.750000 + cache_index_and_filter_blocks=true + prepopulate_block_cache=kDisable + block_restart_interval=16 + pin_l0_filter_and_index_blocks_in_cache=true + cache_index_and_filter_blocks_with_high_priority=true + flush_block_policy_factory=FlushBlockBySizePolicyFactory + + +[CFOptions "_timer_state/processing_user-timers"] + bottommost_file_compaction_delay=0 + memtable_protection_bytes_per_key=0 + compression_per_level=kSnappyCompression + bottommost_compression=kDisableCompressionOption + sample_for_compression=0 + blob_garbage_collection_age_cutoff=0.250000 + blob_compression_type=kNoCompression + prepopulate_blob_cache=kDisable + blob_compaction_readahead_size=0 + level0_stop_writes_trigger=36 + min_blob_size=0 + last_level_temperature=kUnknown + compaction_options_universal={allow_trivial_move=false;stop_style=kCompactionStopStyleTotalSize;min_merge_width=2;compression_size_percent=-1;max_size_amplification_percent=200;incremental=false;max_merge_width=4294967295;size_ratio=1;} + target_file_size_base=67108864 + ignore_max_compaction_bytes_for_input=true + memtable_whole_key_filtering=false + blob_file_starting_level=0 + soft_pending_compaction_bytes_limit=68719476736 + max_write_buffer_number=2 + ttl=2592000 + compaction_options_fifo={file_temperature_age_thresholds=;allow_compaction=false;age_for_warm=0;max_table_files_size=1073741824;} + check_flush_compaction_key_order=true + memtable_huge_page_size=0 + max_successive_merges=0 + inplace_update_num_locks=10000 + enable_blob_garbage_collection=false + arena_block_size=1048576 + bottommost_compression_opts={use_zstd_dict_trainer=true;enabled=false;zstd_max_train_bytes=0;parallel_threads=1;max_compressed_bytes_per_kb=896;checksum=false;max_dict_bytes=0;strategy=0;max_dict_buffer_bytes=0;level=32767;window_bits=-14;} + target_file_size_multiplier=1 + max_bytes_for_level_multiplier_additional=1:1:1:1:1:1:1 + blob_garbage_collection_force_threshold=1.000000 + enable_blob_files=false + level0_slowdown_writes_trigger=20 + compression=kSnappyCompression + level0_file_num_compaction_trigger=4 + block_protection_bytes_per_key=0 + prefix_extractor=nullptr + max_bytes_for_level_multiplier=10.000000 + write_buffer_size=67108864 + disable_auto_compactions=false + max_compaction_bytes=1677721600 + memtable_max_range_deletions=0 + compression_opts={use_zstd_dict_trainer=true;enabled=false;zstd_max_train_bytes=0;parallel_threads=1;max_compressed_bytes_per_kb=896;checksum=false;max_dict_bytes=0;strategy=0;max_dict_buffer_bytes=0;level=32767;window_bits=-14;} + hard_pending_compaction_bytes_limit=274877906944 + blob_file_size=268435456 + periodic_compaction_seconds=2592000 + paranoid_file_checks=false + experimental_mempurge_threshold=0.000000 + memtable_prefix_bloom_size_ratio=0.000000 + max_bytes_for_level_base=268435456 + max_sequential_skip_in_iterations=8 + report_bg_io_stats=false + sst_partitioner_factory=nullptr + compaction_pri=kMinOverlappingRatio + compaction_style=kCompactionStyleLevel + compaction_filter_factory=nullptr + compaction_filter=nullptr + memtable_factory=SkipListFactory + comparator=leveldb.BytewiseComparator + bloom_locality=0 + min_write_buffer_number_to_merge=1 + table_factory=BlockBasedTable + max_write_buffer_size_to_maintain=0 + max_write_buffer_number_to_maintain=0 + optimize_filters_for_hits=false + default_temperature=kUnknown + preserve_internal_time_seconds=0 + force_consistency_checks=true + merge_operator={id=StringAppendTESTOperator;delimiter=,;} + num_levels=7 + level_compaction_dynamic_file_size=true + memtable_insert_with_hint_prefix_extractor=nullptr + level_compaction_dynamic_level_bytes=false + persist_user_defined_timestamps=true + preclude_last_level_data_seconds=0 + inplace_update_support=false + +[TableOptions/BlockBasedTable "_timer_state/processing_user-timers"] + num_file_reads_for_auto_readahead=2 + metadata_cache_options={unpartitioned_pinning=kFallback;partition_pinning=kFallback;top_level_index_pinning=kFallback;} + read_amp_bytes_per_bit=0 + verify_compression=false + format_version=5 + optimize_filters_for_memory=false + partition_filters=false + detect_filter_construct_corruption=false + initial_auto_readahead_size=8192 + max_auto_readahead_size=262144 + enable_index_compression=true + checksum=kXXH3 + index_block_restart_interval=1 + pin_top_level_index_and_filter=true + block_align=false + block_size=4096 + index_type=kBinarySearch + filter_policy=nullptr + metadata_block_size=4096 + no_block_cache=false + index_shortening=kShortenSeparators + whole_key_filtering=true + block_size_deviation=10 + data_block_index_type=kDataBlockBinarySearch + data_block_hash_table_util_ratio=0.750000 + cache_index_and_filter_blocks=true + prepopulate_block_cache=kDisable + block_restart_interval=16 + pin_l0_filter_and_index_blocks_in_cache=true + cache_index_and_filter_blocks_with_high_priority=true + flush_block_policy_factory=FlushBlockBySizePolicyFactory + + +[CFOptions "_timer_state/event_user-timers"] + bottommost_file_compaction_delay=0 + memtable_protection_bytes_per_key=0 + compression_per_level=kSnappyCompression + bottommost_compression=kDisableCompressionOption + sample_for_compression=0 + blob_garbage_collection_age_cutoff=0.250000 + blob_compression_type=kNoCompression + prepopulate_blob_cache=kDisable + blob_compaction_readahead_size=0 + level0_stop_writes_trigger=36 + min_blob_size=0 + last_level_temperature=kUnknown + compaction_options_universal={allow_trivial_move=false;stop_style=kCompactionStopStyleTotalSize;min_merge_width=2;compression_size_percent=-1;max_size_amplification_percent=200;incremental=false;max_merge_width=4294967295;size_ratio=1;} + target_file_size_base=67108864 + ignore_max_compaction_bytes_for_input=true + memtable_whole_key_filtering=false + blob_file_starting_level=0 + soft_pending_compaction_bytes_limit=68719476736 + max_write_buffer_number=2 + ttl=2592000 + compaction_options_fifo={file_temperature_age_thresholds=;allow_compaction=false;age_for_warm=0;max_table_files_size=1073741824;} + check_flush_compaction_key_order=true + memtable_huge_page_size=0 + max_successive_merges=0 + inplace_update_num_locks=10000 + enable_blob_garbage_collection=false + arena_block_size=1048576 + bottommost_compression_opts={use_zstd_dict_trainer=true;enabled=false;zstd_max_train_bytes=0;parallel_threads=1;max_compressed_bytes_per_kb=896;checksum=false;max_dict_bytes=0;strategy=0;max_dict_buffer_bytes=0;level=32767;window_bits=-14;} + target_file_size_multiplier=1 + max_bytes_for_level_multiplier_additional=1:1:1:1:1:1:1 + blob_garbage_collection_force_threshold=1.000000 + enable_blob_files=false + level0_slowdown_writes_trigger=20 + compression=kSnappyCompression + level0_file_num_compaction_trigger=4 + block_protection_bytes_per_key=0 + prefix_extractor=nullptr + max_bytes_for_level_multiplier=10.000000 + write_buffer_size=67108864 + disable_auto_compactions=false + max_compaction_bytes=1677721600 + memtable_max_range_deletions=0 + compression_opts={use_zstd_dict_trainer=true;enabled=false;zstd_max_train_bytes=0;parallel_threads=1;max_compressed_bytes_per_kb=896;checksum=false;max_dict_bytes=0;strategy=0;max_dict_buffer_bytes=0;level=32767;window_bits=-14;} + hard_pending_compaction_bytes_limit=274877906944 + blob_file_size=268435456 + periodic_compaction_seconds=2592000 + paranoid_file_checks=false + experimental_mempurge_threshold=0.000000 + memtable_prefix_bloom_size_ratio=0.000000 + max_bytes_for_level_base=268435456 + max_sequential_skip_in_iterations=8 + report_bg_io_stats=false + sst_partitioner_factory=nullptr + compaction_pri=kMinOverlappingRatio + compaction_style=kCompactionStyleLevel + compaction_filter_factory=nullptr + compaction_filter=nullptr + memtable_factory=SkipListFactory + comparator=leveldb.BytewiseComparator + bloom_locality=0 + min_write_buffer_number_to_merge=1 + table_factory=BlockBasedTable + max_write_buffer_size_to_maintain=0 + max_write_buffer_number_to_maintain=0 + optimize_filters_for_hits=false + default_temperature=kUnknown + preserve_internal_time_seconds=0 + force_consistency_checks=true + merge_operator={id=StringAppendTESTOperator;delimiter=,;} + num_levels=7 + level_compaction_dynamic_file_size=true + memtable_insert_with_hint_prefix_extractor=nullptr + level_compaction_dynamic_level_bytes=false + persist_user_defined_timestamps=true + preclude_last_level_data_seconds=0 + inplace_update_support=false + +[TableOptions/BlockBasedTable "_timer_state/event_user-timers"] + num_file_reads_for_auto_readahead=2 + metadata_cache_options={unpartitioned_pinning=kFallback;partition_pinning=kFallback;top_level_index_pinning=kFallback;} + read_amp_bytes_per_bit=0 + verify_compression=false + format_version=5 + optimize_filters_for_memory=false + partition_filters=false + detect_filter_construct_corruption=false + initial_auto_readahead_size=8192 + max_auto_readahead_size=262144 + enable_index_compression=true + checksum=kXXH3 + index_block_restart_interval=1 + pin_top_level_index_and_filter=true + block_align=false + block_size=4096 + index_type=kBinarySearch + filter_policy=nullptr + metadata_block_size=4096 + no_block_cache=false + index_shortening=kShortenSeparators + whole_key_filtering=true + block_size_deviation=10 + data_block_index_type=kDataBlockBinarySearch + data_block_hash_table_util_ratio=0.750000 + cache_index_and_filter_blocks=true + prepopulate_block_cache=kDisable + block_restart_interval=16 + pin_l0_filter_and_index_blocks_in_cache=true + cache_index_and_filter_blocks_with_high_priority=true + flush_block_policy_factory=FlushBlockBySizePolicyFactory + diff --git a/flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/ef2429f6-5c70-4717-bd71-225d54589059 b/flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/ef2429f6-5c70-4717-bd71-225d54589059 new file mode 100644 index 0000000000000000000000000000000000000000..0785704387c0ddbf67d7910eb632cf74e37d6936 GIT binary patch literal 237 zcmZS8)^KKEU^I2G?@(Z1WR%KDElbTwNz!wwEJ-cTEKYUK&n-wSN-W7Q>U3aa{KCu= z#lpbI#K6MvM@Q`^8v`RJ12Y>7!}a*3MgI7;GqEspurQopWIV~J9AA=|n_3iKT#{Il ys$Wo)pPX7;oSBy%Us{}6qzjfS2HBQ*R`Hb=K~uRvrZSymltVEU=#9J*bOQmd@Jj*! literal 0 HcmV?d00001 diff --git a/flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/f267cf3d-c032-4014-ba7d-1645d4a09bcb b/flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/f267cf3d-c032-4014-ba7d-1645d4a09bcb new file mode 100644 index 00000000000000..ad0dfcf758edc5 --- /dev/null +++ b/flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/f267cf3d-c032-4014-ba7d-1645d4a09bcb @@ -0,0 +1,429 @@ +# This is a RocksDB option file. +# +# For detailed file format spec, please refer to the example file +# in examples/rocksdb_option_file_example.ini +# + +[Version] + rocksdb_version=8.10.0 + options_file_version=1.1 + +[DBOptions] + max_background_flushes=-1 + compaction_readahead_size=2097152 + strict_bytes_per_sync=false + wal_bytes_per_sync=0 + max_open_files=-1 + stats_history_buffer_size=1048576 + max_total_wal_size=0 + stats_persist_period_sec=600 + stats_dump_period_sec=0 + avoid_flush_during_shutdown=true + max_subcompactions=1 + bytes_per_sync=0 + delayed_write_rate=16777216 + max_background_compactions=-1 + max_background_jobs=2 + delete_obsolete_files_period_micros=21600000000 + writable_file_max_buffer_size=1048576 + file_checksum_gen_factory=nullptr + allow_data_in_errors=false + max_bgerror_resume_count=2147483647 + best_efforts_recovery=false + write_dbid_to_manifest=false + atomic_flush=false + manual_wal_flush=false + two_write_queues=false + avoid_flush_during_recovery=false + dump_malloc_stats=false + info_log_level=INFO_LEVEL + write_thread_slow_yield_usec=3 + unordered_write=false + allow_ingest_behind=false + fail_if_options_file_error=true + persist_stats_to_disk=false + WAL_ttl_seconds=0 + bgerror_resume_retry_interval=1000000 + allow_concurrent_memtable_write=true + paranoid_checks=true + WAL_size_limit_MB=0 + lowest_used_cache_tier=kNonVolatileBlockTier + keep_log_file_num=4 + table_cache_numshardbits=6 + max_file_opening_threads=16 + random_access_max_buffer_size=1048576 + log_readahead_size=0 + enable_pipelined_write=false + wal_recovery_mode=kPointInTimeRecovery + db_write_buffer_size=0 + allow_2pc=false + skip_checking_sst_file_sizes_on_db_open=false + skip_stats_update_on_db_open=false + recycle_log_file_num=0 + db_host_id=__hostname__ + track_and_verify_wals_in_manifest=false + use_fsync=false + wal_compression=kNoCompression + compaction_verify_record_count=true + error_if_exists=false + manifest_preallocation_size=4194304 + is_fd_close_on_exec=true + enable_write_thread_adaptive_yield=true + enable_thread_tracking=false + avoid_unnecessary_blocking_io=false + allow_fallocate=true + max_log_file_size=26214400 + advise_random_on_open=true + create_missing_column_families=false + max_write_batch_group_size_bytes=1048576 + use_adaptive_mutex=false + wal_filter=nullptr + create_if_missing=true + enforce_single_del_contracts=true + allow_mmap_writes=false + access_hint_on_compaction_start=NORMAL + verify_sst_unique_id_in_manifest=true + log_file_time_to_roll=0 + use_direct_io_for_flush_and_compaction=false + flush_verify_memtable_count=true + max_manifest_file_size=1073741824 + write_thread_max_yield_usec=100 + use_direct_reads=false + allow_mmap_reads=false + + +[CFOptions "default"] + bottommost_file_compaction_delay=0 + memtable_protection_bytes_per_key=0 + compression_per_level=kSnappyCompression + bottommost_compression=kDisableCompressionOption + sample_for_compression=0 + blob_garbage_collection_age_cutoff=0.250000 + blob_compression_type=kNoCompression + prepopulate_blob_cache=kDisable + blob_compaction_readahead_size=0 + level0_stop_writes_trigger=36 + min_blob_size=0 + last_level_temperature=kUnknown + compaction_options_universal={allow_trivial_move=false;stop_style=kCompactionStopStyleTotalSize;min_merge_width=2;compression_size_percent=-1;max_size_amplification_percent=200;incremental=false;max_merge_width=4294967295;size_ratio=1;} + target_file_size_base=67108864 + ignore_max_compaction_bytes_for_input=true + memtable_whole_key_filtering=false + blob_file_starting_level=0 + soft_pending_compaction_bytes_limit=68719476736 + max_write_buffer_number=2 + ttl=2592000 + compaction_options_fifo={file_temperature_age_thresholds=;allow_compaction=false;age_for_warm=0;max_table_files_size=1073741824;} + check_flush_compaction_key_order=true + memtable_huge_page_size=0 + max_successive_merges=0 + inplace_update_num_locks=10000 + enable_blob_garbage_collection=false + arena_block_size=1048576 + bottommost_compression_opts={use_zstd_dict_trainer=true;enabled=false;zstd_max_train_bytes=0;parallel_threads=1;max_compressed_bytes_per_kb=896;checksum=false;max_dict_bytes=0;strategy=0;max_dict_buffer_bytes=0;level=32767;window_bits=-14;} + target_file_size_multiplier=1 + max_bytes_for_level_multiplier_additional=1:1:1:1:1:1:1 + blob_garbage_collection_force_threshold=1.000000 + enable_blob_files=false + level0_slowdown_writes_trigger=20 + compression=kSnappyCompression + level0_file_num_compaction_trigger=4 + block_protection_bytes_per_key=0 + prefix_extractor=nullptr + max_bytes_for_level_multiplier=10.000000 + write_buffer_size=67108864 + disable_auto_compactions=false + max_compaction_bytes=1677721600 + memtable_max_range_deletions=0 + compression_opts={use_zstd_dict_trainer=true;enabled=false;zstd_max_train_bytes=0;parallel_threads=1;max_compressed_bytes_per_kb=896;checksum=false;max_dict_bytes=0;strategy=0;max_dict_buffer_bytes=0;level=32767;window_bits=-14;} + hard_pending_compaction_bytes_limit=274877906944 + blob_file_size=268435456 + periodic_compaction_seconds=2592000 + paranoid_file_checks=false + experimental_mempurge_threshold=0.000000 + memtable_prefix_bloom_size_ratio=0.000000 + max_bytes_for_level_base=268435456 + max_sequential_skip_in_iterations=8 + report_bg_io_stats=false + sst_partitioner_factory=nullptr + compaction_pri=kMinOverlappingRatio + compaction_style=kCompactionStyleLevel + compaction_filter_factory=nullptr + compaction_filter=nullptr + memtable_factory=SkipListFactory + comparator=leveldb.BytewiseComparator + bloom_locality=0 + min_write_buffer_number_to_merge=1 + table_factory=BlockBasedTable + max_write_buffer_size_to_maintain=0 + max_write_buffer_number_to_maintain=0 + optimize_filters_for_hits=false + default_temperature=kUnknown + preserve_internal_time_seconds=0 + force_consistency_checks=true + merge_operator={id=StringAppendTESTOperator;delimiter=,;} + num_levels=7 + level_compaction_dynamic_file_size=true + memtable_insert_with_hint_prefix_extractor=nullptr + level_compaction_dynamic_level_bytes=false + persist_user_defined_timestamps=true + preclude_last_level_data_seconds=0 + inplace_update_support=false + +[TableOptions/BlockBasedTable "default"] + num_file_reads_for_auto_readahead=2 + metadata_cache_options={unpartitioned_pinning=kFallback;partition_pinning=kFallback;top_level_index_pinning=kFallback;} + read_amp_bytes_per_bit=0 + verify_compression=false + format_version=5 + optimize_filters_for_memory=false + partition_filters=false + detect_filter_construct_corruption=false + initial_auto_readahead_size=8192 + max_auto_readahead_size=262144 + enable_index_compression=true + checksum=kXXH3 + index_block_restart_interval=1 + pin_top_level_index_and_filter=true + block_align=false + block_size=4096 + index_type=kBinarySearch + filter_policy=nullptr + metadata_block_size=4096 + no_block_cache=false + index_shortening=kShortenSeparators + whole_key_filtering=true + block_size_deviation=10 + data_block_index_type=kDataBlockBinarySearch + data_block_hash_table_util_ratio=0.750000 + cache_index_and_filter_blocks=true + prepopulate_block_cache=kDisable + block_restart_interval=16 + pin_l0_filter_and_index_blocks_in_cache=true + cache_index_and_filter_blocks_with_high_priority=true + flush_block_policy_factory=FlushBlockBySizePolicyFactory + + +[CFOptions "_timer_state/processing_user-timers"] + bottommost_file_compaction_delay=0 + memtable_protection_bytes_per_key=0 + compression_per_level=kSnappyCompression + bottommost_compression=kDisableCompressionOption + sample_for_compression=0 + blob_garbage_collection_age_cutoff=0.250000 + blob_compression_type=kNoCompression + prepopulate_blob_cache=kDisable + blob_compaction_readahead_size=0 + level0_stop_writes_trigger=36 + min_blob_size=0 + last_level_temperature=kUnknown + compaction_options_universal={allow_trivial_move=false;stop_style=kCompactionStopStyleTotalSize;min_merge_width=2;compression_size_percent=-1;max_size_amplification_percent=200;incremental=false;max_merge_width=4294967295;size_ratio=1;} + target_file_size_base=67108864 + ignore_max_compaction_bytes_for_input=true + memtable_whole_key_filtering=false + blob_file_starting_level=0 + soft_pending_compaction_bytes_limit=68719476736 + max_write_buffer_number=2 + ttl=2592000 + compaction_options_fifo={file_temperature_age_thresholds=;allow_compaction=false;age_for_warm=0;max_table_files_size=1073741824;} + check_flush_compaction_key_order=true + memtable_huge_page_size=0 + max_successive_merges=0 + inplace_update_num_locks=10000 + enable_blob_garbage_collection=false + arena_block_size=1048576 + bottommost_compression_opts={use_zstd_dict_trainer=true;enabled=false;zstd_max_train_bytes=0;parallel_threads=1;max_compressed_bytes_per_kb=896;checksum=false;max_dict_bytes=0;strategy=0;max_dict_buffer_bytes=0;level=32767;window_bits=-14;} + target_file_size_multiplier=1 + max_bytes_for_level_multiplier_additional=1:1:1:1:1:1:1 + blob_garbage_collection_force_threshold=1.000000 + enable_blob_files=false + level0_slowdown_writes_trigger=20 + compression=kSnappyCompression + level0_file_num_compaction_trigger=4 + block_protection_bytes_per_key=0 + prefix_extractor=nullptr + max_bytes_for_level_multiplier=10.000000 + write_buffer_size=67108864 + disable_auto_compactions=false + max_compaction_bytes=1677721600 + memtable_max_range_deletions=0 + compression_opts={use_zstd_dict_trainer=true;enabled=false;zstd_max_train_bytes=0;parallel_threads=1;max_compressed_bytes_per_kb=896;checksum=false;max_dict_bytes=0;strategy=0;max_dict_buffer_bytes=0;level=32767;window_bits=-14;} + hard_pending_compaction_bytes_limit=274877906944 + blob_file_size=268435456 + periodic_compaction_seconds=2592000 + paranoid_file_checks=false + experimental_mempurge_threshold=0.000000 + memtable_prefix_bloom_size_ratio=0.000000 + max_bytes_for_level_base=268435456 + max_sequential_skip_in_iterations=8 + report_bg_io_stats=false + sst_partitioner_factory=nullptr + compaction_pri=kMinOverlappingRatio + compaction_style=kCompactionStyleLevel + compaction_filter_factory=nullptr + compaction_filter=nullptr + memtable_factory=SkipListFactory + comparator=leveldb.BytewiseComparator + bloom_locality=0 + min_write_buffer_number_to_merge=1 + table_factory=BlockBasedTable + max_write_buffer_size_to_maintain=0 + max_write_buffer_number_to_maintain=0 + optimize_filters_for_hits=false + default_temperature=kUnknown + preserve_internal_time_seconds=0 + force_consistency_checks=true + merge_operator={id=StringAppendTESTOperator;delimiter=,;} + num_levels=7 + level_compaction_dynamic_file_size=true + memtable_insert_with_hint_prefix_extractor=nullptr + level_compaction_dynamic_level_bytes=false + persist_user_defined_timestamps=true + preclude_last_level_data_seconds=0 + inplace_update_support=false + +[TableOptions/BlockBasedTable "_timer_state/processing_user-timers"] + num_file_reads_for_auto_readahead=2 + metadata_cache_options={unpartitioned_pinning=kFallback;partition_pinning=kFallback;top_level_index_pinning=kFallback;} + read_amp_bytes_per_bit=0 + verify_compression=false + format_version=5 + optimize_filters_for_memory=false + partition_filters=false + detect_filter_construct_corruption=false + initial_auto_readahead_size=8192 + max_auto_readahead_size=262144 + enable_index_compression=true + checksum=kXXH3 + index_block_restart_interval=1 + pin_top_level_index_and_filter=true + block_align=false + block_size=4096 + index_type=kBinarySearch + filter_policy=nullptr + metadata_block_size=4096 + no_block_cache=false + index_shortening=kShortenSeparators + whole_key_filtering=true + block_size_deviation=10 + data_block_index_type=kDataBlockBinarySearch + data_block_hash_table_util_ratio=0.750000 + cache_index_and_filter_blocks=true + prepopulate_block_cache=kDisable + block_restart_interval=16 + pin_l0_filter_and_index_blocks_in_cache=true + cache_index_and_filter_blocks_with_high_priority=true + flush_block_policy_factory=FlushBlockBySizePolicyFactory + + +[CFOptions "_timer_state/event_user-timers"] + bottommost_file_compaction_delay=0 + memtable_protection_bytes_per_key=0 + compression_per_level=kSnappyCompression + bottommost_compression=kDisableCompressionOption + sample_for_compression=0 + blob_garbage_collection_age_cutoff=0.250000 + blob_compression_type=kNoCompression + prepopulate_blob_cache=kDisable + blob_compaction_readahead_size=0 + level0_stop_writes_trigger=36 + min_blob_size=0 + last_level_temperature=kUnknown + compaction_options_universal={allow_trivial_move=false;stop_style=kCompactionStopStyleTotalSize;min_merge_width=2;compression_size_percent=-1;max_size_amplification_percent=200;incremental=false;max_merge_width=4294967295;size_ratio=1;} + target_file_size_base=67108864 + ignore_max_compaction_bytes_for_input=true + memtable_whole_key_filtering=false + blob_file_starting_level=0 + soft_pending_compaction_bytes_limit=68719476736 + max_write_buffer_number=2 + ttl=2592000 + compaction_options_fifo={file_temperature_age_thresholds=;allow_compaction=false;age_for_warm=0;max_table_files_size=1073741824;} + check_flush_compaction_key_order=true + memtable_huge_page_size=0 + max_successive_merges=0 + inplace_update_num_locks=10000 + enable_blob_garbage_collection=false + arena_block_size=1048576 + bottommost_compression_opts={use_zstd_dict_trainer=true;enabled=false;zstd_max_train_bytes=0;parallel_threads=1;max_compressed_bytes_per_kb=896;checksum=false;max_dict_bytes=0;strategy=0;max_dict_buffer_bytes=0;level=32767;window_bits=-14;} + target_file_size_multiplier=1 + max_bytes_for_level_multiplier_additional=1:1:1:1:1:1:1 + blob_garbage_collection_force_threshold=1.000000 + enable_blob_files=false + level0_slowdown_writes_trigger=20 + compression=kSnappyCompression + level0_file_num_compaction_trigger=4 + block_protection_bytes_per_key=0 + prefix_extractor=nullptr + max_bytes_for_level_multiplier=10.000000 + write_buffer_size=67108864 + disable_auto_compactions=false + max_compaction_bytes=1677721600 + memtable_max_range_deletions=0 + compression_opts={use_zstd_dict_trainer=true;enabled=false;zstd_max_train_bytes=0;parallel_threads=1;max_compressed_bytes_per_kb=896;checksum=false;max_dict_bytes=0;strategy=0;max_dict_buffer_bytes=0;level=32767;window_bits=-14;} + hard_pending_compaction_bytes_limit=274877906944 + blob_file_size=268435456 + periodic_compaction_seconds=2592000 + paranoid_file_checks=false + experimental_mempurge_threshold=0.000000 + memtable_prefix_bloom_size_ratio=0.000000 + max_bytes_for_level_base=268435456 + max_sequential_skip_in_iterations=8 + report_bg_io_stats=false + sst_partitioner_factory=nullptr + compaction_pri=kMinOverlappingRatio + compaction_style=kCompactionStyleLevel + compaction_filter_factory=nullptr + compaction_filter=nullptr + memtable_factory=SkipListFactory + comparator=leveldb.BytewiseComparator + bloom_locality=0 + min_write_buffer_number_to_merge=1 + table_factory=BlockBasedTable + max_write_buffer_size_to_maintain=0 + max_write_buffer_number_to_maintain=0 + optimize_filters_for_hits=false + default_temperature=kUnknown + preserve_internal_time_seconds=0 + force_consistency_checks=true + merge_operator={id=StringAppendTESTOperator;delimiter=,;} + num_levels=7 + level_compaction_dynamic_file_size=true + memtable_insert_with_hint_prefix_extractor=nullptr + level_compaction_dynamic_level_bytes=false + persist_user_defined_timestamps=true + preclude_last_level_data_seconds=0 + inplace_update_support=false + +[TableOptions/BlockBasedTable "_timer_state/event_user-timers"] + num_file_reads_for_auto_readahead=2 + metadata_cache_options={unpartitioned_pinning=kFallback;partition_pinning=kFallback;top_level_index_pinning=kFallback;} + read_amp_bytes_per_bit=0 + verify_compression=false + format_version=5 + optimize_filters_for_memory=false + partition_filters=false + detect_filter_construct_corruption=false + initial_auto_readahead_size=8192 + max_auto_readahead_size=262144 + enable_index_compression=true + checksum=kXXH3 + index_block_restart_interval=1 + pin_top_level_index_and_filter=true + block_align=false + block_size=4096 + index_type=kBinarySearch + filter_policy=nullptr + metadata_block_size=4096 + no_block_cache=false + index_shortening=kShortenSeparators + whole_key_filtering=true + block_size_deviation=10 + data_block_index_type=kDataBlockBinarySearch + data_block_hash_table_util_ratio=0.750000 + cache_index_and_filter_blocks=true + prepopulate_block_cache=kDisable + block_restart_interval=16 + pin_l0_filter_and_index_blocks_in_cache=true + cache_index_and_filter_blocks_with_high_priority=true + flush_block_policy_factory=FlushBlockBySizePolicyFactory + diff --git a/flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/f42dbd75-7256-4fb8-b02e-689381c24aa6 b/flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/f42dbd75-7256-4fb8-b02e-689381c24aa6 new file mode 100644 index 0000000000000000000000000000000000000000..1aded13f6e4b64b595d56ab025bef35589f5f883 GIT binary patch literal 347 zcmb7-v2MaJ5QYzfkh-Aq1`J)XN_hg)c(6z@vP~trL?$(05#q=;1AY2h5e#ADpZ@z! zcOL)@A*Bc7op<`T)FDno)X_}m38Qv3;cF_0;-Zj>C|YDpD!~>T#rUfD;u(dPh2SLn zBvQ3Uuiqr!&_YtdNX~w!XsL4kfOVtGqrv;i)~7UBT)Okw)i_=obBVSJc&CHGGJ0Dd zr14f)_RsjYM<8q6grke;b00=ax_z{*pRnbw7m&jp^sbZqxnA< CLtVxI literal 0 HcmV?d00001 diff --git a/flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/f544f6ee-24e5-442d-a48b-6e8b0c4e6257 b/flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/f544f6ee-24e5-442d-a48b-6e8b0c4e6257 new file mode 100644 index 0000000000000000000000000000000000000000..0785704387c0ddbf67d7910eb632cf74e37d6936 GIT binary patch literal 237 zcmZS8)^KKEU^I2G?@(Z1WR%KDElbTwNz!wwEJ-cTEKYUK&n-wSN-W7Q>U3aa{KCu= z#lpbI#K6MvM@Q`^8v`RJ12Y>7!}a*3MgI7;GqEspurQopWIV~J9AA=|n_3iKT#{Il ys$Wo)pPX7;oSBy%Us{}6qzjfS2HBQ*R`Hb=K~uRvrZSymltVEU=#9J*bOQmd@Jj*! literal 0 HcmV?d00001 diff --git a/flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/fa75483b-2b31-4800-b1a5-e8da5365470c b/flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/fa75483b-2b31-4800-b1a5-e8da5365470c new file mode 100644 index 0000000000000000000000000000000000000000..966ef8e59b646540067755e3a0a2ae467e27cca1 GIT binary patch literal 282 zcmZ9Ev1-FG5QZ-;>C~ZJIs^(1WUb!8C4vZ&I7o7bE=F;$wumhm=`y5GUnSr`G927} z-~S%~JONDLIr?L$@gtHUgflr$R_wUUbs;OIbIq%zP+E%5Qj20+ZHgs_X}L}NCH(T0 zuS;GjE=9f;-&`j80NRI!nZeX8vfs|SLpm(0ecyY>=rrJwY!}(yL}ZGBb&bMcO=tfw zEbf7FW{9n)^!X9sb%g=5J!U__G~UJe+X#A}#7Ji&Jt1W`=6y8OVlt61(zW&v${$w; literal 0 HcmV?d00001 diff --git a/flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-savepoint/0d494c52-b6ba-4a4c-8945-9d005e9076d7 b/flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-savepoint/0d494c52-b6ba-4a4c-8945-9d005e9076d7 new file mode 100644 index 0000000000000000000000000000000000000000..89e40fd41805fd1170a58f8dbe0d1ac7a4a47abc GIT binary patch literal 705 zcmdT?Jx{|h5WTnvi3PzwU|_Aq$1iY+2aA9!+eLyUa)W6t(l~O=0KXnPO^1Yufq}Q& zy(iy2>74=K7$Ojyuf5Z+mF~j43p$wjO)mpvaKV>U5XD6)6;ZUznN)%;R*Lb*@`2|R zP8Ncb{EkS~51l=cVns_y1tSG}p`urp&Tp`8b+tA4t+vg3BoJP12fz`! lilOvCDV~H3rSFu0(Cxm7w~KFwep<3YI8-$7Lrt>@vu{x#xaa@? literal 0 HcmV?d00001 diff --git a/flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-savepoint/1c04996a-c2b0-461e-ba2f-6b9421422eaa b/flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-savepoint/1c04996a-c2b0-461e-ba2f-6b9421422eaa new file mode 100644 index 0000000000000000000000000000000000000000..a7cffe07e97ea8f32df7b00c3ac885146bad8bee GIT binary patch literal 770 zcmeH@y-EX75QQf(*a;TaHc9LF3Z~d1ut>=23O37i9XA*E{xCBu=nMN4f_HBdmS7{; zIo=23O37i9XA*E{xCBu=nMN4f_HBdmS7{; zIo=23O37i9XA*E{xCBu=nMN4f_HBdmS7{; zIoC|YDpD!~>T#rUfD;u(dPh2SLn zBvQ3Uuiqr!&_YtdNX~w!XsL4kfOVtGqrv;i)~7UBT)Okw)i_=obBVSJc&CHGGJ0Dd zr14f)_RsjYM<8q6grke;b00=ax_z{*pRnbw7m&jp^sbZqxnA< CLtVxI literal 0 HcmV?d00001 diff --git a/flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-savepoint/51d51ace-9822-4bb6-b545-5826e83d85eb b/flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-savepoint/51d51ace-9822-4bb6-b545-5826e83d85eb new file mode 100644 index 0000000000000000000000000000000000000000..966ef8e59b646540067755e3a0a2ae467e27cca1 GIT binary patch literal 282 zcmZ9Ev1-FG5QZ-;>C~ZJIs^(1WUb!8C4vZ&I7o7bE=F;$wumhm=`y5GUnSr`G927} z-~S%~JONDLIr?L$@gtHUgflr$R_wUUbs;OIbIq%zP+E%5Qj20+ZHgs_X}L}NCH(T0 zuS;GjE=9f;-&`j80NRI!nZeX8vfs|SLpm(0ecyY>=rrJwY!}(yL}ZGBb&bMcO=tfw zEbf7FW{9n)^!X9sb%g=5J!U__G~UJe+X#A}#7Ji&Jt1W`=6y8OVlt61(zW&v${$w; literal 0 HcmV?d00001 diff --git a/flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-savepoint/53ddf49d-a390-4cb1-96ee-93ce3ee5383b b/flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-savepoint/53ddf49d-a390-4cb1-96ee-93ce3ee5383b new file mode 100644 index 0000000000000000000000000000000000000000..a7cffe07e97ea8f32df7b00c3ac885146bad8bee GIT binary patch literal 770 zcmeH@y-EX75QQf(*a;TaHc9LF3Z~d1ut>=23O37i9XA*E{xCBu=nMN4f_HBdmS7{; zIo=23O37i9XA*E{xCBu=nMN4f_HBdmS7{; zIo=23O37i9XA*E{xCBu=nMN4f_HBdmS7{; zIoC|YDpD!~>T#rUfD;u(dPh2SLn zBvQ3Uuiqr!&_YtdNX~w!XsL4kfOVtGqrv;i)~7UBT)Okw)i_=obBVSJc&CHGGJ0Dd zr14f)_RsjYM<8q6grke;b00=ax_z{*pRnbw7m&jp^sbZqxnA< CLtVxI literal 0 HcmV?d00001 diff --git a/flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-savepoint/74b89435-4357-491b-964e-71ad08801e67 b/flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-savepoint/74b89435-4357-491b-964e-71ad08801e67 new file mode 100644 index 0000000000000000000000000000000000000000..a7cffe07e97ea8f32df7b00c3ac885146bad8bee GIT binary patch literal 770 zcmeH@y-EX75QQf(*a;TaHc9LF3Z~d1ut>=23O37i9XA*E{xCBu=nMN4f_HBdmS7{; zIo74=K7$Ojyuf5Z+mF~j43p$wjO)mpvaKV>U5XD6)6;ZUznN)%;R*Lb*@`2|R zP8Ncb{EkS~51l=cVns_y1tSG}p`urp&Tp`8b+tA4t+vg3BoJP12fz`! lilOvCDV~H3rSFu0(Cxm7w~KFwep<3YI8-$7Lrt>@vu{x#xaa@? literal 0 HcmV?d00001 diff --git a/flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-savepoint/7b921a60-0480-4cb2-b932-7be5cb9751dc b/flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-savepoint/7b921a60-0480-4cb2-b932-7be5cb9751dc new file mode 100644 index 0000000000000000000000000000000000000000..5e924258b13ca8ebcaf30d5c62affc8f8894615f GIT binary patch literal 293 zcmZ9^v1-FG5P;!p1D!IYONT(gfvnX#xI_?v69-A@(8Vb3#TK7xYP(hfJ= z_j3mTPXG@vjs6sBe2ZiV;U>4q${m-vE@h>3u6eZ*N=xy+*P`53n{vfrrgnwUzk%QH zW*>R6=au48UU%@oq#l_1Ay-#7(`KV{4>`!?e3$>U^B#iWPb_Hq; BT5|vZ literal 0 HcmV?d00001 diff --git a/flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-savepoint/_metadata b/flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-savepoint/_metadata new file mode 100644 index 0000000000000000000000000000000000000000..08dd8b7d7e2eac89e52ba2023720817604b9cee6 GIT binary patch literal 3455 zcmcgvON zNxVq788JbPQG$kO#BlH+CTjGc#t=^))TkG|3I~W152$~2&x_qz*~7+4x~uE)|Mh+U zqpEuQGm{u0v>YB^2J#9Gp*tq3&AM@$HjFhJX?12p-bCxhrkpugtClNixiXn|vi0}x z|Kp6>efG@y3-{a|z5E#{DZsPLEAt<|6nv|IZf#_0aU)f!>r8^7Py8e(-{uwityN!J zjz&UiL#m9!GG+{Otp(O04{;bX;o`u?q0{;F!f;EhT@8;_@veH+xJCnSsaKUXs*&Oy z?ufH!<(7JDi0wT+J-++Xw?DX2E4=d4BY&R&agR4+kiDSMVz5Sc)MO-Z;EmRzSttQq zO+qOcCs^y4VD2pQz!i>&4G9y1OX5JpOFiY^H~SZqwyD4yBO#AXVuJ|8qZo6-IhI68 zOe_N(p_U>Nxzu3WXB{1j2Wm`0gpRQ^%3-c_gf(?BHbMs6Fp?OVs-4qV0{A2*v2={g z1=`~kAKxR16R~44!--K8^N*d_K^{1v*{({g3k6 z-iIDI``kav2k&})6cl-G{>fiZXKV-1Jh!kOlMXyKf1LJ?KMy94MChap6^0_6NFL_)f?_Qx)f zxrr8W4PFdF3=fzyAe6glrPjU;74>AMy%a%Im_APcbbSRf1r`{aIr)#Hb7y zj31lc%nJ1M@tB z3`HACTee%bNpySsmyenG#XDebnTz7U{?ixVI)3cM_YVF3=0|&ey#?m~4=5IJYQNhK zEnmTO$H}j*{&jJ-@hY9X3<#Ihr3nv60EYrJ?K&bT7bwA3?D0+6*H{>m>ox}yV!Ogsks!faiCGkX_PV=r524+cWP;(qH2w)YU*V+ z&(<;q1q4Q*i!s84I_$Dbxfefm?7N|No>+H&01b|#m4IEbysq;&NS0< zwNmOR+SU=C|YDpD!~>T#rUfD;u(dPh2SLn zBvQ3Uuiqr!&_YtdNX~w!XsL4kfOVtGqrv;i)~7UBT)Okw)i_=obBVSJc&CHGGJ0Dd zr14f)_RsjYM<8q6grke;b00=ax_z{*pRnbw7m&jp^sbZqxnA< CLtVxI literal 0 HcmV?d00001 diff --git a/flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-savepoint/bccf06b8-9cae-4ab7-b1e8-c6934c20fc9f b/flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-savepoint/bccf06b8-9cae-4ab7-b1e8-c6934c20fc9f new file mode 100644 index 0000000000000000000000000000000000000000..1aded13f6e4b64b595d56ab025bef35589f5f883 GIT binary patch literal 347 zcmb7-v2MaJ5QYzfkh-Aq1`J)XN_hg)c(6z@vP~trL?$(05#q=;1AY2h5e#ADpZ@z! zcOL)@A*Bc7op<`T)FDno)X_}m38Qv3;cF_0;-Zj>C|YDpD!~>T#rUfD;u(dPh2SLn zBvQ3Uuiqr!&_YtdNX~w!XsL4kfOVtGqrv;i)~7UBT)Okw)i_=obBVSJc&CHGGJ0Dd zr14f)_RsjYM<8q6grke;b00=ax_z{*pRnbw7m&jp^sbZqxnA< CLtVxI literal 0 HcmV?d00001 diff --git a/flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-savepoint/c0719ae1-222b-41b5-b6d7-46c9b45c164c b/flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-savepoint/c0719ae1-222b-41b5-b6d7-46c9b45c164c new file mode 100644 index 0000000000000000000000000000000000000000..89e40fd41805fd1170a58f8dbe0d1ac7a4a47abc GIT binary patch literal 705 zcmdT?Jx{|h5WTnvi3PzwU|_Aq$1iY+2aA9!+eLyUa)W6t(l~O=0KXnPO^1Yufq}Q& zy(iy2>74=K7$Ojyuf5Z+mF~j43p$wjO)mpvaKV>U5XD6)6;ZUznN)%;R*Lb*@`2|R zP8Ncb{EkS~51l=cVns_y1tSG}p`urp&Tp`8b+tA4t+vg3BoJP12fz`! lilOvCDV~H3rSFu0(Cxm7w~KFwep<3YI8-$7Lrt>@vu{x#xaa@? literal 0 HcmV?d00001 diff --git a/flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-savepoint/f4303062-bd50-4a4b-9120-8ecf367c4dea b/flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-savepoint/f4303062-bd50-4a4b-9120-8ecf367c4dea new file mode 100644 index 0000000000000000000000000000000000000000..5e924258b13ca8ebcaf30d5c62affc8f8894615f GIT binary patch literal 293 zcmZ9^v1-FG5P;!p1D!IYONT(gfvnX#xI_?v69-A@(8Vb3#TK7xYP(hfJ= z_j3mTPXG@vjs6sBe2ZiV;U>4q${m-vE@h>3u6eZ*N=xy+*P`53n{vfrrgnwUzk%QH zW*>R6=au48UU%@oq#l_1Ay-#7(`KV{4>`!?e3$>U^B#iWPb_Hq; BT5|vZ literal 0 HcmV?d00001 diff --git a/flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-savepoint/f68fc0e0-58dd-4dd1-bfbb-c084d30912f6 b/flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-savepoint/f68fc0e0-58dd-4dd1-bfbb-c084d30912f6 new file mode 100644 index 0000000000000000000000000000000000000000..89e40fd41805fd1170a58f8dbe0d1ac7a4a47abc GIT binary patch literal 705 zcmdT?Jx{|h5WTnvi3PzwU|_Aq$1iY+2aA9!+eLyUa)W6t(l~O=0KXnPO^1Yufq}Q& zy(iy2>74=K7$Ojyuf5Z+mF~j43p$wjO)mpvaKV>U5XD6)6;ZUznN)%;R*Lb*@`2|R zP8Ncb{EkS~51l=cVns_y1tSG}p`urp&Tp`8b+tA4t+vg3BoJP12fz`! lilOvCDV~H3rSFu0(Cxm7w~KFwep<3YI8-$7Lrt>@vu{x#xaa@? literal 0 HcmV?d00001 diff --git a/flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-savepoint/f8db5709-13f7-4160-ae7e-f30730fd66b6 b/flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-savepoint/f8db5709-13f7-4160-ae7e-f30730fd66b6 new file mode 100644 index 0000000000000000000000000000000000000000..966ef8e59b646540067755e3a0a2ae467e27cca1 GIT binary patch literal 282 zcmZ9Ev1-FG5QZ-;>C~ZJIs^(1WUb!8C4vZ&I7o7bE=F;$wumhm=`y5GUnSr`G927} z-~S%~JONDLIr?L$@gtHUgflr$R_wUUbs;OIbIq%zP+E%5Qj20+ZHgs_X}L}NCH(T0 zuS;GjE=9f;-&`j80NRI!nZeX8vfs|SLpm(0ecyY>=rrJwY!}(yL}ZGBb&bMcO=tfw zEbf7FW{9n)^!X9sb%g=5J!U__G~UJe+X#A}#7Ji&Jt1W`=6y8OVlt61(zW&v${$w; literal 0 HcmV?d00001 diff --git a/flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-savepoint/fe68e282-fca1-4546-af59-520965d3f07d b/flink-tests/src/test/resources/new-stateful-broadcast-udf-migration-itcase-flink2.3-rocksdb-savepoint/fe68e282-fca1-4546-af59-520965d3f07d new file mode 100644 index 0000000000000000000000000000000000000000..a7cffe07e97ea8f32df7b00c3ac885146bad8bee GIT binary patch literal 770 zcmeH@y-EX75QQf(*a;TaHc9LF3Z~d1ut>=23O37i9XA*E{xCBu=nMN4f_HBdmS7{; zIo_6QR#$2%V?9TNs-`%c?u+wR1+%$ zZdi(AJMrhwHUM0LlO9ZTy(OX&n;nv;LaJxyNU|3%g4ovz8!HP#>PA^vB1xO7K#sK( zg?z)BD^Z!9whrhF2Jhzq@ahjhpWcGpz-aa1{zu^?Kjv(7S!#7e<3SiCu~yqJ3gfQZ zVH82%SYh#6i4t8MFA)sqY|W-QPie~Xbe%A`$Y^}W++z=h!OS^Z&S*TlXUh=%A9|w& xy=6S16ZXAcb~28`0zy9|)ADiQdNOWpN9!2>67LMfcj=|o&hQ)Xa=2U1>rdJTp??4X literal 0 HcmV?d00001 diff --git a/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-hashmap-checkpoint/1b797e8a-b107-474d-87d7-cabcead69566 b/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-hashmap-checkpoint/1b797e8a-b107-474d-87d7-cabcead69566 new file mode 100644 index 0000000000000000000000000000000000000000..966ef8e59b646540067755e3a0a2ae467e27cca1 GIT binary patch literal 282 zcmZ9Ev1-FG5QZ-;>C~ZJIs^(1WUb!8C4vZ&I7o7bE=F;$wumhm=`y5GUnSr`G927} z-~S%~JONDLIr?L$@gtHUgflr$R_wUUbs;OIbIq%zP+E%5Qj20+ZHgs_X}L}NCH(T0 zuS;GjE=9f;-&`j80NRI!nZeX8vfs|SLpm(0ecyY>=rrJwY!}(yL}ZGBb&bMcO=tfw zEbf7FW{9n)^!X9sb%g=5J!U__G~UJe+X#A}#7Ji&Jt1W`=6y8OVlt61(zW&v${$w; literal 0 HcmV?d00001 diff --git a/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-hashmap-checkpoint/1f490290-e01a-49ab-88e7-bcf8ab5013a9 b/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-hashmap-checkpoint/1f490290-e01a-49ab-88e7-bcf8ab5013a9 new file mode 100644 index 0000000000000000000000000000000000000000..8fc941d2b0310b2c3b7cbcc3c174b05198fd0619 GIT binary patch literal 1580 zcmeHHy-ve05Oz~ws6gt_frSmRVZ<8{6%Q2!RZReuB{J2~8WKCQ-AXXQlkh}50<1g* z61J0&L{w~HK%C^*_u2Q8`_4uPZ6G5a>I*r;G^Nuy;G3B7JEJgsOP3Vu`xF+M#R|&> z*DL`XF47nRkc`Ic0c5~ws^&r)M{TtAzUCb6{ov4=XHE`L@AAW(Z@DpAX)_f`B6uZ@ zYpMVb1)r5E?AFybhkV zknzAD4z9@9q0OY%JM<F!KB4cjE0tmO~l2njEB3OhGBeXBljMv~7kJQ=^q-IQqtt z(h_K5e7L3&DM+e?R5-MON|I`<6n#?i|EHU!B+IvK; r=cmn=S9kv^pB#V7A$!(JHhY)OX{uS#Jg{9FU literal 0 HcmV?d00001 diff --git a/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-hashmap-checkpoint/4dbe42e6-3d46-46c7-814b-2920346542c8 b/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-hashmap-checkpoint/4dbe42e6-3d46-46c7-814b-2920346542c8 new file mode 100644 index 0000000000000000000000000000000000000000..7ca6fef2a8e96608904359d3a1dbd6155a96cf3a GIT binary patch literal 532 zcmcIh!A`?440TuFFbQdgeZs_zNPI#xe3&RxwUnZ9slo_bpiQbKMS>sZE0AzAO{~DU zVaZYK#Lw^90B{0i1DM)o&15ZC8^s<=ZJsI6>`A^z=3i^odR;o!w8ra7v8=62B~+tj zsozv1jI7W4XLa`8WKCQ-AXXgFX4;$1ZKVh z3ENRfBPzBqAWpIppU>|u_wEHDw1td$XdvVi(}Jcmz;_wr4`##gJzY?&9}AdkmMJXf zT(cZ-JTEecKr))KCy)`Rg_;R%fPA#`zTp55egL%BOORvKzy2`s9k;@@cT$n(g0GZu zOBLXe;M2N<{pPk&k&n7cQw@il=3w$z>!98lnUK>Yii4OW@gyW@^C}o!5_9OGo_kFq zG9Ct_;SCu(Z#(7nFM@Ltg~5RQPQJawawrqmlcPe46qI6oTDr}L`es=(JzCp_lW#03 zErI3+!wronKvFHF!m&+Mlhk0Pnv0zM<*{%v+N-VKEyY0-7Nf-2meF|Zxvq&ww zcDHfD;Ioz`f;4p~G@X>aEsh9RjUZxIrcFj#|;RSKJ!W4XH)zYRZW< z*7}1uH|YG*N)S4N)6e55c>RlDSH2Uuh4bgHaDNid!@-);HjOnuFkaD<%B-n+gsWjV zAWGn}=&-r)fM1x`iwKixNgyP?63t)-*yiG literal 0 HcmV?d00001 diff --git a/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-hashmap-checkpoint/898c9b7d-7420-462e-95f2-3e510a2f8320 b/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-hashmap-checkpoint/898c9b7d-7420-462e-95f2-3e510a2f8320 new file mode 100644 index 0000000000000000000000000000000000000000..dde2299078c1fe68c2b0b5d7e764825038a0f568 GIT binary patch literal 1508 zcmeHHu};G<5Oo@0s6gt_frSmRVZG8WKCQok}plm+(b=0yAHM zgzczGBPzBqAf9B|cRt^p@12bh+Cm0BG!inyw4~`A@LkUMgAo|MrwfYpV+oaJxx%vI zniYWKs>~q*$!N}=Kt`OFYA&>Ko;45j| zQUy2^JZnN2L@gD8+bItIb7yGb~Jv)|TPq8%s({ zpoQ__nnsi$sTNY<*am7yYO%8HlZO94-Gtrr&TflKSOC}mGe*UYw6#{Yn&oca*{oQ70sZaG!~g&Q literal 0 HcmV?d00001 diff --git a/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-hashmap-checkpoint/9c594fd9-33e6-4e29-a6bf-ead5ebbc9eb3 b/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-hashmap-checkpoint/9c594fd9-33e6-4e29-a6bf-ead5ebbc9eb3 new file mode 100644 index 0000000000000000000000000000000000000000..8fc941d2b0310b2c3b7cbcc3c174b05198fd0619 GIT binary patch literal 1580 zcmeHHy-ve05Oz~ws6gt_frSmRVZ<8{6%Q2!RZReuB{J2~8WKCQ-AXXQlkh}50<1g* z61J0&L{w~HK%C^*_u2Q8`_4uPZ6G5a>I*r;G^Nuy;G3B7JEJgsOP3Vu`xF+M#R|&> z*DL`XF47nRkc`Ic0c5~ws^&r)M{TtAzUCb6{ov4=XHE`L@AAW(Z@DpAX)_f`B6uZ@ zYpMVb1)r5E?AFybhkV zknzAD4z9@9q0OY%JM<F!KB4cjE0tmO~l2njEB3OhGBeXBljMv~7kJQ=^q-IQqtt z(h_K5e7L3&DM+e?R5-MON|I`<6n#?i|EHU!B+IvK; r=cmn=S9kv^pB#V7A$!(JHhY)OX{uS#Jg{9FU literal 0 HcmV?d00001 diff --git a/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-hashmap-checkpoint/9ecc3371-f3e0-45bd-b7b7-edc593bd3663 b/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-hashmap-checkpoint/9ecc3371-f3e0-45bd-b7b7-edc593bd3663 new file mode 100644 index 0000000000000000000000000000000000000000..f4a3b3f6a28aaf25ced13786ab24c9988c38b1f4 GIT binary patch literal 549 zcmcIh%}&EG40gxQVbY`>_6QR#$2%V?9TNs-`%c?u+wR1+%$ zZdi(AJMrhwHUM0LlO9ZTy(OX&n;nv;LaJxyNU|3%g4ovz8!HP#>PA^vB1xO7K#sK( zg?z)BD^Z!9whrhF2Jhzq@ahjhpWcGpz-aa1{zu^?Kjv(7S!#7e<3SiCu~yqJ3gfQZ zVH82%SYh#6i4t8MFA)sqY|W-QPie~Xbe%A`$Y^}W++z=h!OS^Z&S*TlXUh=%A9|w& xy=6S16ZXAcb~28`0zy9|)ADiQdNOWpN9!2>67LMfcj=|o&hQ)Xa=2U1>rdJTp??4X literal 0 HcmV?d00001 diff --git a/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-hashmap-checkpoint/_metadata b/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-hashmap-checkpoint/_metadata new file mode 100644 index 0000000000000000000000000000000000000000..c3e73fa38778aff64a58761ba13faa8b9ddf3144 GIT binary patch literal 3346 zcmcguO^9Vj6|U~|bjD;7$1oBTBhzBX5cG7{@2#py1jo*djMHJl^aM2^WBqnN^ZIr3 ze!_GXLJ|ms%t{2a(M=>EBmv#Hkz^4_0)rb-6B2NvATE-HLBYVePbLu;F=KGsK2wB8m8S~9V4wKJr?2P&$omg5M4Td}0OU)}ewzieREqZ8MQSxAVUj$ujfW>SP>vMm0z+BN!bu1m{C?v9hYF8u7Wi+im0N@ae7_E9-IZ(jM&mk>HXQTE5RXgBM(;szRe=;zgUQx_7eYv*q|G@s z(#`)kE4AtJGHu$X5QNYSvPcx9@)5lD8d40(3LiyPiB`?MWLZ=k^;-@ptAx@#fN_C= zRzceez0~%A>4Ll-1@%-IYSh^yvYa@$$T2S&!I+XE9V!!&r(T;@SwU?A7d}&oR<#2u zSq5*og_r{qTtuCdX^r9ZxnXBJb@wjTg_1|zi#xli?}j^lvV0(s7izIOlPGnr72+rV zcK55de)z@957F+`-`(}~S5V_5n{`UZmI|&i+K?{nVK!s1Q8Mp9h$Ik~bBN0s;E^iI zWb!P?X4k@VWZ60lo@WdkLqQoh)+rAebdoYCCnV2p?wdW=Dx^ctqG`pm2p(;@3ROsj z;quv9%#X1_aZagajhaJ$!Ln0~GQ|~Wp)AOXN3c3e&{#=K(-<_*jdb&WtwO3zvn(y; zmO`QoaaiZUn54mnY@A2n!r4a6;#bMCGsbXF8Q>N)t+0GupbDrA+H<3fux;5jd#+VT zwP|BbuwF;dl4A{5Jb_i2gGdO_@oWUAjhcd5Q{_EH65tplkUS{xF&fA$W2gkJl9@t% z+eWAN_=%-Qdp)*{$#p1gQFPwVg>34p5=kFi<*+*xtqUa~!#dWhGfA3e{`AmYZoq6WPBfW3^>&iXT z{!P&UnaPGS`XqU(Kt$v~iL`>}M|$9vQ)ESjDQi!9;f2a(BO?-63>7PsR3R^9fznxH zaa&deJ{8GHkDAGb6bUH^&wwX}Op|N{PD=s7SCnhXj2M&5JhGv2u8IO}C5bF1mEvG| zB|y`J6l}A%T2GsvWOf!CqW9Vdw3UoeAdw`%i4Z_ZCD1AAZEm|%L7gN`7$O6eF0?JI z1Z(lM#mYGqWHxzB+r@$Zj}6(`r!Mb(=@<9yZ7=`&zNOE<_%LdmU2U`2P@_LiVUU6e z=qa9Va8z*ciRtJ$mz1@~t*{}bN~lz%lQJM##lawPfQ?i~iF&MQS)>W<^i*4|O(WY{nWHT|0Bbm5qjHtcfcFh_!v~vu%Ws7Zy{1Adfz6Z_+77V-n_Rh} zM2qEal8o2YR%_GPRgqMgfJ_DUXr~i6k5N}x%^_6DVuNUcSEH7yVlkp=8L(Mllfd@F zOZ=Uqj3-UaRQtJsYaQ!+1nlfj-n{zp2bTsfu+6`>$tjgH&eF_lUHM)M;rv#4!SQZ0 zkq?`B?lAVclu{H{QBVxKr^F+Q-3zY|iaCy-6sNkyId^Zny`5hEfE*h1iP`CIuDD$n zw$e)OBF(S#M|dyYPAj<5-cncgZwrs~%N=6aNrP6+{5(1Q7&#g{gW&pc&Gka+c2j(e z+}19gcAfhD)8qF}uQS*x662MPkspk(uk5SY7!7t)FP5dnyn|P0eE8I;7rG7|i|gd} zecvwZ?WQ5&>j-1Dfw5Y{SZ!gf?u)K&^xW=XYiC&YJaB1ut_(sj2>ix^Q1<`vPv>qr z^y(K*%#-c+5-m-`3S$+5wfE03o!3+G8WKCQok}plm+(b=0yAHM zgzczGBPzBqAf9B|cRt^p@12bh+Cm0BG!inyw4~`A@LkUMgAo|MrwfYpV+oaJxx%vI zniYWKs>~q*$!N}=Kt`OFYA&>Ko;45j| zQUy2^JZnN2L@gD8+bItIb7yGb~Jv)|TPq8%s({ zpoQ__nnsi$sTNY<*am7yYO%8HlZO94-Gtrr&TflKSOC}mGe*UYw6#{Yn&oca*{oQ70sZaG!~g&Q literal 0 HcmV?d00001 diff --git a/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-hashmap-checkpoint/c617bc43-e885-4b1c-a3cc-5453afc0b9f6 b/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-hashmap-checkpoint/c617bc43-e885-4b1c-a3cc-5453afc0b9f6 new file mode 100644 index 0000000000000000000000000000000000000000..0bc166a72ed9484e6fe7cc703f47a30f72e8e53b GIT binary patch literal 532 zcmcIh%TB{E5Zr{v0ST#xenQ0!OMHS=e5eRjREMB)iI%dohQy9y2MK+Z_JB{w+;dC4Q?+GXubpa$6@6Qiq)uV2 zUZ|5ATe~sN6YatA>wY9W`GYW|e~_HP`1;NNPvXjd%vqVHF?vVFEm~rk(d$nMlVLbe zl)#a7=;%~qL%vQx0;3DD6z7#Jcp<7{nF}~5d3GiIV+x~qtfW}Xcs9Eci+KA#^2T$1 rDP+#4;%mL~+c>rc#C}+5)ZN_oWW8-Wc1(V`9}Fc}6%Ym=k#6^QAQGX0 literal 0 HcmV?d00001 diff --git a/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-hashmap-checkpoint/c750b486-f90f-4df5-9346-5e3677dfac75 b/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-hashmap-checkpoint/c750b486-f90f-4df5-9346-5e3677dfac75 new file mode 100644 index 0000000000000000000000000000000000000000..7ca6fef2a8e96608904359d3a1dbd6155a96cf3a GIT binary patch literal 532 zcmcIh!A`?440TuFFbQdgeZs_zNPI#xe3&RxwUnZ9slo_bpiQbKMS>sZE0AzAO{~DU zVaZYK#Lw^90B{0i1DM)o&15ZC8^s<=ZJsI6>`A^z=3i^odR;o!w8ra7v8=62B~+tj zsozv1jI7W4XLa`8WKCQ-AXXgFX4;$1ZKVh z3ENRfBPzBqAWpIppU>|u_wEHDw1td$XdvVi(}Jcmz;_wr4`##gJzY?&9}AdkmMJXf zT(cZ-JTEecKr))KCy)`Rg_;R%fPA#`zTp55egL%BOORvKzy2`s9k;@@cT$n(g0GZu zOBLXe;M2N<{pPk&k&n7cQw@il=3w$z>!98lnUK>Yii4OW@gyW@^C}o!5_9OGo_kFq zG9Ct_;SCu(Z#(7nFM@Ltg~5RQPQJawawrqmlcPe46qI6oTDr}L`es=(JzCp_lW#03 zErI3+!wronKvFHF!m&+Mlhk0Pnv0zM<*{%v+N-VKEyY0-7Nf-2meF|Zxvq&ww zcDHfD;Ioz`f;4p~G@X>aEsh9RjUZxIrcFj#|;RSKJ!W4XH)zYRZW< z*7}1uH|YG*N)S4N)6e55c>RlDSH2Uuh4bgHaDNid!@-);HjOnuFkaD<%B-n+gsWjV zAWGn}=&-r)fM1x`iwKixNgyP?63t)-*yiG literal 0 HcmV?d00001 diff --git a/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-hashmap-checkpoint/eeed3950-5111-4cb6-9707-51a2eed5207a b/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-hashmap-checkpoint/eeed3950-5111-4cb6-9707-51a2eed5207a new file mode 100644 index 0000000000000000000000000000000000000000..5e924258b13ca8ebcaf30d5c62affc8f8894615f GIT binary patch literal 293 zcmZ9^v1-FG5P;!p1D!IYONT(gfvnX#xI_?v69-A@(8Vb3#TK7xYP(hfJ= z_j3mTPXG@vjs6sBe2ZiV;U>4q${m-vE@h>3u6eZ*N=xy+*P`53n{vfrrgnwUzk%QH zW*>R6=au48UU%@oq#l_1Ay-#7(`KV{4>`!?e3$>U^B#iWPb_Hq; BT5|vZ literal 0 HcmV?d00001 diff --git a/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-hashmap-checkpoint/fbdfafe2-ad27-4f56-8107-7c68ceb0b78e b/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-hashmap-checkpoint/fbdfafe2-ad27-4f56-8107-7c68ceb0b78e new file mode 100644 index 0000000000000000000000000000000000000000..0bc166a72ed9484e6fe7cc703f47a30f72e8e53b GIT binary patch literal 532 zcmcIh%TB{E5Zr{v0ST#xenQ0!OMHS=e5eRjREMB)iI%dohQy9y2MK+Z_JB{w+;dC4Q?+GXubpa$6@6Qiq)uV2 zUZ|5ATe~sN6YatA>wY9W`GYW|e~_HP`1;NNPvXjd%vqVHF?vVFEm~rk(d$nMlVLbe zl)#a7=;%~qL%vQx0;3DD6z7#Jcp<7{nF}~5d3GiIV+x~qtfW}Xcs9Eci+KA#^2T$1 rDP+#4;%mL~+c>rc#C}+5)ZN_oWW8-Wc1(V`9}Fc}6%Ym=k#6^QAQGX0 literal 0 HcmV?d00001 diff --git a/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-hashmap-savepoint-native/0d56b254-d4d2-4226-8e67-53343fb829da b/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-hashmap-savepoint-native/0d56b254-d4d2-4226-8e67-53343fb829da new file mode 100644 index 0000000000000000000000000000000000000000..5e924258b13ca8ebcaf30d5c62affc8f8894615f GIT binary patch literal 293 zcmZ9^v1-FG5P;!p1D!IYONT(gfvnX#xI_?v69-A@(8Vb3#TK7xYP(hfJ= z_j3mTPXG@vjs6sBe2ZiV;U>4q${m-vE@h>3u6eZ*N=xy+*P`53n{vfrrgnwUzk%QH zW*>R6=au48UU%@oq#l_1Ay-#7(`KV{4>`!?e3$>U^B#iWPb_Hq; BT5|vZ literal 0 HcmV?d00001 diff --git a/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-hashmap-savepoint-native/198994c5-87c9-45c3-a0db-17f4b52a2068 b/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-hashmap-savepoint-native/198994c5-87c9-45c3-a0db-17f4b52a2068 new file mode 100644 index 0000000000000000000000000000000000000000..432645f554474c3937f48b898d2c0333d49e5bf5 GIT binary patch literal 1508 zcmeHHu};G<5Oot^s6gt_frSmRVZ`8WKCQ-AXXgFX3zW7Q{y& zVLJ+GM8y^c#7S1-^ZDK7-n}4%wvaIo4TPLxTF`U`_%37o!E6}5rwfYpV*zu`GKJ-w zYnB6!=S2n)NJcaE1Tx~ZP&1(okdJoWHXPu=4}kW133813*B>Un<5sx#PAc+T@Rc%d zsRBF_d|H>V-`qAT@=;f5s^O5+984Z-9n?D`6LOkFaS)Rvo`eK#UIn8|Vh%mjbFWE6 z#=~GVydh)fZKu5cMQ~1{Fc^^E$+wqS4rStca#To>f>Ml6OSkz@-z;mUM{C<~@{J{> zCD7bpxSZ&v>iTu8UcT`UL-E&CLJ+ literal 0 HcmV?d00001 diff --git a/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-hashmap-savepoint-native/47ac03eb-4cdd-4995-a09b-ec167dd569ef b/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-hashmap-savepoint-native/47ac03eb-4cdd-4995-a09b-ec167dd569ef new file mode 100644 index 0000000000000000000000000000000000000000..6bf035568ab3900b0b850a5f8ed68a4c90366750 GIT binary patch literal 1161 zcmeH`!AitH42H8+ya^sWc=0A4M|=Yp>0zM<*{%v+N-VKEyY0-7Nf-2meF|Zxvq&ww zcDHfD;Ioz`f;4p~G@X>aEsh9RjUZxIrcFj#|;RSKJ!W4XH)zYRZW< z*7}1uH|YG*N)S4N)6e55c>RlDSH2Uuh4bgHaDNid!@-);HjOnuFkaD<%B-n+gsWjV zAWGn}=&-r)fM1x`iwKixNgyP?63t)-*yiG literal 0 HcmV?d00001 diff --git a/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-hashmap-savepoint-native/54881c11-6731-49fc-95ff-b7380b267b3c b/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-hashmap-savepoint-native/54881c11-6731-49fc-95ff-b7380b267b3c new file mode 100644 index 0000000000000000000000000000000000000000..9bb072cc48cc3351126d0546be586097517571af GIT binary patch literal 1580 zcmeHHy-ve05Oz~ws6gt_frSmRVZ<8{6%Q2!RZReuB{J2~8WKCQ-AXXQlkhY=3xan* z!gdmph>9%?h?5-qKKp)h-`NPE4P?YaeIaL5^i7pTa`3SYf%~ znk9h4MH)i@lF^twfDAZI)m&)fsExK>*PO$>9~@fq%*i3@U4EGJEjLChZKfhg1h1rV zO%>pw;IlG?-MU)KsEs;GQw{r^CSc-NX`${3nULcs2>p;m;bcV6`h`C{CuY+_UAK$^ zG9LKD!4(-hw3+mJXZ|S(Mt-0CPQ0DSawsELlY>->DJaGGEQ8IDw#~3&YP7NpN8ead zS^`as57#sz1xdA#3WqjONm7lKqEAZx|8x^J(>vQWE@25=|I^syTha`T_Q|nXdylB~ r{IvP<=I&qRljH9>WY1d3W-n86tw75;->yv7qOj^z@anR_zhZp?iQUmD literal 0 HcmV?d00001 diff --git a/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-hashmap-savepoint-native/5b3c1cbc-a071-40ce-93a1-6ea0248c3ed9 b/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-hashmap-savepoint-native/5b3c1cbc-a071-40ce-93a1-6ea0248c3ed9 new file mode 100644 index 0000000000000000000000000000000000000000..2fed7b0aa3b0785ed1d69277a10706f54da9b1a5 GIT binary patch literal 1580 zcmeHHy-ve05Oxz_s6gt_frSmRVZ<8{6%Q2!RZReuB{J2~8WKCQ-AXXQlkhY=3*sS= zu$_h^P_cypagt--XWvimI~yUifsA;lC*%~<-0lGa$~sCW+Kv5@Jbrj zQ~@3cJ}pz&t*f<+eAHH&YS`yA1rx_g3w2J&m>kDp6htJB#zTVEFM`22F`FLhxMduY zQ9l^;ugJ)u&7{{o3r7u=q;lFweQEVTkH=jC=~vKEC^yMkAj1^yZ91BqbKC;$Ke literal 0 HcmV?d00001 diff --git a/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-hashmap-savepoint-native/6144de29-daca-41b8-9091-d698397c6b1a b/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-hashmap-savepoint-native/6144de29-daca-41b8-9091-d698397c6b1a new file mode 100644 index 0000000000000000000000000000000000000000..0bc166a72ed9484e6fe7cc703f47a30f72e8e53b GIT binary patch literal 532 zcmcIh%TB{E5Zr{v0ST#xenQ0!OMHS=e5eRjREMB)iI%dohQy9y2MK+Z_JB{w+;dC4Q?+GXubpa$6@6Qiq)uV2 zUZ|5ATe~sN6YatA>wY9W`GYW|e~_HP`1;NNPvXjd%vqVHF?vVFEm~rk(d$nMlVLbe zl)#a7=;%~qL%vQx0;3DD6z7#Jcp<7{nF}~5d3GiIV+x~qtfW}Xcs9Eci+KA#^2T$1 rDP+#4;%mL~+c>rc#C}+5)ZN_oWW8-Wc1(V`9}Fc}6%Ym=k#6^QAQGX0 literal 0 HcmV?d00001 diff --git a/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-hashmap-savepoint-native/738ada90-e74f-49ac-9d78-5c7f9e5bb599 b/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-hashmap-savepoint-native/738ada90-e74f-49ac-9d78-5c7f9e5bb599 new file mode 100644 index 0000000000000000000000000000000000000000..432645f554474c3937f48b898d2c0333d49e5bf5 GIT binary patch literal 1508 zcmeHHu};G<5Oot^s6gt_frSmRVZ`8WKCQ-AXXgFX3zW7Q{y& zVLJ+GM8y^c#7S1-^ZDK7-n}4%wvaIo4TPLxTF`U`_%37o!E6}5rwfYpV*zu`GKJ-w zYnB6!=S2n)NJcaE1Tx~ZP&1(okdJoWHXPu=4}kW133813*B>Un<5sx#PAc+T@Rc%d zsRBF_d|H>V-`qAT@=;f5s^O5+984Z-9n?D`6LOkFaS)Rvo`eK#UIn8|Vh%mjbFWE6 z#=~GVydh)fZKu5cMQ~1{Fc^^E$+wqS4rStca#To>f>Ml6OSkz@-z;mUM{C<~@{J{> zCD7bpxSZ&v>iTu8UcT`UL-E&CLJ+ literal 0 HcmV?d00001 diff --git a/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-hashmap-savepoint-native/746408cf-cdb8-4341-90ed-0e8e537776d9 b/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-hashmap-savepoint-native/746408cf-cdb8-4341-90ed-0e8e537776d9 new file mode 100644 index 0000000000000000000000000000000000000000..b55d54feede067f2fe4bf2f5c6df2ee95a6f5096 GIT binary patch literal 1508 zcmeHH!Ait15KXu0VNuw_9=v!HZ$|tB%bLStm1SF%^-^LPyU{i&NxGmX{Sv>%ZxKI2 zFiBau#l>4ahz~+ClgZ3v-XsX2Eo9I`BOxsv7Awm>Y54!sP1sHE?6$as1#taOW0!wPH#FKe=dylA-s{Wu b+eiHX%|}$Do~?yNTWe*jS?>0o&5G3*{~685 literal 0 HcmV?d00001 diff --git a/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-hashmap-savepoint-native/82c38e44-ac91-47ac-a3cc-fb76736ca71c b/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-hashmap-savepoint-native/82c38e44-ac91-47ac-a3cc-fb76736ca71c new file mode 100644 index 0000000000000000000000000000000000000000..7ca6fef2a8e96608904359d3a1dbd6155a96cf3a GIT binary patch literal 532 zcmcIh!A`?440TuFFbQdgeZs_zNPI#xe3&RxwUnZ9slo_bpiQbKMS>sZE0AzAO{~DU zVaZYK#Lw^90B{0i1DM)o&15ZC8^s<=ZJsI6>`A^z=3i^odR;o!w8ra7v8=62B~+tj zsozv1jI7W4XLasZE0AzAO{~DU zVaZYK#Lw^90B{0i1DM)o&15ZC8^s<=ZJsI6>`A^z=3i^odR;o!w8ra7v8=62B~+tj zsozv1jI7W4XLatQ(uwT2i!C$ckG_(KBSR_`k^ndQXGdr7XX+-eC+;i`_ z|L>3A|IFDhZ)1eeD*Vc|+$?Af-L*BGjzfB2{nT_)4R_a@S9JW;P6|(qhP^@68*De5 z?8L{v^v`GA#pj+qarI+&>+k&vge<{tr3fnz7Rc4)18;DzIElo*Y5b&ciHDpfrMgm?ZhqcFmnVQYhT)pr8mJs!vZ%+ z2r$V~EVK*Q@epwKT4}C=(=-4ZT+7GNhF4jVOf}|$S}dH1*wQF5u_AIGwevwV)XjaC zm0ERqSyUahG?H13rDqC@oH@4A60EWyUOG;Ko~gbUZ6t2A5td^k3Be*!iVaf?EFqdw zMToO$QFZaWzKYiiVW_=Mj&RGR!A=>0g_IF{6Ak!bTxQe;l3c@GytYC)%9X>?8SpxK zhg~EBOQlm*OlKx_LtXA4ta`htzxQ}uD0$j{d^k#DR}IH#<3J)W)?{@if$HIwh@E`( zo)>O?{UcXCL;BZ#fA^=K2Z{4+)+wE7Dt?u#4e81rWV7Ut@Z_-wF=AmYlp3)fr$CjC zQ7W5q!?p4q2&qnqE8!rK3~t1Dh)1?KP$zZrjv3WbH$1H-bbTQm`4*_A)>tco#6|}Q zk_;SFM~|t_!b|2DQKk`dq2#fThCv}IFv4=kmR39qL9@xMF|^!o z+v*LTcwqetgMr&k5uonnm8VX>_>DjR@B@GRW@H9`_f!%pL5A4o+ zW?}bwEBLL~og+e4J~sH=zps9H z(Y^&3xS@z^T(HpP+H;GwbO16+YV5PjI5R7A_FM$rR#L$QPEz0&@~(r@P{fR3uam@@ z5K6U=+?s`S?$4-0(J(tfIkW`U0-#Me@3FB^#86JcGR>$oq)E#%prLb&5)Ly3iaTRr zJP=Y)O`)b!2$DqEc3Z;7+ONY8!!%HBtRa^K$W#?S9t|IpJ9EoSpw(GVJ31PVNuketmtsi+*6?er~ZsC8nIflJl}NI(R?9E%p`#JHCn0EM)V zgA3fa=wO&ZMj=Qb65FT^mO*Emr1#Rc!U`^stn0yp2}ByG6R6H`YDgLek;t0!gFrm* z-lBS8tTt#UjG+N)2CfZY%si8CRV z8GvCbZypVuXEHHwF`)|3&=OFcl*P;^!+8v09`NF|Ha-f);H(i~q6%PzfUAs|;)w`2 z9!1}#r1_D>5J#^nrA_0psjv%HMf9z%D;-XyqjJmm%<_4_G4hHh)O z&bVIv{=V6JZ_u0U6pGo-*3?g?Fjw})Y)vPlG>BzuH4otk4G%}BgV1+iSlmRn@7s29 zZZZ#nOsn2-(47l9GiQ5n6RnilTA@2Pzv3>r zZr=^IyIa*5{vg1&=#d0=;&M!XoVQOd;QHBO6U)DVNust P(Ua(Cg;vf#eE#&??|1a+ literal 0 HcmV?d00001 diff --git a/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-hashmap-savepoint-native/ab25e2b9-0168-490c-9e69-2be833dcc353 b/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-hashmap-savepoint-native/ab25e2b9-0168-490c-9e69-2be833dcc353 new file mode 100644 index 0000000000000000000000000000000000000000..b55d54feede067f2fe4bf2f5c6df2ee95a6f5096 GIT binary patch literal 1508 zcmeHH!Ait15KXu0VNuw_9=v!HZ$|tB%bLStm1SF%^-^LPyU{i&NxGmX{Sv>%ZxKI2 zFiBau#l>4ahz~+ClgZ3v-XsX2Eo9I`BOxsv7Awm>Y54!sP1sHE?6$as1#taOW0!wPH#FKe=dylA-s{Wu b+eiHX%|}$Do~?yNTWe*jS?>0o&5G3*{~685 literal 0 HcmV?d00001 diff --git a/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-hashmap-savepoint-native/ab44c145-c837-4862-b0e5-a9f3e6d6a353 b/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-hashmap-savepoint-native/ab44c145-c837-4862-b0e5-a9f3e6d6a353 new file mode 100644 index 0000000000000000000000000000000000000000..6bf035568ab3900b0b850a5f8ed68a4c90366750 GIT binary patch literal 1161 zcmeH`!AitH42H8+ya^sWc=0A4M|=Yp>0zM<*{%v+N-VKEyY0-7Nf-2meF|Zxvq&ww zcDHfD;Ioz`f;4p~G@X>aEsh9RjUZxIrcFj#|;RSKJ!W4XH)zYRZW< z*7}1uH|YG*N)S4N)6e55c>RlDSH2Uuh4bgHaDNid!@-);HjOnuFkaD<%B-n+gsWjV zAWGn}=&-r)fM1x`iwKixNgyP?63t)-*yiG literal 0 HcmV?d00001 diff --git a/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-hashmap-savepoint-native/d7585297-5b26-4ff3-9590-6f40b5a30c7c b/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-hashmap-savepoint-native/d7585297-5b26-4ff3-9590-6f40b5a30c7c new file mode 100644 index 0000000000000000000000000000000000000000..f4a3b3f6a28aaf25ced13786ab24c9988c38b1f4 GIT binary patch literal 549 zcmcIh%}&EG40gxQVbY`>_6QR#$2%V?9TNs-`%c?u+wR1+%$ zZdi(AJMrhwHUM0LlO9ZTy(OX&n;nv;LaJxyNU|3%g4ovz8!HP#>PA^vB1xO7K#sK( zg?z)BD^Z!9whrhF2Jhzq@ahjhpWcGpz-aa1{zu^?Kjv(7S!#7e<3SiCu~yqJ3gfQZ zVH82%SYh#6i4t8MFA)sqY|W-QPie~Xbe%A`$Y^}W++z=h!OS^Z&S*TlXUh=%A9|w& xy=6S16ZXAcb~28`0zy9|)ADiQdNOWpN9!2>67LMfcj=|o&hQ)Xa=2U1>rdJTp??4X literal 0 HcmV?d00001 diff --git a/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-hashmap-savepoint-native/ea039358-a684-455d-b8d8-098af219c0ea b/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-hashmap-savepoint-native/ea039358-a684-455d-b8d8-098af219c0ea new file mode 100644 index 0000000000000000000000000000000000000000..0bc166a72ed9484e6fe7cc703f47a30f72e8e53b GIT binary patch literal 532 zcmcIh%TB{E5Zr{v0ST#xenQ0!OMHS=e5eRjREMB)iI%dohQy9y2MK+Z_JB{w+;dC4Q?+GXubpa$6@6Qiq)uV2 zUZ|5ATe~sN6YatA>wY9W`GYW|e~_HP`1;NNPvXjd%vqVHF?vVFEm~rk(d$nMlVLbe zl)#a7=;%~qL%vQx0;3DD6z7#Jcp<7{nF}~5d3GiIV+x~qtfW}Xcs9Eci+KA#^2T$1 rDP+#4;%mL~+c>rc#C}+5)ZN_oWW8-Wc1(V`9}Fc}6%Ym=k#6^QAQGX0 literal 0 HcmV?d00001 diff --git a/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-hashmap-savepoint-native/f6c8c93d-551e-437e-9705-ac0dea275783 b/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-hashmap-savepoint-native/f6c8c93d-551e-437e-9705-ac0dea275783 new file mode 100644 index 0000000000000000000000000000000000000000..966ef8e59b646540067755e3a0a2ae467e27cca1 GIT binary patch literal 282 zcmZ9Ev1-FG5QZ-;>C~ZJIs^(1WUb!8C4vZ&I7o7bE=F;$wumhm=`y5GUnSr`G927} z-~S%~JONDLIr?L$@gtHUgflr$R_wUUbs;OIbIq%zP+E%5Qj20+ZHgs_X}L}NCH(T0 zuS;GjE=9f;-&`j80NRI!nZeX8vfs|SLpm(0ecyY>=rrJwY!}(yL}ZGBb&bMcO=tfw zEbf7FW{9n)^!X9sb%g=5J!U__G~UJe+X#A}#7Ji&Jt1W`=6y8OVlt61(zW&v${$w; literal 0 HcmV?d00001 diff --git a/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-hashmap-savepoint-native/fa413e74-7411-4abb-89a1-90e492721580 b/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-hashmap-savepoint-native/fa413e74-7411-4abb-89a1-90e492721580 new file mode 100644 index 0000000000000000000000000000000000000000..f4a3b3f6a28aaf25ced13786ab24c9988c38b1f4 GIT binary patch literal 549 zcmcIh%}&EG40gxQVbY`>_6QR#$2%V?9TNs-`%c?u+wR1+%$ zZdi(AJMrhwHUM0LlO9ZTy(OX&n;nv;LaJxyNU|3%g4ovz8!HP#>PA^vB1xO7K#sK( zg?z)BD^Z!9whrhF2Jhzq@ahjhpWcGpz-aa1{zu^?Kjv(7S!#7e<3SiCu~yqJ3gfQZ zVH82%SYh#6i4t8MFA)sqY|W-QPie~Xbe%A`$Y^}W++z=h!OS^Z&S*TlXUh=%A9|w& xy=6S16ZXAcb~28`0zy9|)ADiQdNOWpN9!2>67LMfcj=|o&hQ)Xa=2U1>rdJTp??4X literal 0 HcmV?d00001 diff --git a/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-hashmap-savepoint/07c6ae20-da34-494f-b0df-5af6b753d676 b/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-hashmap-savepoint/07c6ae20-da34-494f-b0df-5af6b753d676 new file mode 100644 index 0000000000000000000000000000000000000000..06a691dddf6c282f65b550e17a4602319e346d64 GIT binary patch literal 1521 zcmeHH!Ab)$5S_LvQWPrmU=QBJn-TxOrRGqqQo5^BFH0nK4IjM5l=lo5-gN0dHisTvAxfGV*4w&nm2egL%BGmvAbU%#9Dl3SgXclshp1ph?i zmMJ7{!3RqU`*}CVr~*}`nZ`rT5;S$Jm7sP;d-OE)123Rq(CbiGzw+9b)O;*M%^gFZ zc3WP%bwj%@S`5AVg?CQm(6O>+_ jw_fctYOS1YiydHR`XyvjHWxALHRdVRML0V+wAt(f$XL-A literal 0 HcmV?d00001 diff --git a/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-hashmap-savepoint/0e072358-d5a9-4485-99df-815c3bf7c82b b/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-hashmap-savepoint/0e072358-d5a9-4485-99df-815c3bf7c82b new file mode 100644 index 0000000000000000000000000000000000000000..7ff4929406c96094b81b29f5ef3de417b0c34f6b GIT binary patch literal 561 zcmcIh%}&EG40g+pP$i@t_6QRNbQ zPU$)086C5)^NMeDYz`3iA%#&lQ{2ho*|yFx`X$~Y#gmZ4UZZ&S;lL{t?;Q(VEB$cP^=$gNHhx-mI>D^ z0_-Po2p&jAL-qvH<1|)Np-rMX+J0Y46Yl?z(1tIP9HI8rhw-naXRtD6ETTy8LK`yyAA4G3Dlbo&>?7#-A1uYpH~ zJ-6SxCc{))O?&Ng_l$T0w@ZGf-fmzqltKC@hp`l6P>S)%LTw&eH^-9sqm|!q{0$|g zCD6#^NQXwmAgLBoVc!;7f>c5!pOYp2e|iY3nVp>ymhb>v|HD}2E~y4a+i}NvMzz;Z`BGWaWf#DS2>O!8(jZxR650wYyu3ppYzWy3L&hdAO-W)YD`Hf2Q5Qk>{0Rzyy? zjuIrnB#qHW8L>EeM(J~ws7D%ompDbP|7k4qFDZvcn{jLY0+rYK j&YS&4t>n)zp8@vfnWx~|UfQZgYvo(&OLL|;l*Qr`$QIEU literal 0 HcmV?d00001 diff --git a/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-hashmap-savepoint/3308ecd2-84c1-4743-886c-4e211ce781e3 b/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-hashmap-savepoint/3308ecd2-84c1-4743-886c-4e211ce781e3 new file mode 100644 index 0000000000000000000000000000000000000000..b1a06476d73bce1f81a26fbf65be152ef8e76f77 GIT binary patch literal 1521 zcmeHH!Ab)$5S_LvQWPrmU=QBJn-TxOrRGqqQo5^BFH0Vnt-e zb(A0pvNT2?WyIp>5v9*rs>VVaq8eCT1Pf&Sz k-gwR2<+HC)ZnH1I*5nIhm)7T)^;)wn^*NkR9Lse20m!w{7ytkO literal 0 HcmV?d00001 diff --git a/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-hashmap-savepoint/58c296ae-1728-44c1-8906-6c287ccdef10 b/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-hashmap-savepoint/58c296ae-1728-44c1-8906-6c287ccdef10 new file mode 100644 index 0000000000000000000000000000000000000000..2bceb5cf93a5e692260525014c33466a66d7b4c0 GIT binary patch literal 1145 zcmeH`!AiqG5Qe8wdJ{Z&=*3&VNDhS@N>dfQgfWciYO=e`P73V{_bCK7DH21) zTQ1_jF3hm=@3-@_05FCS5!_oY6gtc|q+UyH-b13*8*Wj_&QUG8^onaEx+1l%T}dgi z#!~NzQ-jWLtOTJmxHz1*g0o))oA#r~EnGc)g!7|zEr0CEZB<$G4dVqpsl=M1Lzwo{ z9#I6>S%b})7Zkd2Y;*Eno8nk*vBMT(1ecHVNv@->?7$$xt8!?-!=c}ZI`@^9mi-)9gTKLP84b`Agl literal 0 HcmV?d00001 diff --git a/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-hashmap-savepoint/63be2c2f-3f94-432c-8e12-2111d32d8259 b/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-hashmap-savepoint/63be2c2f-3f94-432c-8e12-2111d32d8259 new file mode 100644 index 0000000000000000000000000000000000000000..966ef8e59b646540067755e3a0a2ae467e27cca1 GIT binary patch literal 282 zcmZ9Ev1-FG5QZ-;>C~ZJIs^(1WUb!8C4vZ&I7o7bE=F;$wumhm=`y5GUnSr`G927} z-~S%~JONDLIr?L$@gtHUgflr$R_wUUbs;OIbIq%zP+E%5Qj20+ZHgs_X}L}NCH(T0 zuS;GjE=9f;-&`j80NRI!nZeX8vfs|SLpm(0ecyY>=rrJwY!}(yL}ZGBb&bMcO=tfw zEbf7FW{9n)^!X9sb%g=5J!U__G~UJe+X#A}#7Ji&Jt1W`=6y8OVlt61(zW&v${$w; literal 0 HcmV?d00001 diff --git a/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-hashmap-savepoint/78d70a3a-33b3-47b7-a56b-98e36e1a599e b/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-hashmap-savepoint/78d70a3a-33b3-47b7-a56b-98e36e1a599e new file mode 100644 index 0000000000000000000000000000000000000000..5d6822766127c64e23b081750bc29315f80c1a55 GIT binary patch literal 1521 zcmeHH!Ab)$5S_LvQWPrmU=QBJn-TxOrRGqqQo5^BFH0f#DS2>O!8(jZxR650wYyu3ppYzWy3L&hdAO-W)YD`Hf2Q5Qk>{0Rzyy? zjuIrnB#qHW8L>EeM(J~ws7D%ompDbP|7k4qFDZvcn{jLY0+rYK j&YS&4t>n)zp8@vfnWx~|UfQZgYvo(&OLL|;l*Qr`$QIEU literal 0 HcmV?d00001 diff --git a/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-hashmap-savepoint/7ccc1ae0-7621-4931-899d-a630a9caf807 b/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-hashmap-savepoint/7ccc1ae0-7621-4931-899d-a630a9caf807 new file mode 100644 index 0000000000000000000000000000000000000000..3ca8fe8552489a7a4f7f0a49c7b265c7db018ddc GIT binary patch literal 535 zcmZQzU|?ea0wxCM{GxQd#Dc`+j8wg}oXoszASY8VE3qt5ucWddwX`HNr&zD3G_NEx zH&rjBv>+!nIJGDHGms9Y2mF*0x!mn4>?>gFZprULB&0Y(M^Z`Vjy zm-yfi#}L=}kjMa62G%e~pHNqzBol)Gm>D1J8szEd;~C`|1Qw-@^F;g{eO-eC9GzX! z?F+*Q4p;<${i7F_pPAwZ^iwe~+K{3{1&26Fpnw8_s}V#30W*l;01-gI{Qo}y6wRa% literal 0 HcmV?d00001 diff --git a/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-hashmap-savepoint/86a44de5-99ac-4ad2-aae2-1f01d7e8347f b/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-hashmap-savepoint/86a44de5-99ac-4ad2-aae2-1f01d7e8347f new file mode 100644 index 0000000000000000000000000000000000000000..7ff4929406c96094b81b29f5ef3de417b0c34f6b GIT binary patch literal 561 zcmcIh%}&EG40g+pP$i@t_6QRNbQ zPU$)086C5)^NMeDYz`3iA%#&lQ{2ho*|yFx`X$~Y#gmZ4UZZ&S;lL{t?7xYP(hfJ= z_j3mTPXG@vjs6sBe2ZiV;U>4q${m-vE@h>3u6eZ*N=xy+*P`53n{vfrrgnwUzk%QH zW*>R6=au48UU%@oq#l_1Ay-#7(`KV{4>`!?e3$>U^B#iWPb_Hq; BT5|vZ literal 0 HcmV?d00001 diff --git a/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-hashmap-savepoint/8c2d1a1b-debb-4750-b6f2-260fe94c5869 b/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-hashmap-savepoint/8c2d1a1b-debb-4750-b6f2-260fe94c5869 new file mode 100644 index 0000000000000000000000000000000000000000..3ca8fe8552489a7a4f7f0a49c7b265c7db018ddc GIT binary patch literal 535 zcmZQzU|?ea0wxCM{GxQd#Dc`+j8wg}oXoszASY8VE3qt5ucWddwX`HNr&zD3G_NEx zH&rjBv>+!nIJGDHGms9Y2mF*0x!mn4>?>gFZprULB&0Y(M^Z`Vjy zm-yfi#}L=}kjMa62G%e~pHNqzBol)Gm>D1J8szEd;~C`|1Qw-@^F;g{eO-eC9GzX! z?F+*Q4p;<${i7F_pPAwZ^iwe~+K{3{1&26Fpnw8_s}V#30W*l;01-gI{Qo}y6wRa% literal 0 HcmV?d00001 diff --git a/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-hashmap-savepoint/_metadata b/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-hashmap-savepoint/_metadata new file mode 100644 index 0000000000000000000000000000000000000000..0cee084b49bd85a403062b31238057068fcf1369 GIT binary patch literal 2955 zcmcguO^6&t6t3B9){RLthDb~lvf^qGshO^-{;5h7T-F5FY<_T7hyjV!Rn@y=W_re% zp0Mj7pn@LENd$9IgoJ>Q2zt?j=phh=;Kd&ddh{S363`%P1jSd~J+r;p31$&2XzHh5 zef8D%Ucc8<&(C6n&f@j!**@0~(J1e0LofH;#5}BC35xn};8bSLi>(Ebm z|JMi__gQGDq7i11aIwp%!rTywDIr8NsyX#UW?tH!Z|ilVd+Rb8+b>&a$1>*o%!1KX zOTrq!d-C0vAI@F8^!Ld_FKznc4f^yXAXv)jCDy>8cM)`3KFJqK*MT8dR1--;tW6kV zH}D)B`VlbnoyZ7RdECz#4sC_){npbv1+|kRsAHUfGLK{JNr7FLdsqk^VNN{7!YELj zh8fZj=_A6xvQ3+1TA-dXm98Sp0U4EVD0a1DLE#KvNhJZ0`q2QU_awE3sV^K&-4=E0 zN1H9vmPxaX#+S)DlbWTvg4My?h)(>n{e$&a??3s3Q(ydg+vDefS6|yy;EXRyWw7JE z*r2Tk;tF3HOajV521PIzjt`6}50ug-B2Kn{c%g^04C4let$htZ1Fi!{GKm=r88|Eq zu=M;83vQTii1dUo8Q9uii=a1iSPDw0>qcG_0W}B(m+=6Yau|`22cDK%3pWEBnJI$a z%wZ|06DYVmb+DEUf?v214jqUBPey(icuf0&zmn<3YArstYwVdgmJOp3V(S;rPaOaG z!ra4WK7Z@kAFU*VJy7Je6C%F1+&nJ6pef^xbPyi(vXc zu(;(MK!5n?@LdK!HudW14e?WdUb?TyukaydacX0<__;zXDk6=81D_Ib6ti(EG?qSd zq);;APLOG{iX6aw>AKq3k5nq`N=>nZXuu?Lhz<;AZV=_5x1IwcPiV>lfrVy{jZ=oX z?{Eyc#$!r~kSM;A>3_=sWZ%mt7an+j=R#xr9AE^b zkI)0RGh3?!WGe|-75g*_3FlG^k7Z0(kpmcWxKZGHZnK{oxZp7ELp&HLfyxA&m>jgo zbQL9>)UIK&@9m3=*RRZXPLbK)a{aA``i>Y>!tMLi2>LJV1lr}SLszrDG-?YZS0N2U z2OAbd7)lvvO?^n>I`Sw~Gp&uv%^%FS=iRw0Xl1lMw61SO!mPrtuhHF%^YgE!} zRPt+7mP{+vShhNI&BX56J>N=iP(mOAxfKzr^0-NV(Cqg2UjJtF%;7Dc452mC=yu@P zkST0}yp>c`vu!G7-l%R;YsQs6(BA&G-P35;R+I#7o_;|dmzBDVXDijD4L^hMZcD4# zNtT>2p)5{+!nIJGDHGms9Y2mF*0x!mn4>?>gFZprULB&0Y(M^Z`Vjy zm-yfi#}L=}kjMa62G%e~pHNqzBol)Gm>D1J8szEd;~C`|1Qw-@^F;g{eO-eC9GzX! z?F+*Q4p;<${i7F_pPAwZ^iwe~+K{3{1&26Fpnw8_s~JQB0TYPe01-gI^#4Bq6zZf9 literal 0 HcmV?d00001 diff --git a/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-hashmap-savepoint/e96e1b5d-a394-49c1-a2b2-62fb188ad953 b/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-hashmap-savepoint/e96e1b5d-a394-49c1-a2b2-62fb188ad953 new file mode 100644 index 0000000000000000000000000000000000000000..7e6a6520d6160747b5283fcfeb44aeb894912f63 GIT binary patch literal 1620 zcmeHH%}N6?5T0&Tq$sq|gFSc?Z$^9rmzqPdO6jgjy)3cBc6B#dlC)4y+86Ojd>)@d zYLf2ST`b<#gE$Z-^FPTq3;=9_CI{MFj1Wo4a7@vC6tYJxgy?}x2~x9!PE;64BqmIS zF-86)iKs_KNTTqG3XhRQj=9o_s<8XMVG|zykkEuLlbk^F=0p2e?CGtI8S*&hEZ4>z zkrZ_~8?9P6D2j!Ss!)@PD0;+5Om!VY6{w%%0X_>n-}Q0e4|*6juifqy)CE(9Cm1ULIqJ=NaUMBE07APWOK5@|4$ELIkU4@z>-cWQ~xlQxl77{(RAE$o}u#k zvh!xv=sIf6Q-^74HBp8#4$yFxnlF_xZRd22c`D>t=3o||=_9q(@;+!nIJGDHGms9Y2mF*0x!mn4>?>gFZprULB&0Y(M^Z`Vjy zm-yfi#}L=}kjMa62G%e~pHNqzBol)Gm>D1J8szEd;~C`|1Qw-@^F;g{eO-eC9GzX! z?F+*Q4p;<${i7F_pPAwZ^iwe~+K{3{1&26Fpnw8_s~JQB0TYPe01-gI^#4Bq6zZf9 literal 0 HcmV?d00001 diff --git a/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-hashmap-savepoint/fc90f5f2-5b58-42ac-a127-6c3a9dbba40a b/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-hashmap-savepoint/fc90f5f2-5b58-42ac-a127-6c3a9dbba40a new file mode 100644 index 0000000000000000000000000000000000000000..2bceb5cf93a5e692260525014c33466a66d7b4c0 GIT binary patch literal 1145 zcmeH`!AiqG5Qe8wdJ{Z&=*3&VNDhS@N>dfQgfWciYO=e`P73V{_bCK7DH21) zTQ1_jF3hm=@3-@_05FCS5!_oY6gtc|q+UyH-b13*8*Wj_&QUG8^onaEx+1l%T}dgi z#!~NzQ-jWLtOTJmxHz1*g0o))oA#r~EnGc)g!7|zEr0CEZB<$G4dVqpsl=M1Lzwo{ z9#I6>S%b})7Zkd2Y;*Eno8nk*vBMT(1ecHVNv@->?7$$xt8!?-!=c}ZI`@^9mi-)9gTKLP84b`Agl literal 0 HcmV?d00001 diff --git a/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-checkpoint/077484c0-5e19-436f-bfb0-84f42b476f81 b/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-checkpoint/077484c0-5e19-436f-bfb0-84f42b476f81 new file mode 100644 index 0000000000000000000000000000000000000000..d810f56c44d79e795ac1d960cb401589c77b538b GIT binary patch literal 505 zcmZQzU|?ea0wxCM{GxQd#Dc`+j8wg}oXoszASY8VE3qt5ucWddwX`HNr&zD3G_NEx zH&rjBv>+!nIJGDHGms9Y2mF*0x!mn4>?>gFZprULB&0Y(M^Z`Vjy zm-yfi#}L=}kjMa62G%e~pHNqzBol)Gm>D1J8szEd;~C`|1Qw-@^F;g{eO-eC9GzX! i?F+*Q4p;<${i7F_pPAwZ^iwe~+K{3{1&26tpa1|C;-Pr} literal 0 HcmV?d00001 diff --git a/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-checkpoint/07b4db4d-9266-4bfa-b04a-12ef0d1016dd b/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-checkpoint/07b4db4d-9266-4bfa-b04a-12ef0d1016dd new file mode 100644 index 00000000000000..aa5bb8ea50905a --- /dev/null +++ b/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-checkpoint/07b4db4d-9266-4bfa-b04a-12ef0d1016dd @@ -0,0 +1 @@ +MANIFEST-000005 diff --git a/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-checkpoint/089196b8-e406-4e62-a65c-acef06aafa68 b/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-checkpoint/089196b8-e406-4e62-a65c-acef06aafa68 new file mode 100644 index 00000000000000..00c77db5b298c5 --- /dev/null +++ b/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-checkpoint/089196b8-e406-4e62-a65c-acef06aafa68 @@ -0,0 +1,541 @@ +# This is a RocksDB option file. +# +# For detailed file format spec, please refer to the example file +# in examples/rocksdb_option_file_example.ini +# + +[Version] + rocksdb_version=8.10.0 + options_file_version=1.1 + +[DBOptions] + max_background_flushes=-1 + compaction_readahead_size=2097152 + strict_bytes_per_sync=false + wal_bytes_per_sync=0 + max_open_files=-1 + stats_history_buffer_size=1048576 + max_total_wal_size=0 + stats_persist_period_sec=600 + stats_dump_period_sec=0 + avoid_flush_during_shutdown=true + max_subcompactions=1 + bytes_per_sync=0 + delayed_write_rate=16777216 + max_background_compactions=-1 + max_background_jobs=2 + delete_obsolete_files_period_micros=21600000000 + writable_file_max_buffer_size=1048576 + file_checksum_gen_factory=nullptr + allow_data_in_errors=false + max_bgerror_resume_count=2147483647 + best_efforts_recovery=false + write_dbid_to_manifest=false + atomic_flush=false + manual_wal_flush=false + two_write_queues=false + avoid_flush_during_recovery=false + dump_malloc_stats=false + info_log_level=INFO_LEVEL + write_thread_slow_yield_usec=3 + unordered_write=false + allow_ingest_behind=false + fail_if_options_file_error=true + persist_stats_to_disk=false + WAL_ttl_seconds=0 + bgerror_resume_retry_interval=1000000 + allow_concurrent_memtable_write=true + paranoid_checks=true + WAL_size_limit_MB=0 + lowest_used_cache_tier=kNonVolatileBlockTier + keep_log_file_num=4 + table_cache_numshardbits=6 + max_file_opening_threads=16 + random_access_max_buffer_size=1048576 + log_readahead_size=0 + enable_pipelined_write=false + wal_recovery_mode=kPointInTimeRecovery + db_write_buffer_size=0 + allow_2pc=false + skip_checking_sst_file_sizes_on_db_open=false + skip_stats_update_on_db_open=false + recycle_log_file_num=0 + db_host_id=__hostname__ + track_and_verify_wals_in_manifest=false + use_fsync=false + wal_compression=kNoCompression + compaction_verify_record_count=true + error_if_exists=false + manifest_preallocation_size=4194304 + is_fd_close_on_exec=true + enable_write_thread_adaptive_yield=true + enable_thread_tracking=false + avoid_unnecessary_blocking_io=false + allow_fallocate=true + max_log_file_size=26214400 + advise_random_on_open=true + create_missing_column_families=false + max_write_batch_group_size_bytes=1048576 + use_adaptive_mutex=false + wal_filter=nullptr + create_if_missing=true + enforce_single_del_contracts=true + allow_mmap_writes=false + access_hint_on_compaction_start=NORMAL + verify_sst_unique_id_in_manifest=true + log_file_time_to_roll=0 + use_direct_io_for_flush_and_compaction=false + flush_verify_memtable_count=true + max_manifest_file_size=1073741824 + write_thread_max_yield_usec=100 + use_direct_reads=false + allow_mmap_reads=false + + +[CFOptions "default"] + bottommost_file_compaction_delay=0 + memtable_protection_bytes_per_key=0 + compression_per_level=kSnappyCompression + bottommost_compression=kDisableCompressionOption + sample_for_compression=0 + blob_garbage_collection_age_cutoff=0.250000 + blob_compression_type=kNoCompression + prepopulate_blob_cache=kDisable + blob_compaction_readahead_size=0 + level0_stop_writes_trigger=36 + min_blob_size=0 + last_level_temperature=kUnknown + compaction_options_universal={allow_trivial_move=false;stop_style=kCompactionStopStyleTotalSize;min_merge_width=2;compression_size_percent=-1;max_size_amplification_percent=200;incremental=false;max_merge_width=4294967295;size_ratio=1;} + target_file_size_base=67108864 + ignore_max_compaction_bytes_for_input=true + memtable_whole_key_filtering=false + blob_file_starting_level=0 + soft_pending_compaction_bytes_limit=68719476736 + max_write_buffer_number=2 + ttl=2592000 + compaction_options_fifo={file_temperature_age_thresholds=;allow_compaction=false;age_for_warm=0;max_table_files_size=1073741824;} + check_flush_compaction_key_order=true + memtable_huge_page_size=0 + max_successive_merges=0 + inplace_update_num_locks=10000 + enable_blob_garbage_collection=false + arena_block_size=1048576 + bottommost_compression_opts={use_zstd_dict_trainer=true;enabled=false;zstd_max_train_bytes=0;parallel_threads=1;max_compressed_bytes_per_kb=896;checksum=false;max_dict_bytes=0;strategy=0;max_dict_buffer_bytes=0;level=32767;window_bits=-14;} + target_file_size_multiplier=1 + max_bytes_for_level_multiplier_additional=1:1:1:1:1:1:1 + blob_garbage_collection_force_threshold=1.000000 + enable_blob_files=false + level0_slowdown_writes_trigger=20 + compression=kSnappyCompression + level0_file_num_compaction_trigger=4 + block_protection_bytes_per_key=0 + prefix_extractor=nullptr + max_bytes_for_level_multiplier=10.000000 + write_buffer_size=67108864 + disable_auto_compactions=false + max_compaction_bytes=1677721600 + memtable_max_range_deletions=0 + compression_opts={use_zstd_dict_trainer=true;enabled=false;zstd_max_train_bytes=0;parallel_threads=1;max_compressed_bytes_per_kb=896;checksum=false;max_dict_bytes=0;strategy=0;max_dict_buffer_bytes=0;level=32767;window_bits=-14;} + hard_pending_compaction_bytes_limit=274877906944 + blob_file_size=268435456 + periodic_compaction_seconds=2592000 + paranoid_file_checks=false + experimental_mempurge_threshold=0.000000 + memtable_prefix_bloom_size_ratio=0.000000 + max_bytes_for_level_base=268435456 + max_sequential_skip_in_iterations=8 + report_bg_io_stats=false + sst_partitioner_factory=nullptr + compaction_pri=kMinOverlappingRatio + compaction_style=kCompactionStyleLevel + compaction_filter_factory=nullptr + compaction_filter=nullptr + memtable_factory=SkipListFactory + comparator=leveldb.BytewiseComparator + bloom_locality=0 + min_write_buffer_number_to_merge=1 + table_factory=BlockBasedTable + max_write_buffer_size_to_maintain=0 + max_write_buffer_number_to_maintain=0 + optimize_filters_for_hits=false + default_temperature=kUnknown + preserve_internal_time_seconds=0 + force_consistency_checks=true + merge_operator={id=StringAppendTESTOperator;delimiter=,;} + num_levels=7 + level_compaction_dynamic_file_size=true + memtable_insert_with_hint_prefix_extractor=nullptr + level_compaction_dynamic_level_bytes=false + persist_user_defined_timestamps=true + preclude_last_level_data_seconds=0 + inplace_update_support=false + +[TableOptions/BlockBasedTable "default"] + num_file_reads_for_auto_readahead=2 + metadata_cache_options={unpartitioned_pinning=kFallback;partition_pinning=kFallback;top_level_index_pinning=kFallback;} + read_amp_bytes_per_bit=0 + verify_compression=false + format_version=5 + optimize_filters_for_memory=false + partition_filters=false + detect_filter_construct_corruption=false + initial_auto_readahead_size=8192 + max_auto_readahead_size=262144 + enable_index_compression=true + checksum=kXXH3 + index_block_restart_interval=1 + pin_top_level_index_and_filter=true + block_align=false + block_size=4096 + index_type=kBinarySearch + filter_policy=nullptr + metadata_block_size=4096 + no_block_cache=false + index_shortening=kShortenSeparators + whole_key_filtering=true + block_size_deviation=10 + data_block_index_type=kDataBlockBinarySearch + data_block_hash_table_util_ratio=0.750000 + cache_index_and_filter_blocks=true + prepopulate_block_cache=kDisable + block_restart_interval=16 + pin_l0_filter_and_index_blocks_in_cache=true + cache_index_and_filter_blocks_with_high_priority=true + flush_block_policy_factory=FlushBlockBySizePolicyFactory + + +[CFOptions "_timer_state/processing_timer"] + bottommost_file_compaction_delay=0 + memtable_protection_bytes_per_key=0 + compression_per_level=kSnappyCompression + bottommost_compression=kDisableCompressionOption + sample_for_compression=0 + blob_garbage_collection_age_cutoff=0.250000 + blob_compression_type=kNoCompression + prepopulate_blob_cache=kDisable + blob_compaction_readahead_size=0 + level0_stop_writes_trigger=36 + min_blob_size=0 + last_level_temperature=kUnknown + compaction_options_universal={allow_trivial_move=false;stop_style=kCompactionStopStyleTotalSize;min_merge_width=2;compression_size_percent=-1;max_size_amplification_percent=200;incremental=false;max_merge_width=4294967295;size_ratio=1;} + target_file_size_base=67108864 + ignore_max_compaction_bytes_for_input=true + memtable_whole_key_filtering=false + blob_file_starting_level=0 + soft_pending_compaction_bytes_limit=68719476736 + max_write_buffer_number=2 + ttl=2592000 + compaction_options_fifo={file_temperature_age_thresholds=;allow_compaction=false;age_for_warm=0;max_table_files_size=1073741824;} + check_flush_compaction_key_order=true + memtable_huge_page_size=0 + max_successive_merges=0 + inplace_update_num_locks=10000 + enable_blob_garbage_collection=false + arena_block_size=1048576 + bottommost_compression_opts={use_zstd_dict_trainer=true;enabled=false;zstd_max_train_bytes=0;parallel_threads=1;max_compressed_bytes_per_kb=896;checksum=false;max_dict_bytes=0;strategy=0;max_dict_buffer_bytes=0;level=32767;window_bits=-14;} + target_file_size_multiplier=1 + max_bytes_for_level_multiplier_additional=1:1:1:1:1:1:1 + blob_garbage_collection_force_threshold=1.000000 + enable_blob_files=false + level0_slowdown_writes_trigger=20 + compression=kSnappyCompression + level0_file_num_compaction_trigger=4 + block_protection_bytes_per_key=0 + prefix_extractor=nullptr + max_bytes_for_level_multiplier=10.000000 + write_buffer_size=67108864 + disable_auto_compactions=false + max_compaction_bytes=1677721600 + memtable_max_range_deletions=0 + compression_opts={use_zstd_dict_trainer=true;enabled=false;zstd_max_train_bytes=0;parallel_threads=1;max_compressed_bytes_per_kb=896;checksum=false;max_dict_bytes=0;strategy=0;max_dict_buffer_bytes=0;level=32767;window_bits=-14;} + hard_pending_compaction_bytes_limit=274877906944 + blob_file_size=268435456 + periodic_compaction_seconds=2592000 + paranoid_file_checks=false + experimental_mempurge_threshold=0.000000 + memtable_prefix_bloom_size_ratio=0.000000 + max_bytes_for_level_base=268435456 + max_sequential_skip_in_iterations=8 + report_bg_io_stats=false + sst_partitioner_factory=nullptr + compaction_pri=kMinOverlappingRatio + compaction_style=kCompactionStyleLevel + compaction_filter_factory=nullptr + compaction_filter=nullptr + memtable_factory=SkipListFactory + comparator=leveldb.BytewiseComparator + bloom_locality=0 + min_write_buffer_number_to_merge=1 + table_factory=BlockBasedTable + max_write_buffer_size_to_maintain=0 + max_write_buffer_number_to_maintain=0 + optimize_filters_for_hits=false + default_temperature=kUnknown + preserve_internal_time_seconds=0 + force_consistency_checks=true + merge_operator={id=StringAppendTESTOperator;delimiter=,;} + num_levels=7 + level_compaction_dynamic_file_size=true + memtable_insert_with_hint_prefix_extractor=nullptr + level_compaction_dynamic_level_bytes=false + persist_user_defined_timestamps=true + preclude_last_level_data_seconds=0 + inplace_update_support=false + +[TableOptions/BlockBasedTable "_timer_state/processing_timer"] + num_file_reads_for_auto_readahead=2 + metadata_cache_options={unpartitioned_pinning=kFallback;partition_pinning=kFallback;top_level_index_pinning=kFallback;} + read_amp_bytes_per_bit=0 + verify_compression=false + format_version=5 + optimize_filters_for_memory=false + partition_filters=false + detect_filter_construct_corruption=false + initial_auto_readahead_size=8192 + max_auto_readahead_size=262144 + enable_index_compression=true + checksum=kXXH3 + index_block_restart_interval=1 + pin_top_level_index_and_filter=true + block_align=false + block_size=4096 + index_type=kBinarySearch + filter_policy=nullptr + metadata_block_size=4096 + no_block_cache=false + index_shortening=kShortenSeparators + whole_key_filtering=true + block_size_deviation=10 + data_block_index_type=kDataBlockBinarySearch + data_block_hash_table_util_ratio=0.750000 + cache_index_and_filter_blocks=true + prepopulate_block_cache=kDisable + block_restart_interval=16 + pin_l0_filter_and_index_blocks_in_cache=true + cache_index_and_filter_blocks_with_high_priority=true + flush_block_policy_factory=FlushBlockBySizePolicyFactory + + +[CFOptions "_timer_state/event_timer"] + bottommost_file_compaction_delay=0 + memtable_protection_bytes_per_key=0 + compression_per_level=kSnappyCompression + bottommost_compression=kDisableCompressionOption + sample_for_compression=0 + blob_garbage_collection_age_cutoff=0.250000 + blob_compression_type=kNoCompression + prepopulate_blob_cache=kDisable + blob_compaction_readahead_size=0 + level0_stop_writes_trigger=36 + min_blob_size=0 + last_level_temperature=kUnknown + compaction_options_universal={allow_trivial_move=false;stop_style=kCompactionStopStyleTotalSize;min_merge_width=2;compression_size_percent=-1;max_size_amplification_percent=200;incremental=false;max_merge_width=4294967295;size_ratio=1;} + target_file_size_base=67108864 + ignore_max_compaction_bytes_for_input=true + memtable_whole_key_filtering=false + blob_file_starting_level=0 + soft_pending_compaction_bytes_limit=68719476736 + max_write_buffer_number=2 + ttl=2592000 + compaction_options_fifo={file_temperature_age_thresholds=;allow_compaction=false;age_for_warm=0;max_table_files_size=1073741824;} + check_flush_compaction_key_order=true + memtable_huge_page_size=0 + max_successive_merges=0 + inplace_update_num_locks=10000 + enable_blob_garbage_collection=false + arena_block_size=1048576 + bottommost_compression_opts={use_zstd_dict_trainer=true;enabled=false;zstd_max_train_bytes=0;parallel_threads=1;max_compressed_bytes_per_kb=896;checksum=false;max_dict_bytes=0;strategy=0;max_dict_buffer_bytes=0;level=32767;window_bits=-14;} + target_file_size_multiplier=1 + max_bytes_for_level_multiplier_additional=1:1:1:1:1:1:1 + blob_garbage_collection_force_threshold=1.000000 + enable_blob_files=false + level0_slowdown_writes_trigger=20 + compression=kSnappyCompression + level0_file_num_compaction_trigger=4 + block_protection_bytes_per_key=0 + prefix_extractor=nullptr + max_bytes_for_level_multiplier=10.000000 + write_buffer_size=67108864 + disable_auto_compactions=false + max_compaction_bytes=1677721600 + memtable_max_range_deletions=0 + compression_opts={use_zstd_dict_trainer=true;enabled=false;zstd_max_train_bytes=0;parallel_threads=1;max_compressed_bytes_per_kb=896;checksum=false;max_dict_bytes=0;strategy=0;max_dict_buffer_bytes=0;level=32767;window_bits=-14;} + hard_pending_compaction_bytes_limit=274877906944 + blob_file_size=268435456 + periodic_compaction_seconds=2592000 + paranoid_file_checks=false + experimental_mempurge_threshold=0.000000 + memtable_prefix_bloom_size_ratio=0.000000 + max_bytes_for_level_base=268435456 + max_sequential_skip_in_iterations=8 + report_bg_io_stats=false + sst_partitioner_factory=nullptr + compaction_pri=kMinOverlappingRatio + compaction_style=kCompactionStyleLevel + compaction_filter_factory=nullptr + compaction_filter=nullptr + memtable_factory=SkipListFactory + comparator=leveldb.BytewiseComparator + bloom_locality=0 + min_write_buffer_number_to_merge=1 + table_factory=BlockBasedTable + max_write_buffer_size_to_maintain=0 + max_write_buffer_number_to_maintain=0 + optimize_filters_for_hits=false + default_temperature=kUnknown + preserve_internal_time_seconds=0 + force_consistency_checks=true + merge_operator={id=StringAppendTESTOperator;delimiter=,;} + num_levels=7 + level_compaction_dynamic_file_size=true + memtable_insert_with_hint_prefix_extractor=nullptr + level_compaction_dynamic_level_bytes=false + persist_user_defined_timestamps=true + preclude_last_level_data_seconds=0 + inplace_update_support=false + +[TableOptions/BlockBasedTable "_timer_state/event_timer"] + num_file_reads_for_auto_readahead=2 + metadata_cache_options={unpartitioned_pinning=kFallback;partition_pinning=kFallback;top_level_index_pinning=kFallback;} + read_amp_bytes_per_bit=0 + verify_compression=false + format_version=5 + optimize_filters_for_memory=false + partition_filters=false + detect_filter_construct_corruption=false + initial_auto_readahead_size=8192 + max_auto_readahead_size=262144 + enable_index_compression=true + checksum=kXXH3 + index_block_restart_interval=1 + pin_top_level_index_and_filter=true + block_align=false + block_size=4096 + index_type=kBinarySearch + filter_policy=nullptr + metadata_block_size=4096 + no_block_cache=false + index_shortening=kShortenSeparators + whole_key_filtering=true + block_size_deviation=10 + data_block_index_type=kDataBlockBinarySearch + data_block_hash_table_util_ratio=0.750000 + cache_index_and_filter_blocks=true + prepopulate_block_cache=kDisable + block_restart_interval=16 + pin_l0_filter_and_index_blocks_in_cache=true + cache_index_and_filter_blocks_with_high_priority=true + flush_block_policy_factory=FlushBlockBySizePolicyFactory + + +[CFOptions "state-name"] + bottommost_file_compaction_delay=0 + memtable_protection_bytes_per_key=0 + compression_per_level=kSnappyCompression + bottommost_compression=kDisableCompressionOption + sample_for_compression=0 + blob_garbage_collection_age_cutoff=0.250000 + blob_compression_type=kNoCompression + prepopulate_blob_cache=kDisable + blob_compaction_readahead_size=0 + level0_stop_writes_trigger=36 + min_blob_size=0 + last_level_temperature=kUnknown + compaction_options_universal={allow_trivial_move=false;stop_style=kCompactionStopStyleTotalSize;min_merge_width=2;compression_size_percent=-1;max_size_amplification_percent=200;incremental=false;max_merge_width=4294967295;size_ratio=1;} + target_file_size_base=67108864 + ignore_max_compaction_bytes_for_input=true + memtable_whole_key_filtering=false + blob_file_starting_level=0 + soft_pending_compaction_bytes_limit=68719476736 + max_write_buffer_number=2 + ttl=2592000 + compaction_options_fifo={file_temperature_age_thresholds=;allow_compaction=false;age_for_warm=0;max_table_files_size=1073741824;} + check_flush_compaction_key_order=true + memtable_huge_page_size=0 + max_successive_merges=0 + inplace_update_num_locks=10000 + enable_blob_garbage_collection=false + arena_block_size=1048576 + bottommost_compression_opts={use_zstd_dict_trainer=true;enabled=false;zstd_max_train_bytes=0;parallel_threads=1;max_compressed_bytes_per_kb=896;checksum=false;max_dict_bytes=0;strategy=0;max_dict_buffer_bytes=0;level=32767;window_bits=-14;} + target_file_size_multiplier=1 + max_bytes_for_level_multiplier_additional=1:1:1:1:1:1:1 + blob_garbage_collection_force_threshold=1.000000 + enable_blob_files=false + level0_slowdown_writes_trigger=20 + compression=kSnappyCompression + level0_file_num_compaction_trigger=4 + block_protection_bytes_per_key=0 + prefix_extractor=nullptr + max_bytes_for_level_multiplier=10.000000 + write_buffer_size=67108864 + disable_auto_compactions=false + max_compaction_bytes=1677721600 + memtable_max_range_deletions=0 + compression_opts={use_zstd_dict_trainer=true;enabled=false;zstd_max_train_bytes=0;parallel_threads=1;max_compressed_bytes_per_kb=896;checksum=false;max_dict_bytes=0;strategy=0;max_dict_buffer_bytes=0;level=32767;window_bits=-14;} + hard_pending_compaction_bytes_limit=274877906944 + blob_file_size=268435456 + periodic_compaction_seconds=2592000 + paranoid_file_checks=false + experimental_mempurge_threshold=0.000000 + memtable_prefix_bloom_size_ratio=0.000000 + max_bytes_for_level_base=268435456 + max_sequential_skip_in_iterations=8 + report_bg_io_stats=false + sst_partitioner_factory=nullptr + compaction_pri=kMinOverlappingRatio + compaction_style=kCompactionStyleLevel + compaction_filter_factory=nullptr + compaction_filter=nullptr + memtable_factory=SkipListFactory + comparator=leveldb.BytewiseComparator + bloom_locality=0 + min_write_buffer_number_to_merge=1 + table_factory=BlockBasedTable + max_write_buffer_size_to_maintain=0 + max_write_buffer_number_to_maintain=0 + optimize_filters_for_hits=false + default_temperature=kUnknown + preserve_internal_time_seconds=0 + force_consistency_checks=true + merge_operator={id=StringAppendTESTOperator;delimiter=,;} + num_levels=7 + level_compaction_dynamic_file_size=true + memtable_insert_with_hint_prefix_extractor=nullptr + level_compaction_dynamic_level_bytes=false + persist_user_defined_timestamps=true + preclude_last_level_data_seconds=0 + inplace_update_support=false + +[TableOptions/BlockBasedTable "state-name"] + num_file_reads_for_auto_readahead=2 + metadata_cache_options={unpartitioned_pinning=kFallback;partition_pinning=kFallback;top_level_index_pinning=kFallback;} + read_amp_bytes_per_bit=0 + verify_compression=false + format_version=5 + optimize_filters_for_memory=false + partition_filters=false + detect_filter_construct_corruption=false + initial_auto_readahead_size=8192 + max_auto_readahead_size=262144 + enable_index_compression=true + checksum=kXXH3 + index_block_restart_interval=1 + pin_top_level_index_and_filter=true + block_align=false + block_size=4096 + index_type=kBinarySearch + filter_policy=nullptr + metadata_block_size=4096 + no_block_cache=false + index_shortening=kShortenSeparators + whole_key_filtering=true + block_size_deviation=10 + data_block_index_type=kDataBlockBinarySearch + data_block_hash_table_util_ratio=0.750000 + cache_index_and_filter_blocks=true + prepopulate_block_cache=kDisable + block_restart_interval=16 + pin_l0_filter_and_index_blocks_in_cache=true + cache_index_and_filter_blocks_with_high_priority=true + flush_block_policy_factory=FlushBlockBySizePolicyFactory + diff --git a/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-checkpoint/0b46e588-c8f8-407e-9551-44c624b3576c b/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-checkpoint/0b46e588-c8f8-407e-9551-44c624b3576c new file mode 100644 index 0000000000000000000000000000000000000000..667ac8709a9d3de2e034e1259e5746e22c16f82d GIT binary patch literal 1414 zcmeH{K}*9h6vy8-^&kiycJSg&yczKuSY{5xDrK$8yp(5ocF{HoNjA_g?57Y+Go+Rc zZ@q|t1oFuH=a={R2LSfKk0DHyDH&=k7Q~(_Az%GQuoqk*b8niKPE?kerF5bumMwKf zDH(y4cqfxe)OMkq7aGCA$4(GD{Y9`zUyEG8_~Fx^AB34~%_&q}EBOQC2`#Z$$+AT_ z>25njBRI|*Y?E7uj?T4F1z9U(xefPd{zk4_-WzSW|Fb@ZL3_ l^Q%0~qKxO+JmIh#+!!pl-I)Erjc=nHo+i;`<0I(hzAqoB%1i(N literal 0 HcmV?d00001 diff --git a/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-checkpoint/0db591bd-5a43-4c20-beed-57d95e0335ca b/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-checkpoint/0db591bd-5a43-4c20-beed-57d95e0335ca new file mode 100644 index 0000000000000000000000000000000000000000..667ac8709a9d3de2e034e1259e5746e22c16f82d GIT binary patch literal 1414 zcmeH{K}*9h6vy8-^&kiycJSg&yczKuSY{5xDrK$8yp(5ocF{HoNjA_g?57Y+Go+Rc zZ@q|t1oFuH=a={R2LSfKk0DHyDH&=k7Q~(_Az%GQuoqk*b8niKPE?kerF5bumMwKf zDH(y4cqfxe)OMkq7aGCA$4(GD{Y9`zUyEG8_~Fx^AB34~%_&q}EBOQC2`#Z$$+AT_ z>25njBRI|*Y?E7uj?T4F1z9U(xefPd{zk4_-WzSW|Fb@ZL3_ l^Q%0~qKxO+JmIh#+!!pl-I)Erjc=nHo+i;`<0I(hzAqoB%1i(N literal 0 HcmV?d00001 diff --git a/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-checkpoint/0e7f5ab5-f1ca-4ffc-8210-d1cd323daaec b/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-checkpoint/0e7f5ab5-f1ca-4ffc-8210-d1cd323daaec new file mode 100644 index 0000000000000000000000000000000000000000..310ba6cd200ce4ea7731a87cb42a664205f469e6 GIT binary patch literal 1123 zcmah|%We}f6dm_LCMBdTp$IAgL4pk;CTaSJRCQ5aJ1C+EC>0uc;ybBT#~#^EldysX z5-efIiZx%r2EGBoC%~EwAR!h=Tu;(eED*D?=lGucJU2KSj6V*@>nDYeUxUFnwttfG z;SCSsuV=p9{T-bAr+skI8)cSb@3&tC=O&D9?phwxSmK4o%mSy5#S*Ac9D3CCQ}CSm z8Il@EM2{vyIxs@Ds`Dk%-O*^e3;hGQ7S52SmYueu32O`4r-GB?6Q>kwL*zsoOk^E% za4E&uU@dwYz*FITJ7tDBZ6xf0#H=p&9dw0-D|-K>kUL~NNvlo8(zIU+Uyw+r4guT6 zlyx_Xg|lmw+TvXP&Q-Q2xUJk^&C6QvR&E(habQf&&K$FYc8pAK z+<&lsYina^YwP-h`t91ydyS2)Vs26^>YM-V`>#)j!aU*3F>1vlsO1k6kl=9cI7SkpAiqIiR!dzR#PTqOA0xH-8KU7S|kI_MnfbhOcQk5f(nL(Ogce0J*g!JY`IT& z)Tw-l7|{}nNiT4q7$yc&4CivgZGaxmyNNkauW!|nGIeHZcFbq)`V<#If`7K#55odR z?PmUc{bvhP!}|SS5Y7_Egrv9|#!;Ol7F_LMTTj0f!O`*kZN=5`{;|64H@T6~mv_Ba Z6VJnP?YxKn^G)LW&ksMIzFq(P><@D?Ti^fy literal 0 HcmV?d00001 diff --git a/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-checkpoint/10a90885-081e-495b-a4bb-581bfc15f5b3 b/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-checkpoint/10a90885-081e-495b-a4bb-581bfc15f5b3 new file mode 100644 index 0000000000000000000000000000000000000000..d810f56c44d79e795ac1d960cb401589c77b538b GIT binary patch literal 505 zcmZQzU|?ea0wxCM{GxQd#Dc`+j8wg}oXoszASY8VE3qt5ucWddwX`HNr&zD3G_NEx zH&rjBv>+!nIJGDHGms9Y2mF*0x!mn4>?>gFZprULB&0Y(M^Z`Vjy zm-yfi#}L=}kjMa62G%e~pHNqzBol)Gm>D1J8szEd;~C`|1Qw-@^F;g{eO-eC9GzX! i?F+*Q4p;<${i7F_pPAwZ^iwe~+K{3{1&26tpa1|C;-Pr} literal 0 HcmV?d00001 diff --git a/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-checkpoint/141372b9-6605-477b-abcb-38f68b761350 b/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-checkpoint/141372b9-6605-477b-abcb-38f68b761350 new file mode 100644 index 00000000000000..6fa414733aae57 --- /dev/null +++ b/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-checkpoint/141372b9-6605-477b-abcb-38f68b761350 @@ -0,0 +1,317 @@ +# This is a RocksDB option file. +# +# For detailed file format spec, please refer to the example file +# in examples/rocksdb_option_file_example.ini +# + +[Version] + rocksdb_version=8.10.0 + options_file_version=1.1 + +[DBOptions] + max_background_flushes=-1 + compaction_readahead_size=2097152 + strict_bytes_per_sync=false + wal_bytes_per_sync=0 + max_open_files=-1 + stats_history_buffer_size=1048576 + max_total_wal_size=0 + stats_persist_period_sec=600 + stats_dump_period_sec=0 + avoid_flush_during_shutdown=true + max_subcompactions=1 + bytes_per_sync=0 + delayed_write_rate=16777216 + max_background_compactions=-1 + max_background_jobs=2 + delete_obsolete_files_period_micros=21600000000 + writable_file_max_buffer_size=1048576 + file_checksum_gen_factory=nullptr + allow_data_in_errors=false + max_bgerror_resume_count=2147483647 + best_efforts_recovery=false + write_dbid_to_manifest=false + atomic_flush=false + manual_wal_flush=false + two_write_queues=false + avoid_flush_during_recovery=false + dump_malloc_stats=false + info_log_level=INFO_LEVEL + write_thread_slow_yield_usec=3 + unordered_write=false + allow_ingest_behind=false + fail_if_options_file_error=true + persist_stats_to_disk=false + WAL_ttl_seconds=0 + bgerror_resume_retry_interval=1000000 + allow_concurrent_memtable_write=true + paranoid_checks=true + WAL_size_limit_MB=0 + lowest_used_cache_tier=kNonVolatileBlockTier + keep_log_file_num=4 + table_cache_numshardbits=6 + max_file_opening_threads=16 + random_access_max_buffer_size=1048576 + log_readahead_size=0 + enable_pipelined_write=false + wal_recovery_mode=kPointInTimeRecovery + db_write_buffer_size=0 + allow_2pc=false + skip_checking_sst_file_sizes_on_db_open=false + skip_stats_update_on_db_open=false + recycle_log_file_num=0 + db_host_id=__hostname__ + track_and_verify_wals_in_manifest=false + use_fsync=false + wal_compression=kNoCompression + compaction_verify_record_count=true + error_if_exists=false + manifest_preallocation_size=4194304 + is_fd_close_on_exec=true + enable_write_thread_adaptive_yield=true + enable_thread_tracking=false + avoid_unnecessary_blocking_io=false + allow_fallocate=true + max_log_file_size=26214400 + advise_random_on_open=true + create_missing_column_families=false + max_write_batch_group_size_bytes=1048576 + use_adaptive_mutex=false + wal_filter=nullptr + create_if_missing=true + enforce_single_del_contracts=true + allow_mmap_writes=false + access_hint_on_compaction_start=NORMAL + verify_sst_unique_id_in_manifest=true + log_file_time_to_roll=0 + use_direct_io_for_flush_and_compaction=false + flush_verify_memtable_count=true + max_manifest_file_size=1073741824 + write_thread_max_yield_usec=100 + use_direct_reads=false + allow_mmap_reads=false + + +[CFOptions "default"] + bottommost_file_compaction_delay=0 + memtable_protection_bytes_per_key=0 + compression_per_level=kSnappyCompression + bottommost_compression=kDisableCompressionOption + sample_for_compression=0 + blob_garbage_collection_age_cutoff=0.250000 + blob_compression_type=kNoCompression + prepopulate_blob_cache=kDisable + blob_compaction_readahead_size=0 + level0_stop_writes_trigger=36 + min_blob_size=0 + last_level_temperature=kUnknown + compaction_options_universal={allow_trivial_move=false;stop_style=kCompactionStopStyleTotalSize;min_merge_width=2;compression_size_percent=-1;max_size_amplification_percent=200;incremental=false;max_merge_width=4294967295;size_ratio=1;} + target_file_size_base=67108864 + ignore_max_compaction_bytes_for_input=true + memtable_whole_key_filtering=false + blob_file_starting_level=0 + soft_pending_compaction_bytes_limit=68719476736 + max_write_buffer_number=2 + ttl=2592000 + compaction_options_fifo={file_temperature_age_thresholds=;allow_compaction=false;age_for_warm=0;max_table_files_size=1073741824;} + check_flush_compaction_key_order=true + memtable_huge_page_size=0 + max_successive_merges=0 + inplace_update_num_locks=10000 + enable_blob_garbage_collection=false + arena_block_size=1048576 + bottommost_compression_opts={use_zstd_dict_trainer=true;enabled=false;zstd_max_train_bytes=0;parallel_threads=1;max_compressed_bytes_per_kb=896;checksum=false;max_dict_bytes=0;strategy=0;max_dict_buffer_bytes=0;level=32767;window_bits=-14;} + target_file_size_multiplier=1 + max_bytes_for_level_multiplier_additional=1:1:1:1:1:1:1 + blob_garbage_collection_force_threshold=1.000000 + enable_blob_files=false + level0_slowdown_writes_trigger=20 + compression=kSnappyCompression + level0_file_num_compaction_trigger=4 + block_protection_bytes_per_key=0 + prefix_extractor=nullptr + max_bytes_for_level_multiplier=10.000000 + write_buffer_size=67108864 + disable_auto_compactions=false + max_compaction_bytes=1677721600 + memtable_max_range_deletions=0 + compression_opts={use_zstd_dict_trainer=true;enabled=false;zstd_max_train_bytes=0;parallel_threads=1;max_compressed_bytes_per_kb=896;checksum=false;max_dict_bytes=0;strategy=0;max_dict_buffer_bytes=0;level=32767;window_bits=-14;} + hard_pending_compaction_bytes_limit=274877906944 + blob_file_size=268435456 + periodic_compaction_seconds=2592000 + paranoid_file_checks=false + experimental_mempurge_threshold=0.000000 + memtable_prefix_bloom_size_ratio=0.000000 + max_bytes_for_level_base=268435456 + max_sequential_skip_in_iterations=8 + report_bg_io_stats=false + sst_partitioner_factory=nullptr + compaction_pri=kMinOverlappingRatio + compaction_style=kCompactionStyleLevel + compaction_filter_factory=nullptr + compaction_filter=nullptr + memtable_factory=SkipListFactory + comparator=leveldb.BytewiseComparator + bloom_locality=0 + min_write_buffer_number_to_merge=1 + table_factory=BlockBasedTable + max_write_buffer_size_to_maintain=0 + max_write_buffer_number_to_maintain=0 + optimize_filters_for_hits=false + default_temperature=kUnknown + preserve_internal_time_seconds=0 + force_consistency_checks=true + merge_operator={id=StringAppendTESTOperator;delimiter=,;} + num_levels=7 + level_compaction_dynamic_file_size=true + memtable_insert_with_hint_prefix_extractor=nullptr + level_compaction_dynamic_level_bytes=false + persist_user_defined_timestamps=true + preclude_last_level_data_seconds=0 + inplace_update_support=false + +[TableOptions/BlockBasedTable "default"] + num_file_reads_for_auto_readahead=2 + metadata_cache_options={unpartitioned_pinning=kFallback;partition_pinning=kFallback;top_level_index_pinning=kFallback;} + read_amp_bytes_per_bit=0 + verify_compression=false + format_version=5 + optimize_filters_for_memory=false + partition_filters=false + detect_filter_construct_corruption=false + initial_auto_readahead_size=8192 + max_auto_readahead_size=262144 + enable_index_compression=true + checksum=kXXH3 + index_block_restart_interval=1 + pin_top_level_index_and_filter=true + block_align=false + block_size=4096 + index_type=kBinarySearch + filter_policy=nullptr + metadata_block_size=4096 + no_block_cache=false + index_shortening=kShortenSeparators + whole_key_filtering=true + block_size_deviation=10 + data_block_index_type=kDataBlockBinarySearch + data_block_hash_table_util_ratio=0.750000 + cache_index_and_filter_blocks=true + prepopulate_block_cache=kDisable + block_restart_interval=16 + pin_l0_filter_and_index_blocks_in_cache=true + cache_index_and_filter_blocks_with_high_priority=true + flush_block_policy_factory=FlushBlockBySizePolicyFactory + + +[CFOptions "state-name"] + bottommost_file_compaction_delay=0 + memtable_protection_bytes_per_key=0 + compression_per_level=kSnappyCompression + bottommost_compression=kDisableCompressionOption + sample_for_compression=0 + blob_garbage_collection_age_cutoff=0.250000 + blob_compression_type=kNoCompression + prepopulate_blob_cache=kDisable + blob_compaction_readahead_size=0 + level0_stop_writes_trigger=36 + min_blob_size=0 + last_level_temperature=kUnknown + compaction_options_universal={allow_trivial_move=false;stop_style=kCompactionStopStyleTotalSize;min_merge_width=2;compression_size_percent=-1;max_size_amplification_percent=200;incremental=false;max_merge_width=4294967295;size_ratio=1;} + target_file_size_base=67108864 + ignore_max_compaction_bytes_for_input=true + memtable_whole_key_filtering=false + blob_file_starting_level=0 + soft_pending_compaction_bytes_limit=68719476736 + max_write_buffer_number=2 + ttl=2592000 + compaction_options_fifo={file_temperature_age_thresholds=;allow_compaction=false;age_for_warm=0;max_table_files_size=1073741824;} + check_flush_compaction_key_order=true + memtable_huge_page_size=0 + max_successive_merges=0 + inplace_update_num_locks=10000 + enable_blob_garbage_collection=false + arena_block_size=1048576 + bottommost_compression_opts={use_zstd_dict_trainer=true;enabled=false;zstd_max_train_bytes=0;parallel_threads=1;max_compressed_bytes_per_kb=896;checksum=false;max_dict_bytes=0;strategy=0;max_dict_buffer_bytes=0;level=32767;window_bits=-14;} + target_file_size_multiplier=1 + max_bytes_for_level_multiplier_additional=1:1:1:1:1:1:1 + blob_garbage_collection_force_threshold=1.000000 + enable_blob_files=false + level0_slowdown_writes_trigger=20 + compression=kSnappyCompression + level0_file_num_compaction_trigger=4 + block_protection_bytes_per_key=0 + prefix_extractor=nullptr + max_bytes_for_level_multiplier=10.000000 + write_buffer_size=67108864 + disable_auto_compactions=false + max_compaction_bytes=1677721600 + memtable_max_range_deletions=0 + compression_opts={use_zstd_dict_trainer=true;enabled=false;zstd_max_train_bytes=0;parallel_threads=1;max_compressed_bytes_per_kb=896;checksum=false;max_dict_bytes=0;strategy=0;max_dict_buffer_bytes=0;level=32767;window_bits=-14;} + hard_pending_compaction_bytes_limit=274877906944 + blob_file_size=268435456 + periodic_compaction_seconds=2592000 + paranoid_file_checks=false + experimental_mempurge_threshold=0.000000 + memtable_prefix_bloom_size_ratio=0.000000 + max_bytes_for_level_base=268435456 + max_sequential_skip_in_iterations=8 + report_bg_io_stats=false + sst_partitioner_factory=nullptr + compaction_pri=kMinOverlappingRatio + compaction_style=kCompactionStyleLevel + compaction_filter_factory=nullptr + compaction_filter=nullptr + memtable_factory=SkipListFactory + comparator=leveldb.BytewiseComparator + bloom_locality=0 + min_write_buffer_number_to_merge=1 + table_factory=BlockBasedTable + max_write_buffer_size_to_maintain=0 + max_write_buffer_number_to_maintain=0 + optimize_filters_for_hits=false + default_temperature=kUnknown + preserve_internal_time_seconds=0 + force_consistency_checks=true + merge_operator={id=StringAppendTESTOperator;delimiter=,;} + num_levels=7 + level_compaction_dynamic_file_size=true + memtable_insert_with_hint_prefix_extractor=nullptr + level_compaction_dynamic_level_bytes=false + persist_user_defined_timestamps=true + preclude_last_level_data_seconds=0 + inplace_update_support=false + +[TableOptions/BlockBasedTable "state-name"] + num_file_reads_for_auto_readahead=2 + metadata_cache_options={unpartitioned_pinning=kFallback;partition_pinning=kFallback;top_level_index_pinning=kFallback;} + read_amp_bytes_per_bit=0 + verify_compression=false + format_version=5 + optimize_filters_for_memory=false + partition_filters=false + detect_filter_construct_corruption=false + initial_auto_readahead_size=8192 + max_auto_readahead_size=262144 + enable_index_compression=true + checksum=kXXH3 + index_block_restart_interval=1 + pin_top_level_index_and_filter=true + block_align=false + block_size=4096 + index_type=kBinarySearch + filter_policy=nullptr + metadata_block_size=4096 + no_block_cache=false + index_shortening=kShortenSeparators + whole_key_filtering=true + block_size_deviation=10 + data_block_index_type=kDataBlockBinarySearch + data_block_hash_table_util_ratio=0.750000 + cache_index_and_filter_blocks=true + prepopulate_block_cache=kDisable + block_restart_interval=16 + pin_l0_filter_and_index_blocks_in_cache=true + cache_index_and_filter_blocks_with_high_priority=true + flush_block_policy_factory=FlushBlockBySizePolicyFactory + diff --git a/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-checkpoint/1867edd7-fea1-47ca-aa9b-0efa10336f4d b/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-checkpoint/1867edd7-fea1-47ca-aa9b-0efa10336f4d new file mode 100644 index 0000000000000000000000000000000000000000..480e5ab0207e7dc5d6d30353bfd3c50bdb48728b GIT binary patch literal 1084 zcmah|y>Amq6yFIBUN6S6V-j(paS;g#Wk+^Ca3D$%?yCYKf&_s(S+hHDol$0IRx{(+ zM!NDOTAKS8uArpg&p7FH#nrS|oCHXSjyIdcxvQ9BcjouL-}}A0&0sN{3tFT?NGqz5 zYhe_UfPB;G26)K%hy3*N)vX|!^KU$e-#q&V!E5;CpJ26Obb4%gLKBG>nlKBTI+jSF zLUEW-H!Z;1tTahsAQKas3F*KHHSDgm$@oa4>M=|&;9l4ysg|Q$(TwFnPO0Ezxe_Us zgLTY7>~B%Hk{8S{r;UUYkeI@~se`ew@U1?V)T@^bSSz$TP^>7X?eG;D=)xgj$C#fU z4-(<*Zrt14>6C7EH`e>N`#T-$&@~LFyWO2m&L#scQa4C2fc3}=>-fOKs3p_|4$4=~ z|8F$PGB6i9BMXDlzI0hS0JGcM>D1b*2AIRfP%K7pP)@k%)^^stv$?qu!$u16<`!(n ztiPVb{o9h|m`%j~J0^Kw`toH<6VcmZp*D+DAs95T+#2I1m7 zjuU8FX8vERD_G>J4&A(7_oJ)E5Z49YTy@p`=a_F3fAmk&PvDXPv6G zi4jAgnDlH0ieVBkQMgn+qdrV<-YMolJ%!as%EFnbHRm&TQ;MvY;Kla&&tV;-j!XZ( z{?&SPR=>V`i2+t5w*^S;mf`P7XDS&U{#g_2UGTq7k) z=c`>(Jf-lZ;eG$^<>-2iG|&8QkP=y*TL1p%<0rB_Yfb;iiG(Ez4=mvh1oJ#mz@!#1 zW`2@G;4C$0ZXuOpmP+NpN}YEq8DKFlKLD69Xc03 zlZI&u_S|RapjYsVkVOEn+iP3xN^98y_c$1a%}4>-OF!vAUu;5WBkpXjcH>(~cQxi| zw;PMiWIf$XH*T+Yd2{~Sp>cl7xyO&CaPcGFzhlf%yk`x=?Qqp>Ty`hpn7Tgt{prr$ z!S4FO!Gotae_Q+YNq4VPFV7jxyv*S1w|_rgh$>WY&zX}iV5M@Af&!0A#+^A5U7Evn z0_zu*pR&FM*2Re8mJ1T8*6H|!!4&9$KO~iTYHY?mI|dupL!vA6L@z-K(lMNp4Jl}S zmWIT?)UVQGu7)Tp#{?*>2Xx;E5HzaO4D0}y$-#0h9BIv5Ls{(mAhMl22Q41o-+#Ot z%!o$|R1Y&&^i-(U(OQ|}w5@1{3Tg(1X%euF=t}ui`Y^_Q_pt^RB&>%@<=$4CrBJz_FjT#QV0O=*M>WhkD&mL! z7i-ni{=;7sHL2%PF}x4fGn1wc{L0zYByYa&z9W}r&aP%|i}={x!`J1h)7vk-zh*y| X+bfF!`k!YG?LR(z|Ksh>=Rf}gQs`0K literal 0 HcmV?d00001 diff --git a/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-checkpoint/21ec736f-8eb6-465d-8211-7493e1f68aae b/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-checkpoint/21ec736f-8eb6-465d-8211-7493e1f68aae new file mode 100644 index 00000000000000..aa5bb8ea50905a --- /dev/null +++ b/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-checkpoint/21ec736f-8eb6-465d-8211-7493e1f68aae @@ -0,0 +1 @@ +MANIFEST-000005 diff --git a/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-checkpoint/29779921-ddc6-4961-92cd-76658b8cb36b b/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-checkpoint/29779921-ddc6-4961-92cd-76658b8cb36b new file mode 100644 index 0000000000000000000000000000000000000000..078ddf0b33708e5cb0a114da752beb81eafae9cd GIT binary patch literal 1110 zcmah}Pj3@P6rV{PylWQ6#sr1*VkCN?lBa}Ca8MMfNdc(`AgYldRMl#B=dCl!cxN>; zj&1Hpz4jAuq2k23Cq6^feuMH6pjB0=hrU@SMm=>-v%h)2_xJbqs}{LVmPklRBdlMe zHM$%|QL9a8*tkb1T_KA@@kalA`EKj;h+I2o)CgS*y389@?{9y9bCcYt8J(S2k+M|b zg{9nrV2-B>m@EWLnVXg1IU6ln8p!38KUn9#w@!9-g4TA#l}^$P~9 zmAV)dyewy(;76M1(jj0cn5~{9sdRR)x4E_3t=#OzxBGYcyIt$hH4JBaw|2WDK23zo zT#{k{>ya1MiNwQbC5ulu6uuAQzoc=VV*v~9*g{hAE0>i6FngQ3-LP}R0C(6XhQ&yM zrAjx8`>@lGQ|O5_zuVi2bKXm{JN@2{fbDGiZqCzuyM1Z>SX;N?+~cQG*xo~)9cX>h zJ2aZ%thj2ouGo1y7N!rMJ>Ne(dc1vf^x%2??dGGWJBM+zzM>1}`~KnM-@jc5LMpi9 z%*q!KhZiX*a5!?Dpe4cO6&xEM2`^D?M%=Me zFn&BFSfg|GcwtD(uuH~=pv@Zffxl>8rKentQDl}0P?!%CnHC^u(4?r4AuwHn;f1iI zv%HS77&tGv{j!8YJh?x3^4LEk9<0)0JYrQ%m4+>i>J+N#}A+&JYr9k+HBbS%Y q7qv8%f2?lsy1p>_=GVbbwSVf}_%jdv&+)&Czkd1S<U3aa{KCu= z#lpbI#K6MvM@Q`^8v`RJ12Y>7gWTUAht2S7XJTRIU|~4H$as>GtGFbwBvm&rF*g-t zsM_MvZ`nXYS%7A7voNMJaBbueVrGB`9%(av)QD%g-p&_CY1*(^|-g$rn3`+S5IMa0r#UOO^upP zG|Tuzss)pR-YDJHd;+nT6R@%K+{1f0#s=rm(-N*lo0FVd?u}J&1`4w}Sa_I82Y1aI zOTDsg1Ig$k&GUTGj=ra{$vpyYhAEp_oJjBXy8Xd!r*N~keP=Wr?RK0;*Dzk}^>#ZG zK97Y=eVkwb7mz2;i#Wh|OX>?8bZCb7FKL=(SjCDvbr2W)!e!wA>|TGjQ*Ccq;2tYv zSd0{)z4VJAPm=9^f2TW2)2ut_4M*LbjDOG_q`hP`ND^@;8?>(6JTcC%IQRIO6s~)p zrw7KIb`Py#I54hS&1-Jij@8xspFiF|Jbv*0@$n~*w?FHD`e^5H(5RG+W}*3izWV#O z^{7e(_nbNT1cuei6cl)zJC4zj=xP}!3@j}&KWDuPtjiI_!51V_YtZ?U!4&ARKOxmC z)Yu94>GI=+la1L&bI;PIPVm5U_sw{ zs#NZ6t+f_1_X~!Lpdgst7hgtoj5;g)hx!ldwe$MJABkGjbEz2ahV{&3nFBvuZR?=< wZjW5O^k!Reb%KAa?yDavt4se}d;N3iS=1T69iaa?WwgKk<*)C4+JE`25njBRI|*Y?E7uj?T4F1z9U(xefPd{zk4_-WzSW|Fb@ZL3_ l^Q%0~qKxO+JmIh#+!!pl-I)Erjc=nHo+i;`<0I(hzAqoB%1i(N literal 0 HcmV?d00001 diff --git a/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-checkpoint/3cd5632d-9b87-4837-91bf-7144ff50475e b/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-checkpoint/3cd5632d-9b87-4837-91bf-7144ff50475e new file mode 100644 index 00000000000000..6fa414733aae57 --- /dev/null +++ b/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-checkpoint/3cd5632d-9b87-4837-91bf-7144ff50475e @@ -0,0 +1,317 @@ +# This is a RocksDB option file. +# +# For detailed file format spec, please refer to the example file +# in examples/rocksdb_option_file_example.ini +# + +[Version] + rocksdb_version=8.10.0 + options_file_version=1.1 + +[DBOptions] + max_background_flushes=-1 + compaction_readahead_size=2097152 + strict_bytes_per_sync=false + wal_bytes_per_sync=0 + max_open_files=-1 + stats_history_buffer_size=1048576 + max_total_wal_size=0 + stats_persist_period_sec=600 + stats_dump_period_sec=0 + avoid_flush_during_shutdown=true + max_subcompactions=1 + bytes_per_sync=0 + delayed_write_rate=16777216 + max_background_compactions=-1 + max_background_jobs=2 + delete_obsolete_files_period_micros=21600000000 + writable_file_max_buffer_size=1048576 + file_checksum_gen_factory=nullptr + allow_data_in_errors=false + max_bgerror_resume_count=2147483647 + best_efforts_recovery=false + write_dbid_to_manifest=false + atomic_flush=false + manual_wal_flush=false + two_write_queues=false + avoid_flush_during_recovery=false + dump_malloc_stats=false + info_log_level=INFO_LEVEL + write_thread_slow_yield_usec=3 + unordered_write=false + allow_ingest_behind=false + fail_if_options_file_error=true + persist_stats_to_disk=false + WAL_ttl_seconds=0 + bgerror_resume_retry_interval=1000000 + allow_concurrent_memtable_write=true + paranoid_checks=true + WAL_size_limit_MB=0 + lowest_used_cache_tier=kNonVolatileBlockTier + keep_log_file_num=4 + table_cache_numshardbits=6 + max_file_opening_threads=16 + random_access_max_buffer_size=1048576 + log_readahead_size=0 + enable_pipelined_write=false + wal_recovery_mode=kPointInTimeRecovery + db_write_buffer_size=0 + allow_2pc=false + skip_checking_sst_file_sizes_on_db_open=false + skip_stats_update_on_db_open=false + recycle_log_file_num=0 + db_host_id=__hostname__ + track_and_verify_wals_in_manifest=false + use_fsync=false + wal_compression=kNoCompression + compaction_verify_record_count=true + error_if_exists=false + manifest_preallocation_size=4194304 + is_fd_close_on_exec=true + enable_write_thread_adaptive_yield=true + enable_thread_tracking=false + avoid_unnecessary_blocking_io=false + allow_fallocate=true + max_log_file_size=26214400 + advise_random_on_open=true + create_missing_column_families=false + max_write_batch_group_size_bytes=1048576 + use_adaptive_mutex=false + wal_filter=nullptr + create_if_missing=true + enforce_single_del_contracts=true + allow_mmap_writes=false + access_hint_on_compaction_start=NORMAL + verify_sst_unique_id_in_manifest=true + log_file_time_to_roll=0 + use_direct_io_for_flush_and_compaction=false + flush_verify_memtable_count=true + max_manifest_file_size=1073741824 + write_thread_max_yield_usec=100 + use_direct_reads=false + allow_mmap_reads=false + + +[CFOptions "default"] + bottommost_file_compaction_delay=0 + memtable_protection_bytes_per_key=0 + compression_per_level=kSnappyCompression + bottommost_compression=kDisableCompressionOption + sample_for_compression=0 + blob_garbage_collection_age_cutoff=0.250000 + blob_compression_type=kNoCompression + prepopulate_blob_cache=kDisable + blob_compaction_readahead_size=0 + level0_stop_writes_trigger=36 + min_blob_size=0 + last_level_temperature=kUnknown + compaction_options_universal={allow_trivial_move=false;stop_style=kCompactionStopStyleTotalSize;min_merge_width=2;compression_size_percent=-1;max_size_amplification_percent=200;incremental=false;max_merge_width=4294967295;size_ratio=1;} + target_file_size_base=67108864 + ignore_max_compaction_bytes_for_input=true + memtable_whole_key_filtering=false + blob_file_starting_level=0 + soft_pending_compaction_bytes_limit=68719476736 + max_write_buffer_number=2 + ttl=2592000 + compaction_options_fifo={file_temperature_age_thresholds=;allow_compaction=false;age_for_warm=0;max_table_files_size=1073741824;} + check_flush_compaction_key_order=true + memtable_huge_page_size=0 + max_successive_merges=0 + inplace_update_num_locks=10000 + enable_blob_garbage_collection=false + arena_block_size=1048576 + bottommost_compression_opts={use_zstd_dict_trainer=true;enabled=false;zstd_max_train_bytes=0;parallel_threads=1;max_compressed_bytes_per_kb=896;checksum=false;max_dict_bytes=0;strategy=0;max_dict_buffer_bytes=0;level=32767;window_bits=-14;} + target_file_size_multiplier=1 + max_bytes_for_level_multiplier_additional=1:1:1:1:1:1:1 + blob_garbage_collection_force_threshold=1.000000 + enable_blob_files=false + level0_slowdown_writes_trigger=20 + compression=kSnappyCompression + level0_file_num_compaction_trigger=4 + block_protection_bytes_per_key=0 + prefix_extractor=nullptr + max_bytes_for_level_multiplier=10.000000 + write_buffer_size=67108864 + disable_auto_compactions=false + max_compaction_bytes=1677721600 + memtable_max_range_deletions=0 + compression_opts={use_zstd_dict_trainer=true;enabled=false;zstd_max_train_bytes=0;parallel_threads=1;max_compressed_bytes_per_kb=896;checksum=false;max_dict_bytes=0;strategy=0;max_dict_buffer_bytes=0;level=32767;window_bits=-14;} + hard_pending_compaction_bytes_limit=274877906944 + blob_file_size=268435456 + periodic_compaction_seconds=2592000 + paranoid_file_checks=false + experimental_mempurge_threshold=0.000000 + memtable_prefix_bloom_size_ratio=0.000000 + max_bytes_for_level_base=268435456 + max_sequential_skip_in_iterations=8 + report_bg_io_stats=false + sst_partitioner_factory=nullptr + compaction_pri=kMinOverlappingRatio + compaction_style=kCompactionStyleLevel + compaction_filter_factory=nullptr + compaction_filter=nullptr + memtable_factory=SkipListFactory + comparator=leveldb.BytewiseComparator + bloom_locality=0 + min_write_buffer_number_to_merge=1 + table_factory=BlockBasedTable + max_write_buffer_size_to_maintain=0 + max_write_buffer_number_to_maintain=0 + optimize_filters_for_hits=false + default_temperature=kUnknown + preserve_internal_time_seconds=0 + force_consistency_checks=true + merge_operator={id=StringAppendTESTOperator;delimiter=,;} + num_levels=7 + level_compaction_dynamic_file_size=true + memtable_insert_with_hint_prefix_extractor=nullptr + level_compaction_dynamic_level_bytes=false + persist_user_defined_timestamps=true + preclude_last_level_data_seconds=0 + inplace_update_support=false + +[TableOptions/BlockBasedTable "default"] + num_file_reads_for_auto_readahead=2 + metadata_cache_options={unpartitioned_pinning=kFallback;partition_pinning=kFallback;top_level_index_pinning=kFallback;} + read_amp_bytes_per_bit=0 + verify_compression=false + format_version=5 + optimize_filters_for_memory=false + partition_filters=false + detect_filter_construct_corruption=false + initial_auto_readahead_size=8192 + max_auto_readahead_size=262144 + enable_index_compression=true + checksum=kXXH3 + index_block_restart_interval=1 + pin_top_level_index_and_filter=true + block_align=false + block_size=4096 + index_type=kBinarySearch + filter_policy=nullptr + metadata_block_size=4096 + no_block_cache=false + index_shortening=kShortenSeparators + whole_key_filtering=true + block_size_deviation=10 + data_block_index_type=kDataBlockBinarySearch + data_block_hash_table_util_ratio=0.750000 + cache_index_and_filter_blocks=true + prepopulate_block_cache=kDisable + block_restart_interval=16 + pin_l0_filter_and_index_blocks_in_cache=true + cache_index_and_filter_blocks_with_high_priority=true + flush_block_policy_factory=FlushBlockBySizePolicyFactory + + +[CFOptions "state-name"] + bottommost_file_compaction_delay=0 + memtable_protection_bytes_per_key=0 + compression_per_level=kSnappyCompression + bottommost_compression=kDisableCompressionOption + sample_for_compression=0 + blob_garbage_collection_age_cutoff=0.250000 + blob_compression_type=kNoCompression + prepopulate_blob_cache=kDisable + blob_compaction_readahead_size=0 + level0_stop_writes_trigger=36 + min_blob_size=0 + last_level_temperature=kUnknown + compaction_options_universal={allow_trivial_move=false;stop_style=kCompactionStopStyleTotalSize;min_merge_width=2;compression_size_percent=-1;max_size_amplification_percent=200;incremental=false;max_merge_width=4294967295;size_ratio=1;} + target_file_size_base=67108864 + ignore_max_compaction_bytes_for_input=true + memtable_whole_key_filtering=false + blob_file_starting_level=0 + soft_pending_compaction_bytes_limit=68719476736 + max_write_buffer_number=2 + ttl=2592000 + compaction_options_fifo={file_temperature_age_thresholds=;allow_compaction=false;age_for_warm=0;max_table_files_size=1073741824;} + check_flush_compaction_key_order=true + memtable_huge_page_size=0 + max_successive_merges=0 + inplace_update_num_locks=10000 + enable_blob_garbage_collection=false + arena_block_size=1048576 + bottommost_compression_opts={use_zstd_dict_trainer=true;enabled=false;zstd_max_train_bytes=0;parallel_threads=1;max_compressed_bytes_per_kb=896;checksum=false;max_dict_bytes=0;strategy=0;max_dict_buffer_bytes=0;level=32767;window_bits=-14;} + target_file_size_multiplier=1 + max_bytes_for_level_multiplier_additional=1:1:1:1:1:1:1 + blob_garbage_collection_force_threshold=1.000000 + enable_blob_files=false + level0_slowdown_writes_trigger=20 + compression=kSnappyCompression + level0_file_num_compaction_trigger=4 + block_protection_bytes_per_key=0 + prefix_extractor=nullptr + max_bytes_for_level_multiplier=10.000000 + write_buffer_size=67108864 + disable_auto_compactions=false + max_compaction_bytes=1677721600 + memtable_max_range_deletions=0 + compression_opts={use_zstd_dict_trainer=true;enabled=false;zstd_max_train_bytes=0;parallel_threads=1;max_compressed_bytes_per_kb=896;checksum=false;max_dict_bytes=0;strategy=0;max_dict_buffer_bytes=0;level=32767;window_bits=-14;} + hard_pending_compaction_bytes_limit=274877906944 + blob_file_size=268435456 + periodic_compaction_seconds=2592000 + paranoid_file_checks=false + experimental_mempurge_threshold=0.000000 + memtable_prefix_bloom_size_ratio=0.000000 + max_bytes_for_level_base=268435456 + max_sequential_skip_in_iterations=8 + report_bg_io_stats=false + sst_partitioner_factory=nullptr + compaction_pri=kMinOverlappingRatio + compaction_style=kCompactionStyleLevel + compaction_filter_factory=nullptr + compaction_filter=nullptr + memtable_factory=SkipListFactory + comparator=leveldb.BytewiseComparator + bloom_locality=0 + min_write_buffer_number_to_merge=1 + table_factory=BlockBasedTable + max_write_buffer_size_to_maintain=0 + max_write_buffer_number_to_maintain=0 + optimize_filters_for_hits=false + default_temperature=kUnknown + preserve_internal_time_seconds=0 + force_consistency_checks=true + merge_operator={id=StringAppendTESTOperator;delimiter=,;} + num_levels=7 + level_compaction_dynamic_file_size=true + memtable_insert_with_hint_prefix_extractor=nullptr + level_compaction_dynamic_level_bytes=false + persist_user_defined_timestamps=true + preclude_last_level_data_seconds=0 + inplace_update_support=false + +[TableOptions/BlockBasedTable "state-name"] + num_file_reads_for_auto_readahead=2 + metadata_cache_options={unpartitioned_pinning=kFallback;partition_pinning=kFallback;top_level_index_pinning=kFallback;} + read_amp_bytes_per_bit=0 + verify_compression=false + format_version=5 + optimize_filters_for_memory=false + partition_filters=false + detect_filter_construct_corruption=false + initial_auto_readahead_size=8192 + max_auto_readahead_size=262144 + enable_index_compression=true + checksum=kXXH3 + index_block_restart_interval=1 + pin_top_level_index_and_filter=true + block_align=false + block_size=4096 + index_type=kBinarySearch + filter_policy=nullptr + metadata_block_size=4096 + no_block_cache=false + index_shortening=kShortenSeparators + whole_key_filtering=true + block_size_deviation=10 + data_block_index_type=kDataBlockBinarySearch + data_block_hash_table_util_ratio=0.750000 + cache_index_and_filter_blocks=true + prepopulate_block_cache=kDisable + block_restart_interval=16 + pin_l0_filter_and_index_blocks_in_cache=true + cache_index_and_filter_blocks_with_high_priority=true + flush_block_policy_factory=FlushBlockBySizePolicyFactory + diff --git a/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-checkpoint/40753da1-4b3c-487f-b7f9-913ccc5b5fa9 b/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-checkpoint/40753da1-4b3c-487f-b7f9-913ccc5b5fa9 new file mode 100644 index 0000000000000000000000000000000000000000..667ac8709a9d3de2e034e1259e5746e22c16f82d GIT binary patch literal 1414 zcmeH{K}*9h6vy8-^&kiycJSg&yczKuSY{5xDrK$8yp(5ocF{HoNjA_g?57Y+Go+Rc zZ@q|t1oFuH=a={R2LSfKk0DHyDH&=k7Q~(_Az%GQuoqk*b8niKPE?kerF5bumMwKf zDH(y4cqfxe)OMkq7aGCA$4(GD{Y9`zUyEG8_~Fx^AB34~%_&q}EBOQC2`#Z$$+AT_ z>25njBRI|*Y?E7uj?T4F1z9U(xefPd{zk4_-WzSW|Fb@ZL3_ l^Q%0~qKxO+JmIh#+!!pl-I)Erjc=nHo+i;`<0I(hzAqoB%1i(N literal 0 HcmV?d00001 diff --git a/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-checkpoint/419ea493-eb76-4b4f-a824-44f26ec4abc7 b/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-checkpoint/419ea493-eb76-4b4f-a824-44f26ec4abc7 new file mode 100644 index 0000000000000000000000000000000000000000..0971a3e3dc6f85640bf5ddcae99741ec78099eb9 GIT binary patch literal 260 zcmZS8)^KKEU^I2G?@(Z1WR%KDElbTwNz!wwEJ-cTEKYUK&n-wSN-W7Q>U3aa{KCu= z#lpbI#K6MvM@Q`^8v`RJ12Y>7gWTUAht2S7XJTRIU|~4H$as>GtGFbwBvm&rF*g-t z=!>!ro@}6@EI_lkS(wrpxb|=eF)_dZBO`a|26rFJ#{A`R9V}jCjV+2T1RZkt94@+ql0a~$vpah8~RrNH_bDuNHc;;zl z9NR1_A+ zBj83@tr^9M^lqoMw!YoW!|Zf!ZEbFCH=W1O(4XwIx0?e#j)m;`IKc!iAWxhZae&cF z>Q6Z6FbDA^X_%(iz>GU|5a;|nWF7$Q&f0df+_+(ZdmIzPW~9JYrJp42_GYKMwcZkG zcfGaFH#@DQ+ZL^EZ$pSqx^=6YY}79;9~Nd$)}_X+5-t;jXxki$KAcdT4~;B7UurnyAS_dh{{xO&zX}?V6}Xaf&z~# z#|=6XU7p9~0_)|KpRwKr*2Re8&T|r})aZE1UD2oFhB)6Mo zpv9w~4j%0VGvd(#)x!bHd&)KJXthLf+ExNSYji5t_zWS{1&U$&(89EkONT@Y^F|54 zk%w|;lPWi;m3^tX3fcySX%est(NgK`5MYe^?qLlqNLvq;%Dk=A3!!p9VR!=yg4zB0 zTU5oYqdb1-|5~+j)_?dTQJs1&6~nWzo|!at;8)KNl@xa0ye60D&JQ)Sd3@~d-pkU= f>DBN1e--~NHCMk4&{w{Bw7>uR|EI5Z-~RCt8pBh- literal 0 HcmV?d00001 diff --git a/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-checkpoint/49817ff0-028b-4f91-9523-a176abd0fd63 b/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-checkpoint/49817ff0-028b-4f91-9523-a176abd0fd63 new file mode 100644 index 0000000000000000000000000000000000000000..901a0cbbc60b0edf1cc560fb4419e23fe4b1fb49 GIT binary patch literal 747 zcmZS8)^KKEU^I2G?@(Z1WR%KDElbTwNz!wwEJ-cTEKYUK&n-wSN-W7Q>U3aa{KCu= z#lpbI#K6MvM@Q`^8v`RJ12Y>7gXXK5;hy-lGqEspurQopWIV|z8()%{n_3iKT#{Il zs$Wo)pPX7;oSByn5eC`wkw^BF3qkX^K;|)>WRyTL59oos5`m zBNy0Bx_ODYsUUZ>OmW=Z3G^=u(3|`$%;^k#k2w?>8yFbpH}YKk$N&M%Fq#p{BCLX$ znU(d^=bx9@*jPV+!nIJGDHGms9Y2mF*0x!mn4>?>gFZprULB&0Y(M^Z`Vjy zm-yfi#}L=}kjMa62G%e~pHNqzBol)Gm>D1J8szEd;~C`|1Qw-@^F;g{eO-eC9GzX! i?F+*Q4p;<${i7F_pPAwZ^iwe~+K{3{1&26tpa1|C;-Pr} literal 0 HcmV?d00001 diff --git a/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-checkpoint/594f69f3-2448-400a-91e2-c1e8ec1df26a b/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-checkpoint/594f69f3-2448-400a-91e2-c1e8ec1df26a new file mode 100644 index 0000000000000000000000000000000000000000..2bceb5cf93a5e692260525014c33466a66d7b4c0 GIT binary patch literal 1145 zcmeH`!AiqG5Qe8wdJ{Z&=*3&VNDhS@N>dfQgfWciYO=e`P73V{_bCK7DH21) zTQ1_jF3hm=@3-@_05FCS5!_oY6gtc|q+UyH-b13*8*Wj_&QUG8^onaEx+1l%T}dgi z#!~NzQ-jWLtOTJmxHz1*g0o))oA#r~EnGc)g!7|zEr0CEZB<$G4dVqpsl=M1Lzwo{ z9#I6>S%b})7Zkd2Y;*Eno8nk*vBMT(1ecHVNv@->?7$$xt8!?-!=c}ZI`@^9mi-)9gTKLP84b`Agl literal 0 HcmV?d00001 diff --git a/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-checkpoint/5cc02864-4379-4391-83d2-f66f341bce0a b/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-checkpoint/5cc02864-4379-4391-83d2-f66f341bce0a new file mode 100644 index 0000000000000000000000000000000000000000..d810f56c44d79e795ac1d960cb401589c77b538b GIT binary patch literal 505 zcmZQzU|?ea0wxCM{GxQd#Dc`+j8wg}oXoszASY8VE3qt5ucWddwX`HNr&zD3G_NEx zH&rjBv>+!nIJGDHGms9Y2mF*0x!mn4>?>gFZprULB&0Y(M^Z`Vjy zm-yfi#}L=}kjMa62G%e~pHNqzBol)Gm>D1J8szEd;~C`|1Qw-@^F;g{eO-eC9GzX! i?F+*Q4p;<${i7F_pPAwZ^iwe~+K{3{1&26tpa1|C;-Pr} literal 0 HcmV?d00001 diff --git a/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-checkpoint/5f51a027-431a-4163-8052-4accc7924269 b/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-checkpoint/5f51a027-431a-4163-8052-4accc7924269 new file mode 100644 index 00000000000000..0e36dbd4cdcd04 --- /dev/null +++ b/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-checkpoint/5f51a027-431a-4163-8052-4accc7924269 @@ -0,0 +1,429 @@ +# This is a RocksDB option file. +# +# For detailed file format spec, please refer to the example file +# in examples/rocksdb_option_file_example.ini +# + +[Version] + rocksdb_version=8.10.0 + options_file_version=1.1 + +[DBOptions] + max_background_flushes=-1 + compaction_readahead_size=2097152 + strict_bytes_per_sync=false + wal_bytes_per_sync=0 + max_open_files=-1 + stats_history_buffer_size=1048576 + max_total_wal_size=0 + stats_persist_period_sec=600 + stats_dump_period_sec=0 + avoid_flush_during_shutdown=true + max_subcompactions=1 + bytes_per_sync=0 + delayed_write_rate=16777216 + max_background_compactions=-1 + max_background_jobs=2 + delete_obsolete_files_period_micros=21600000000 + writable_file_max_buffer_size=1048576 + file_checksum_gen_factory=nullptr + allow_data_in_errors=false + max_bgerror_resume_count=2147483647 + best_efforts_recovery=false + write_dbid_to_manifest=false + atomic_flush=false + manual_wal_flush=false + two_write_queues=false + avoid_flush_during_recovery=false + dump_malloc_stats=false + info_log_level=INFO_LEVEL + write_thread_slow_yield_usec=3 + unordered_write=false + allow_ingest_behind=false + fail_if_options_file_error=true + persist_stats_to_disk=false + WAL_ttl_seconds=0 + bgerror_resume_retry_interval=1000000 + allow_concurrent_memtable_write=true + paranoid_checks=true + WAL_size_limit_MB=0 + lowest_used_cache_tier=kNonVolatileBlockTier + keep_log_file_num=4 + table_cache_numshardbits=6 + max_file_opening_threads=16 + random_access_max_buffer_size=1048576 + log_readahead_size=0 + enable_pipelined_write=false + wal_recovery_mode=kPointInTimeRecovery + db_write_buffer_size=0 + allow_2pc=false + skip_checking_sst_file_sizes_on_db_open=false + skip_stats_update_on_db_open=false + recycle_log_file_num=0 + db_host_id=__hostname__ + track_and_verify_wals_in_manifest=false + use_fsync=false + wal_compression=kNoCompression + compaction_verify_record_count=true + error_if_exists=false + manifest_preallocation_size=4194304 + is_fd_close_on_exec=true + enable_write_thread_adaptive_yield=true + enable_thread_tracking=false + avoid_unnecessary_blocking_io=false + allow_fallocate=true + max_log_file_size=26214400 + advise_random_on_open=true + create_missing_column_families=false + max_write_batch_group_size_bytes=1048576 + use_adaptive_mutex=false + wal_filter=nullptr + create_if_missing=true + enforce_single_del_contracts=true + allow_mmap_writes=false + access_hint_on_compaction_start=NORMAL + verify_sst_unique_id_in_manifest=true + log_file_time_to_roll=0 + use_direct_io_for_flush_and_compaction=false + flush_verify_memtable_count=true + max_manifest_file_size=1073741824 + write_thread_max_yield_usec=100 + use_direct_reads=false + allow_mmap_reads=false + + +[CFOptions "default"] + bottommost_file_compaction_delay=0 + memtable_protection_bytes_per_key=0 + compression_per_level=kSnappyCompression + bottommost_compression=kDisableCompressionOption + sample_for_compression=0 + blob_garbage_collection_age_cutoff=0.250000 + blob_compression_type=kNoCompression + prepopulate_blob_cache=kDisable + blob_compaction_readahead_size=0 + level0_stop_writes_trigger=36 + min_blob_size=0 + last_level_temperature=kUnknown + compaction_options_universal={allow_trivial_move=false;stop_style=kCompactionStopStyleTotalSize;min_merge_width=2;compression_size_percent=-1;max_size_amplification_percent=200;incremental=false;max_merge_width=4294967295;size_ratio=1;} + target_file_size_base=67108864 + ignore_max_compaction_bytes_for_input=true + memtable_whole_key_filtering=false + blob_file_starting_level=0 + soft_pending_compaction_bytes_limit=68719476736 + max_write_buffer_number=2 + ttl=2592000 + compaction_options_fifo={file_temperature_age_thresholds=;allow_compaction=false;age_for_warm=0;max_table_files_size=1073741824;} + check_flush_compaction_key_order=true + memtable_huge_page_size=0 + max_successive_merges=0 + inplace_update_num_locks=10000 + enable_blob_garbage_collection=false + arena_block_size=1048576 + bottommost_compression_opts={use_zstd_dict_trainer=true;enabled=false;zstd_max_train_bytes=0;parallel_threads=1;max_compressed_bytes_per_kb=896;checksum=false;max_dict_bytes=0;strategy=0;max_dict_buffer_bytes=0;level=32767;window_bits=-14;} + target_file_size_multiplier=1 + max_bytes_for_level_multiplier_additional=1:1:1:1:1:1:1 + blob_garbage_collection_force_threshold=1.000000 + enable_blob_files=false + level0_slowdown_writes_trigger=20 + compression=kSnappyCompression + level0_file_num_compaction_trigger=4 + block_protection_bytes_per_key=0 + prefix_extractor=nullptr + max_bytes_for_level_multiplier=10.000000 + write_buffer_size=67108864 + disable_auto_compactions=false + max_compaction_bytes=1677721600 + memtable_max_range_deletions=0 + compression_opts={use_zstd_dict_trainer=true;enabled=false;zstd_max_train_bytes=0;parallel_threads=1;max_compressed_bytes_per_kb=896;checksum=false;max_dict_bytes=0;strategy=0;max_dict_buffer_bytes=0;level=32767;window_bits=-14;} + hard_pending_compaction_bytes_limit=274877906944 + blob_file_size=268435456 + periodic_compaction_seconds=2592000 + paranoid_file_checks=false + experimental_mempurge_threshold=0.000000 + memtable_prefix_bloom_size_ratio=0.000000 + max_bytes_for_level_base=268435456 + max_sequential_skip_in_iterations=8 + report_bg_io_stats=false + sst_partitioner_factory=nullptr + compaction_pri=kMinOverlappingRatio + compaction_style=kCompactionStyleLevel + compaction_filter_factory=nullptr + compaction_filter=nullptr + memtable_factory=SkipListFactory + comparator=leveldb.BytewiseComparator + bloom_locality=0 + min_write_buffer_number_to_merge=1 + table_factory=BlockBasedTable + max_write_buffer_size_to_maintain=0 + max_write_buffer_number_to_maintain=0 + optimize_filters_for_hits=false + default_temperature=kUnknown + preserve_internal_time_seconds=0 + force_consistency_checks=true + merge_operator={id=StringAppendTESTOperator;delimiter=,;} + num_levels=7 + level_compaction_dynamic_file_size=true + memtable_insert_with_hint_prefix_extractor=nullptr + level_compaction_dynamic_level_bytes=false + persist_user_defined_timestamps=true + preclude_last_level_data_seconds=0 + inplace_update_support=false + +[TableOptions/BlockBasedTable "default"] + num_file_reads_for_auto_readahead=2 + metadata_cache_options={unpartitioned_pinning=kFallback;partition_pinning=kFallback;top_level_index_pinning=kFallback;} + read_amp_bytes_per_bit=0 + verify_compression=false + format_version=5 + optimize_filters_for_memory=false + partition_filters=false + detect_filter_construct_corruption=false + initial_auto_readahead_size=8192 + max_auto_readahead_size=262144 + enable_index_compression=true + checksum=kXXH3 + index_block_restart_interval=1 + pin_top_level_index_and_filter=true + block_align=false + block_size=4096 + index_type=kBinarySearch + filter_policy=nullptr + metadata_block_size=4096 + no_block_cache=false + index_shortening=kShortenSeparators + whole_key_filtering=true + block_size_deviation=10 + data_block_index_type=kDataBlockBinarySearch + data_block_hash_table_util_ratio=0.750000 + cache_index_and_filter_blocks=true + prepopulate_block_cache=kDisable + block_restart_interval=16 + pin_l0_filter_and_index_blocks_in_cache=true + cache_index_and_filter_blocks_with_high_priority=true + flush_block_policy_factory=FlushBlockBySizePolicyFactory + + +[CFOptions "_timer_state/processing_timer"] + bottommost_file_compaction_delay=0 + memtable_protection_bytes_per_key=0 + compression_per_level=kSnappyCompression + bottommost_compression=kDisableCompressionOption + sample_for_compression=0 + blob_garbage_collection_age_cutoff=0.250000 + blob_compression_type=kNoCompression + prepopulate_blob_cache=kDisable + blob_compaction_readahead_size=0 + level0_stop_writes_trigger=36 + min_blob_size=0 + last_level_temperature=kUnknown + compaction_options_universal={allow_trivial_move=false;stop_style=kCompactionStopStyleTotalSize;min_merge_width=2;compression_size_percent=-1;max_size_amplification_percent=200;incremental=false;max_merge_width=4294967295;size_ratio=1;} + target_file_size_base=67108864 + ignore_max_compaction_bytes_for_input=true + memtable_whole_key_filtering=false + blob_file_starting_level=0 + soft_pending_compaction_bytes_limit=68719476736 + max_write_buffer_number=2 + ttl=2592000 + compaction_options_fifo={file_temperature_age_thresholds=;allow_compaction=false;age_for_warm=0;max_table_files_size=1073741824;} + check_flush_compaction_key_order=true + memtable_huge_page_size=0 + max_successive_merges=0 + inplace_update_num_locks=10000 + enable_blob_garbage_collection=false + arena_block_size=1048576 + bottommost_compression_opts={use_zstd_dict_trainer=true;enabled=false;zstd_max_train_bytes=0;parallel_threads=1;max_compressed_bytes_per_kb=896;checksum=false;max_dict_bytes=0;strategy=0;max_dict_buffer_bytes=0;level=32767;window_bits=-14;} + target_file_size_multiplier=1 + max_bytes_for_level_multiplier_additional=1:1:1:1:1:1:1 + blob_garbage_collection_force_threshold=1.000000 + enable_blob_files=false + level0_slowdown_writes_trigger=20 + compression=kSnappyCompression + level0_file_num_compaction_trigger=4 + block_protection_bytes_per_key=0 + prefix_extractor=nullptr + max_bytes_for_level_multiplier=10.000000 + write_buffer_size=67108864 + disable_auto_compactions=false + max_compaction_bytes=1677721600 + memtable_max_range_deletions=0 + compression_opts={use_zstd_dict_trainer=true;enabled=false;zstd_max_train_bytes=0;parallel_threads=1;max_compressed_bytes_per_kb=896;checksum=false;max_dict_bytes=0;strategy=0;max_dict_buffer_bytes=0;level=32767;window_bits=-14;} + hard_pending_compaction_bytes_limit=274877906944 + blob_file_size=268435456 + periodic_compaction_seconds=2592000 + paranoid_file_checks=false + experimental_mempurge_threshold=0.000000 + memtable_prefix_bloom_size_ratio=0.000000 + max_bytes_for_level_base=268435456 + max_sequential_skip_in_iterations=8 + report_bg_io_stats=false + sst_partitioner_factory=nullptr + compaction_pri=kMinOverlappingRatio + compaction_style=kCompactionStyleLevel + compaction_filter_factory=nullptr + compaction_filter=nullptr + memtable_factory=SkipListFactory + comparator=leveldb.BytewiseComparator + bloom_locality=0 + min_write_buffer_number_to_merge=1 + table_factory=BlockBasedTable + max_write_buffer_size_to_maintain=0 + max_write_buffer_number_to_maintain=0 + optimize_filters_for_hits=false + default_temperature=kUnknown + preserve_internal_time_seconds=0 + force_consistency_checks=true + merge_operator={id=StringAppendTESTOperator;delimiter=,;} + num_levels=7 + level_compaction_dynamic_file_size=true + memtable_insert_with_hint_prefix_extractor=nullptr + level_compaction_dynamic_level_bytes=false + persist_user_defined_timestamps=true + preclude_last_level_data_seconds=0 + inplace_update_support=false + +[TableOptions/BlockBasedTable "_timer_state/processing_timer"] + num_file_reads_for_auto_readahead=2 + metadata_cache_options={unpartitioned_pinning=kFallback;partition_pinning=kFallback;top_level_index_pinning=kFallback;} + read_amp_bytes_per_bit=0 + verify_compression=false + format_version=5 + optimize_filters_for_memory=false + partition_filters=false + detect_filter_construct_corruption=false + initial_auto_readahead_size=8192 + max_auto_readahead_size=262144 + enable_index_compression=true + checksum=kXXH3 + index_block_restart_interval=1 + pin_top_level_index_and_filter=true + block_align=false + block_size=4096 + index_type=kBinarySearch + filter_policy=nullptr + metadata_block_size=4096 + no_block_cache=false + index_shortening=kShortenSeparators + whole_key_filtering=true + block_size_deviation=10 + data_block_index_type=kDataBlockBinarySearch + data_block_hash_table_util_ratio=0.750000 + cache_index_and_filter_blocks=true + prepopulate_block_cache=kDisable + block_restart_interval=16 + pin_l0_filter_and_index_blocks_in_cache=true + cache_index_and_filter_blocks_with_high_priority=true + flush_block_policy_factory=FlushBlockBySizePolicyFactory + + +[CFOptions "_timer_state/event_timer"] + bottommost_file_compaction_delay=0 + memtable_protection_bytes_per_key=0 + compression_per_level=kSnappyCompression + bottommost_compression=kDisableCompressionOption + sample_for_compression=0 + blob_garbage_collection_age_cutoff=0.250000 + blob_compression_type=kNoCompression + prepopulate_blob_cache=kDisable + blob_compaction_readahead_size=0 + level0_stop_writes_trigger=36 + min_blob_size=0 + last_level_temperature=kUnknown + compaction_options_universal={allow_trivial_move=false;stop_style=kCompactionStopStyleTotalSize;min_merge_width=2;compression_size_percent=-1;max_size_amplification_percent=200;incremental=false;max_merge_width=4294967295;size_ratio=1;} + target_file_size_base=67108864 + ignore_max_compaction_bytes_for_input=true + memtable_whole_key_filtering=false + blob_file_starting_level=0 + soft_pending_compaction_bytes_limit=68719476736 + max_write_buffer_number=2 + ttl=2592000 + compaction_options_fifo={file_temperature_age_thresholds=;allow_compaction=false;age_for_warm=0;max_table_files_size=1073741824;} + check_flush_compaction_key_order=true + memtable_huge_page_size=0 + max_successive_merges=0 + inplace_update_num_locks=10000 + enable_blob_garbage_collection=false + arena_block_size=1048576 + bottommost_compression_opts={use_zstd_dict_trainer=true;enabled=false;zstd_max_train_bytes=0;parallel_threads=1;max_compressed_bytes_per_kb=896;checksum=false;max_dict_bytes=0;strategy=0;max_dict_buffer_bytes=0;level=32767;window_bits=-14;} + target_file_size_multiplier=1 + max_bytes_for_level_multiplier_additional=1:1:1:1:1:1:1 + blob_garbage_collection_force_threshold=1.000000 + enable_blob_files=false + level0_slowdown_writes_trigger=20 + compression=kSnappyCompression + level0_file_num_compaction_trigger=4 + block_protection_bytes_per_key=0 + prefix_extractor=nullptr + max_bytes_for_level_multiplier=10.000000 + write_buffer_size=67108864 + disable_auto_compactions=false + max_compaction_bytes=1677721600 + memtable_max_range_deletions=0 + compression_opts={use_zstd_dict_trainer=true;enabled=false;zstd_max_train_bytes=0;parallel_threads=1;max_compressed_bytes_per_kb=896;checksum=false;max_dict_bytes=0;strategy=0;max_dict_buffer_bytes=0;level=32767;window_bits=-14;} + hard_pending_compaction_bytes_limit=274877906944 + blob_file_size=268435456 + periodic_compaction_seconds=2592000 + paranoid_file_checks=false + experimental_mempurge_threshold=0.000000 + memtable_prefix_bloom_size_ratio=0.000000 + max_bytes_for_level_base=268435456 + max_sequential_skip_in_iterations=8 + report_bg_io_stats=false + sst_partitioner_factory=nullptr + compaction_pri=kMinOverlappingRatio + compaction_style=kCompactionStyleLevel + compaction_filter_factory=nullptr + compaction_filter=nullptr + memtable_factory=SkipListFactory + comparator=leveldb.BytewiseComparator + bloom_locality=0 + min_write_buffer_number_to_merge=1 + table_factory=BlockBasedTable + max_write_buffer_size_to_maintain=0 + max_write_buffer_number_to_maintain=0 + optimize_filters_for_hits=false + default_temperature=kUnknown + preserve_internal_time_seconds=0 + force_consistency_checks=true + merge_operator={id=StringAppendTESTOperator;delimiter=,;} + num_levels=7 + level_compaction_dynamic_file_size=true + memtable_insert_with_hint_prefix_extractor=nullptr + level_compaction_dynamic_level_bytes=false + persist_user_defined_timestamps=true + preclude_last_level_data_seconds=0 + inplace_update_support=false + +[TableOptions/BlockBasedTable "_timer_state/event_timer"] + num_file_reads_for_auto_readahead=2 + metadata_cache_options={unpartitioned_pinning=kFallback;partition_pinning=kFallback;top_level_index_pinning=kFallback;} + read_amp_bytes_per_bit=0 + verify_compression=false + format_version=5 + optimize_filters_for_memory=false + partition_filters=false + detect_filter_construct_corruption=false + initial_auto_readahead_size=8192 + max_auto_readahead_size=262144 + enable_index_compression=true + checksum=kXXH3 + index_block_restart_interval=1 + pin_top_level_index_and_filter=true + block_align=false + block_size=4096 + index_type=kBinarySearch + filter_policy=nullptr + metadata_block_size=4096 + no_block_cache=false + index_shortening=kShortenSeparators + whole_key_filtering=true + block_size_deviation=10 + data_block_index_type=kDataBlockBinarySearch + data_block_hash_table_util_ratio=0.750000 + cache_index_and_filter_blocks=true + prepopulate_block_cache=kDisable + block_restart_interval=16 + pin_l0_filter_and_index_blocks_in_cache=true + cache_index_and_filter_blocks_with_high_priority=true + flush_block_policy_factory=FlushBlockBySizePolicyFactory + diff --git a/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-checkpoint/5f67e42e-3a37-48a8-a6af-7e9b8849f096 b/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-checkpoint/5f67e42e-3a37-48a8-a6af-7e9b8849f096 new file mode 100644 index 0000000000000000000000000000000000000000..5c308cbc7ebee3942689d255e14d1fa77407a2dd GIT binary patch literal 747 zcmZS8)^KKEU^I2G?@(Z1WR%KDElbTwNz!wwEJ-cTEKYUK&n-wSN-W7Q>U3aa{KCu= z#lpbI#K6MvM@Q`^8v`RJ12Y>7gXXK5;hy-lGqEspurQopWIV|z8()%{n_3iKT#{Il zs$Wo)pPX7;oSByn5eC`wkw^BF3qkX^K;|)>WRyTL59oos5`m zBNy0Bx_ODYsUUZ}{(Mom6X;(Spf~whn9~{f9&;!%HZU;GZ{)dnjsXIgVKgI@MOXzh zGb`(-&p$7*v9W#zQM`>$0xb3Mq5U4W>SMn8r;D{sujXgk#K8y* zyO)3UB00c;&dVNDhS@N>dfQgfWciYO=e`P73V{_bCK7DH21) zTQ1_jF3hm=@3-@_05FCS5!_oY6gtc|q+UyH-b13*8*Wj_&QUG8^onaEx+1l%T}dgi z#!~NzQ-jWLtOTJmxHz1*g0o))oA#r~EnGc)g!7|zEr0CEZB<$G4dVqpsl=M1Lzwo{ z9#I6>S%b})7Zkd2Y;*Eno8nk*vBMT(1ecHVNv@->?7$$xt8!?-!=c}ZI`@^9mi-)9gTKLP84b`Agl literal 0 HcmV?d00001 diff --git a/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-checkpoint/65d7affe-e53d-4c89-ba95-6c29315a8a66 b/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-checkpoint/65d7affe-e53d-4c89-ba95-6c29315a8a66 new file mode 100644 index 0000000000000000000000000000000000000000..fb8221f4910e8da4af79334d05ce41a8d0304008 GIT binary patch literal 1083 zcmah|&2AGr6t+oACLyFr1Bg~ainuJgV5|g6TdC@zTrRpBprS~Z7D410pGmEH?2+v> z2`e^8Y*?`28SWeK7)ZRqWySh}gxGOBZBwygq#1d>bH4NY`DTkOMU>Pisnn_wsnGV~ z1}UFP_|ovMCAxO4LE5KoH%W#3F|+=Ct?`W9n6oB5bRuDi!UIdV1Hn8`6fmg;Oqib* z5ID;%T3E>Bgk@5Buu>0u%N;sCFz9*+(=)gqwP~jkVh~{TlKKn>9Xc1kl15nu z_RMGGU{LbQkYxa{Tm8*$t#iWy_c$1a%}4>-OFvyr(<~EN5@)?TJYE%RYw-qvh}W}Q z0@gFWn)G|^i&qbf^E1vpek6s9AMo_9F^BPvH4L}IRl9Y`9gkz?`rzsQ_Rij;J9~Tg z_isP$Km2E7r`N2`8_m4T;s38cKAn$hRB+FklP_VVc7cKdk4wg#IT9_-<2r$*W#uQV zuYq+TqPXRfMCwgCIc6{gdgu>G?IJZc=bjyb4eKG%WqPcaAO-0dPRWK8v^hsZ;_J;T z^oXkw%E~bT3hM!#8UcbvO`3xp0y70zu7x9=%2kxbt`8#HE(*}%$zQuq9tAVv(E`<@ zoRvM5s&%wcr8sRX0gp|3EYQITLK+Jc!wwS=cf@c6a}Mb>{Tu)xY(*|Ek@Ur2zfr QnMeEgkKbN@*#7+HC%qa?qaRc|&l_sAV*I*1+a$m9}8I=9kq^S~%fazgpc9|sT)P0uWh;pnyG&p zG7SKFqqbhjma7_=#lcW)hKC?6w}X1L(t^fvEvT=sdaxX^m7ozVvLI@+#!{nEZ!9lC zX>#sZ89VgZW~V$f!47M0DRmO;X+?26Oq7Z@&BZu|raMoMHuny9>xYLAkCqH(_!(5Q69fcUTr%#=c>eSlt`lfGt^9AV37_DWQztK1 zApHvuDnNGZv6r1BO2^F7Q_yZbogYE!T31}umJBtlFtyF zw&s9hfm{%@d5L)WDS}};5MWwJspI)mV@ia`#+13kNoC7K^A49xI5q>tG%e6Me)&{kuQkFA>YQpm-m& zr7DUH*y`|Ve*Cszyy=mvtC{FDK6ZESO=f8H;=|k9qvx4Qb=E=uIb*2*_37u!_nTi| F{QcTFwzxRIc?{A(q$ZAAMg_2UG9FY=j zF7J@yDTOZ$?{=aq4{M}(?e>(E$m6;7r-!w-6sG=OB5bh!W{_ad7^+xEnv$0 zEQi2ZYtY=nP)^xUDi2ob(Z*VfPEHNFp26$}?nDim8a2)|8}dx58Iz)Pf1#>*2F`O2 zaX3|@wJhhBdt()xgTfM?%{)w`gCESbrB=Re!8vL4k>+_mYem1(fyq4rZi4lh$sm#5 z?Zut$Zo3Gxx3$^d?(epp$IvjE?QQI~Gd>*%nfgJ330y!foEL)tqnFe-IOx#1_%CTZ z9D=>^89Nvh{32u#0PJ38w_RyHvA{hJhG8>OfcDbQAlcsRZ9p1#cDmiTyWQ)@yqEI0 zEBc*H(d+ZAbfbCq!Krb6&UwzyrEu{9PoEic7QeKH;dZ!cHtxC0am-y0-kj{eJU;9l zAHO)+`la*p>z%`sdU?@k=4A$7zy0&)?WjTp_nbL-0qd1J6cl(|GVaWgXn7IW2`nut zzhZq0tUD3KEf*wGt<&ixgDKD>e@ZHMsj(UN>>O-Z4~bUjrCx#*q+>WG8&c5v0u6~D z)$h}DuEr=U#{?*>2Xtx#2pZLC26hC@l%h-^R4L5o*E9=$pYX2hc< zs>c~CdMZ@wXst|f+ExM{>-18fgDZs8mMDfDL5yjkkPeBK7L5|9#zMLCNmW|Z%8}Gu z1vLZ1Gzr*7v{Js3K1^}nDb~P(g!Ndd+}mpNR;b+17^+@DFuS+!q8etM6!AmzX9_^mv5`uP5Hb>U07y}lZt T|9KYC{`Vi>Km5M`*T;VWjEhRs literal 0 HcmV?d00001 diff --git a/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-checkpoint/6db805a0-39bf-4dcd-8437-b8849feae0b7 b/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-checkpoint/6db805a0-39bf-4dcd-8437-b8849feae0b7 new file mode 100644 index 0000000000000000000000000000000000000000..a6df1e7cf376a206cd917089080c31e5c65508a8 GIT binary patch literal 1123 zcmah|y>AmS6hG6JTuMkALJ?F#3KA@cm|mMSm8uTqYl9++1T8`*=lqgdb?lSvGzk+( zAi>DU#EAF{SQwaC5iIO5G4df08_$rQvwx=L!Y`q3Z64N zO;Q6b(WfmT9T=h7bF*dA+tO&d4TF6+3a3e;Ww)bfi*XZejrIk$cwh*u!Wg)IJW% zH-rC8>b6=~#faOr5NG_%W#$0PO0-G1I_ZQY1-iR}n(t5;caLF?`6b)zW`jLFjUQ9EqM$n@&% z&DHB0YxRwdE1L^9qHDL7);5c|39YDa{Q>8wi$>e}bMfO;aAa(6TXA)~f2{7#%iPH5^XvYz Z@h4#=I^&`LoC$pY_3p=`SF4{M{{cZRTU3aa{KCu= z#lpbI#K6MvM@Q`^8v`RJ12Y>7gXXK5;hy-lGqEspurQopWIV|z8()%{n_3iKT#{Il rs$Wo)pPX7;oSByn5eC`wkw^BF3qkX^K;|)>WRyTL59oos5`<9z)FVZO literal 0 HcmV?d00001 diff --git a/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-checkpoint/71f680a8-f58f-4147-ac88-71f8aa3cd52e b/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-checkpoint/71f680a8-f58f-4147-ac88-71f8aa3cd52e new file mode 100644 index 0000000000000000000000000000000000000000..b40d0990518a6e93bb526e1af317392fffd47133 GIT binary patch literal 1086 zcmah|Piq@T6rYjhXrw5zWHli%6hsNRxI0+3YB@1JI894?NMq_i>y#j7cizf_XLpvF zktO9G$gT8JXudi2h|VUncL zU}Jk2?WE#vG)Ok$;UJFXW;*CxyLoJ!UvM6XQzc#WP$c(_If)Le;kX^4JME9$**F%i z55Ir1e{l5Zv!kOgpKN{G|K_`$gF&mdY;x{Z25;Z}{rU>4Qz^XQPCbM5`c(=VJT4h` z<_KF|#&rTu%F54K?*i*8qqyagL>etRJ7aJS`Pd(m`Za27COkg{8`eYEb$X_kAO+<( zPRWK8v{j`c@h7bt^i=2x%F1yG8tZ{PF%l$YEt-KH12+X&kxNIqOE*y#hdzjGzbGJ= zkH0v4{3w_aXDc+HWW4ODRIQ`U8pUZ_1+LO;(KCUL&JogFp%``y5vGMwI)tq(8!b_d zrE(XOs&}bXW0eaX)C?Tc#9-U(dhJ~LFvEQ(SOX6d&L>(I-ZnawP`RITRK12^c0W92 zP0TtisXeGr%og+QFvepcOaPOi2^3I zfC=-{90F&xL30bKoUl|X4_4}7XSGGgCk9YDSo*V%1ne9{+k;QI+CZ~-}YUi1TuUQ*xUphM^4 zzob!`g1z+_Ip`PsB4iN&?B2$1yV6>-z&#FzVKY*I_R>$2PG`H@+u4jo+S`mb`F1x> zdL0q>23taO)1Ak?WUIOK@WePj<9xx-q;T;wJ~%MuG=6Rk!|ia@Y}|8K&alO1?H1jfp-#`8H;Z9Vcf_u)KJcsqlA_WB=myA1eB)YqR z>jX9^D!*oZ3arJ5;+6{%sn+S_ioq1ODSsV!3sJA@e1LLnUzEiV`)P>qFhXOpV5 zsFg#hxe96qhG`P8jp%;)TKX`-eGjk(79^}kO6A^Go25{>pE6Xvf?#&v{}9zM>$r#? z`d_J4ulo;wQPiZKOU3X$SkFwFI`Hc^SCgFQul^)==WecMZj1QX-B<6+GpCE+`oGLy YmfPzq0s5b30quYP{KxBy{mVE10?f}*YXATM literal 0 HcmV?d00001 diff --git a/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-checkpoint/78b9528d-4b5a-4adb-b9d2-91b71b224f1b b/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-checkpoint/78b9528d-4b5a-4adb-b9d2-91b71b224f1b new file mode 100644 index 0000000000000000000000000000000000000000..d810f56c44d79e795ac1d960cb401589c77b538b GIT binary patch literal 505 zcmZQzU|?ea0wxCM{GxQd#Dc`+j8wg}oXoszASY8VE3qt5ucWddwX`HNr&zD3G_NEx zH&rjBv>+!nIJGDHGms9Y2mF*0x!mn4>?>gFZprULB&0Y(M^Z`Vjy zm-yfi#}L=}kjMa62G%e~pHNqzBol)Gm>D1J8szEd;~C`|1Qw-@^F;g{eO-eC9GzX! i?F+*Q4p;<${i7F_pPAwZ^iwe~+K{3{1&26tpa1|C;-Pr} literal 0 HcmV?d00001 diff --git a/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-checkpoint/797e42be-9ffb-41b7-b6c9-f7ff31723365 b/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-checkpoint/797e42be-9ffb-41b7-b6c9-f7ff31723365 new file mode 100644 index 0000000000000000000000000000000000000000..aec654b2326db5ac85e8ab5015c9dacb6622727b GIT binary patch literal 1073 zcmah|OK%e~5MH+_*`#TjHc+9$A(epJT4|d;Q0bvOdMm9c60{YHob_yK)oZV8r%AXY zapl5^|G}AGfP|1ZAtZhRAP_gk+ZUX$v|9U{_slmpYr%9l8k9(7Bp{?zo*<2p01xrs zX7>I~P#*PfJcwWSe=iDlUKKtDHws3_N0xVJN8*Kcm<3K9>qwwNaTriH%)qP9)<|X` z5d)eC>A(opZO+z7|4^gq5ezTj`LIS}Eqke=2}^|>Qo+egp{!U6)-eZ>zm>z;G-HN2 zZ6q9n#1!rh9rT5Td-_aLDPA&QtY|!Q+cI^%ZupW7C9dCOWwS>CBLHWx0zec?z0dt|#v(V1% zbC?g{4-U@R+q$ zo1LkNtB2aUbDR6@Sa2I{vG}gmN70Va6sN=FRPC}oX~((h*3Va zqo7P?{jxq|DJ{Fn&Bic!iws#Zy68id`~31gRE?4}7gULynp3A+0Rs zATb|MvF5-@SS2Z#E>N9;VT#+JK6({tvFkj^HnI#9fBazg@wOKu9!?U~OKDzH&RR<< zMS|Tn0`OWTCj@PuB0*)6pxZ7)7#4Es1mWbEmK@obGxxkxr8+U9D-@HS%|J0s2TVD< zQaq(T3~=5t=0H7#RZq&ynex<#&)f|uvR;B0+k7xYP(hfJ= z_j3mTPXG@vjs6sBe2ZiV;U>4q${m-vE@h>3u6eZ*N=xy+*P`53n{vfrrgnwUzk%QH zW*>R6=au48UU%@oq#l_1Ay-#7(`KV{4>`!?e3$>U^B#iWPb_Hq; BT5|vZ literal 0 HcmV?d00001 diff --git a/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-checkpoint/818df800-fd2c-4b30-96d4-367532290fc0 b/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-checkpoint/818df800-fd2c-4b30-96d4-367532290fc0 new file mode 100644 index 00000000000000..aa5bb8ea50905a --- /dev/null +++ b/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-checkpoint/818df800-fd2c-4b30-96d4-367532290fc0 @@ -0,0 +1 @@ +MANIFEST-000005 diff --git a/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-checkpoint/88203641-edd9-49f3-8ada-379556908c20 b/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-checkpoint/88203641-edd9-49f3-8ada-379556908c20 new file mode 100644 index 0000000000000000000000000000000000000000..6e29c943a14c1f2e4d17553cc030e7ea9c93d9a4 GIT binary patch literal 1099 zcmah|O;1}#6rBMRKO4v3xI~n095t0t6;CnPI1*(+(yv7c5kzXCik`-AuFZ(?%+t&m z`$b(8#|35pTt5YKJH-x7mydui#WjO zCG|TTbeMy9pET;i*{I!KJvGkHIA8E{DO_`(Cy$IdYd*Dx;jXxKDPS(y9VtAAeKib_;)&zX}iV7;_RL4n7W z;|3jx?kwPPfhBq6*Q~3+T8t>}JSUNIl}@G%ra%w;DJk8i#tyk>=U~HnNVGzy>IuS- zj^UJSNI|Ow8WMk6y-Uxz8llJ>6QHmj(1{TsXjG-BkO450g5_E`QlDQ%SseKwxxF+6 zEuMXO^z0y*5s#Lr9t~OEQ?6l0D@BUawi57JrBk`a*9fUBQ4BkPCZ>g4IwV?JFiHT9 zJd`_|RH;s_97xSo&^9nk(*wH{trV{h0VcTb1Z!YH+Ipl^>TS6;7b^D|!y8Z#%nV@v*yaek;zL eE`B=vqwuEKSpO(M|MM-N{qI+Q{d}=^`OCka98<*r literal 0 HcmV?d00001 diff --git a/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-checkpoint/89cb3686-20a7-49cc-829a-d2b613fa5d27 b/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-checkpoint/89cb3686-20a7-49cc-829a-d2b613fa5d27 new file mode 100644 index 0000000000000000000000000000000000000000..edf748bb34469b166156618655f56ffc3e058ef1 GIT binary patch literal 1084 zcmah|Pj3@P6yFIBUN6S6V-i7n@gWit%8ncoVoa1npe-j#M371X$eQ)Mbw-(;S7J9zVFuv{{_e`t9^6Nwj^FbkYImPnvN zaTrrK$-&z!)k$t36=RwT>A(mzXfHL%=s=_DAxtje)v!+bS`ITsQ^|&HX7G&9%$>PHb1f>!EOA6^&e_|81EQOaXL&k>No6JJEp2nUhHr0 z>^;4=xA*h@+OySPe!aibt(9lBqE2M+_dj3$xEfXnXO2-Tj$x&8jerD)L&lleAe^7Y zaRTiZnSX0_EhISQ!YGJpWPD~pC8&Wr2rAc!HW_pD2#g<35H652zIZAKOR-DFhaj~Q z@qvG+Es`T9he#_+IY`V0R9|!8B&?AP%mAp)!7#;b(7bXJX|d}($+q(x6o3BH?(?T! zjCeRl)G(t(O$BQ$sg?^>0J%!a!%G{Z#G2=6L6N;>t;Klak>#&MZM}>c1 z|8g}tuiwAwVS_j(B*lF&j_NeE;8v!q`TN&J5zJq?Sk2rN{;|5pZ_87q_kZ<1mOhnR WD~lfbpEHZ{e?NTw?fv$rlm7sG-cJYs literal 0 HcmV?d00001 diff --git a/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-checkpoint/8a3a5998-08e6-4b69-b8bd-a1d6bc6b4eb1 b/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-checkpoint/8a3a5998-08e6-4b69-b8bd-a1d6bc6b4eb1 new file mode 100644 index 0000000000000000000000000000000000000000..d810f56c44d79e795ac1d960cb401589c77b538b GIT binary patch literal 505 zcmZQzU|?ea0wxCM{GxQd#Dc`+j8wg}oXoszASY8VE3qt5ucWddwX`HNr&zD3G_NEx zH&rjBv>+!nIJGDHGms9Y2mF*0x!mn4>?>gFZprULB&0Y(M^Z`Vjy zm-yfi#}L=}kjMa62G%e~pHNqzBol)Gm>D1J8szEd;~C`|1Qw-@^F;g{eO-eC9GzX! i?F+*Q4p;<${i7F_pPAwZ^iwe~+K{3{1&26tpa1|C;-Pr} literal 0 HcmV?d00001 diff --git a/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-checkpoint/8f08d36a-7b6f-4779-a57f-2da89facf68d b/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-checkpoint/8f08d36a-7b6f-4779-a57f-2da89facf68d new file mode 100644 index 00000000000000..6fa414733aae57 --- /dev/null +++ b/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-checkpoint/8f08d36a-7b6f-4779-a57f-2da89facf68d @@ -0,0 +1,317 @@ +# This is a RocksDB option file. +# +# For detailed file format spec, please refer to the example file +# in examples/rocksdb_option_file_example.ini +# + +[Version] + rocksdb_version=8.10.0 + options_file_version=1.1 + +[DBOptions] + max_background_flushes=-1 + compaction_readahead_size=2097152 + strict_bytes_per_sync=false + wal_bytes_per_sync=0 + max_open_files=-1 + stats_history_buffer_size=1048576 + max_total_wal_size=0 + stats_persist_period_sec=600 + stats_dump_period_sec=0 + avoid_flush_during_shutdown=true + max_subcompactions=1 + bytes_per_sync=0 + delayed_write_rate=16777216 + max_background_compactions=-1 + max_background_jobs=2 + delete_obsolete_files_period_micros=21600000000 + writable_file_max_buffer_size=1048576 + file_checksum_gen_factory=nullptr + allow_data_in_errors=false + max_bgerror_resume_count=2147483647 + best_efforts_recovery=false + write_dbid_to_manifest=false + atomic_flush=false + manual_wal_flush=false + two_write_queues=false + avoid_flush_during_recovery=false + dump_malloc_stats=false + info_log_level=INFO_LEVEL + write_thread_slow_yield_usec=3 + unordered_write=false + allow_ingest_behind=false + fail_if_options_file_error=true + persist_stats_to_disk=false + WAL_ttl_seconds=0 + bgerror_resume_retry_interval=1000000 + allow_concurrent_memtable_write=true + paranoid_checks=true + WAL_size_limit_MB=0 + lowest_used_cache_tier=kNonVolatileBlockTier + keep_log_file_num=4 + table_cache_numshardbits=6 + max_file_opening_threads=16 + random_access_max_buffer_size=1048576 + log_readahead_size=0 + enable_pipelined_write=false + wal_recovery_mode=kPointInTimeRecovery + db_write_buffer_size=0 + allow_2pc=false + skip_checking_sst_file_sizes_on_db_open=false + skip_stats_update_on_db_open=false + recycle_log_file_num=0 + db_host_id=__hostname__ + track_and_verify_wals_in_manifest=false + use_fsync=false + wal_compression=kNoCompression + compaction_verify_record_count=true + error_if_exists=false + manifest_preallocation_size=4194304 + is_fd_close_on_exec=true + enable_write_thread_adaptive_yield=true + enable_thread_tracking=false + avoid_unnecessary_blocking_io=false + allow_fallocate=true + max_log_file_size=26214400 + advise_random_on_open=true + create_missing_column_families=false + max_write_batch_group_size_bytes=1048576 + use_adaptive_mutex=false + wal_filter=nullptr + create_if_missing=true + enforce_single_del_contracts=true + allow_mmap_writes=false + access_hint_on_compaction_start=NORMAL + verify_sst_unique_id_in_manifest=true + log_file_time_to_roll=0 + use_direct_io_for_flush_and_compaction=false + flush_verify_memtable_count=true + max_manifest_file_size=1073741824 + write_thread_max_yield_usec=100 + use_direct_reads=false + allow_mmap_reads=false + + +[CFOptions "default"] + bottommost_file_compaction_delay=0 + memtable_protection_bytes_per_key=0 + compression_per_level=kSnappyCompression + bottommost_compression=kDisableCompressionOption + sample_for_compression=0 + blob_garbage_collection_age_cutoff=0.250000 + blob_compression_type=kNoCompression + prepopulate_blob_cache=kDisable + blob_compaction_readahead_size=0 + level0_stop_writes_trigger=36 + min_blob_size=0 + last_level_temperature=kUnknown + compaction_options_universal={allow_trivial_move=false;stop_style=kCompactionStopStyleTotalSize;min_merge_width=2;compression_size_percent=-1;max_size_amplification_percent=200;incremental=false;max_merge_width=4294967295;size_ratio=1;} + target_file_size_base=67108864 + ignore_max_compaction_bytes_for_input=true + memtable_whole_key_filtering=false + blob_file_starting_level=0 + soft_pending_compaction_bytes_limit=68719476736 + max_write_buffer_number=2 + ttl=2592000 + compaction_options_fifo={file_temperature_age_thresholds=;allow_compaction=false;age_for_warm=0;max_table_files_size=1073741824;} + check_flush_compaction_key_order=true + memtable_huge_page_size=0 + max_successive_merges=0 + inplace_update_num_locks=10000 + enable_blob_garbage_collection=false + arena_block_size=1048576 + bottommost_compression_opts={use_zstd_dict_trainer=true;enabled=false;zstd_max_train_bytes=0;parallel_threads=1;max_compressed_bytes_per_kb=896;checksum=false;max_dict_bytes=0;strategy=0;max_dict_buffer_bytes=0;level=32767;window_bits=-14;} + target_file_size_multiplier=1 + max_bytes_for_level_multiplier_additional=1:1:1:1:1:1:1 + blob_garbage_collection_force_threshold=1.000000 + enable_blob_files=false + level0_slowdown_writes_trigger=20 + compression=kSnappyCompression + level0_file_num_compaction_trigger=4 + block_protection_bytes_per_key=0 + prefix_extractor=nullptr + max_bytes_for_level_multiplier=10.000000 + write_buffer_size=67108864 + disable_auto_compactions=false + max_compaction_bytes=1677721600 + memtable_max_range_deletions=0 + compression_opts={use_zstd_dict_trainer=true;enabled=false;zstd_max_train_bytes=0;parallel_threads=1;max_compressed_bytes_per_kb=896;checksum=false;max_dict_bytes=0;strategy=0;max_dict_buffer_bytes=0;level=32767;window_bits=-14;} + hard_pending_compaction_bytes_limit=274877906944 + blob_file_size=268435456 + periodic_compaction_seconds=2592000 + paranoid_file_checks=false + experimental_mempurge_threshold=0.000000 + memtable_prefix_bloom_size_ratio=0.000000 + max_bytes_for_level_base=268435456 + max_sequential_skip_in_iterations=8 + report_bg_io_stats=false + sst_partitioner_factory=nullptr + compaction_pri=kMinOverlappingRatio + compaction_style=kCompactionStyleLevel + compaction_filter_factory=nullptr + compaction_filter=nullptr + memtable_factory=SkipListFactory + comparator=leveldb.BytewiseComparator + bloom_locality=0 + min_write_buffer_number_to_merge=1 + table_factory=BlockBasedTable + max_write_buffer_size_to_maintain=0 + max_write_buffer_number_to_maintain=0 + optimize_filters_for_hits=false + default_temperature=kUnknown + preserve_internal_time_seconds=0 + force_consistency_checks=true + merge_operator={id=StringAppendTESTOperator;delimiter=,;} + num_levels=7 + level_compaction_dynamic_file_size=true + memtable_insert_with_hint_prefix_extractor=nullptr + level_compaction_dynamic_level_bytes=false + persist_user_defined_timestamps=true + preclude_last_level_data_seconds=0 + inplace_update_support=false + +[TableOptions/BlockBasedTable "default"] + num_file_reads_for_auto_readahead=2 + metadata_cache_options={unpartitioned_pinning=kFallback;partition_pinning=kFallback;top_level_index_pinning=kFallback;} + read_amp_bytes_per_bit=0 + verify_compression=false + format_version=5 + optimize_filters_for_memory=false + partition_filters=false + detect_filter_construct_corruption=false + initial_auto_readahead_size=8192 + max_auto_readahead_size=262144 + enable_index_compression=true + checksum=kXXH3 + index_block_restart_interval=1 + pin_top_level_index_and_filter=true + block_align=false + block_size=4096 + index_type=kBinarySearch + filter_policy=nullptr + metadata_block_size=4096 + no_block_cache=false + index_shortening=kShortenSeparators + whole_key_filtering=true + block_size_deviation=10 + data_block_index_type=kDataBlockBinarySearch + data_block_hash_table_util_ratio=0.750000 + cache_index_and_filter_blocks=true + prepopulate_block_cache=kDisable + block_restart_interval=16 + pin_l0_filter_and_index_blocks_in_cache=true + cache_index_and_filter_blocks_with_high_priority=true + flush_block_policy_factory=FlushBlockBySizePolicyFactory + + +[CFOptions "state-name"] + bottommost_file_compaction_delay=0 + memtable_protection_bytes_per_key=0 + compression_per_level=kSnappyCompression + bottommost_compression=kDisableCompressionOption + sample_for_compression=0 + blob_garbage_collection_age_cutoff=0.250000 + blob_compression_type=kNoCompression + prepopulate_blob_cache=kDisable + blob_compaction_readahead_size=0 + level0_stop_writes_trigger=36 + min_blob_size=0 + last_level_temperature=kUnknown + compaction_options_universal={allow_trivial_move=false;stop_style=kCompactionStopStyleTotalSize;min_merge_width=2;compression_size_percent=-1;max_size_amplification_percent=200;incremental=false;max_merge_width=4294967295;size_ratio=1;} + target_file_size_base=67108864 + ignore_max_compaction_bytes_for_input=true + memtable_whole_key_filtering=false + blob_file_starting_level=0 + soft_pending_compaction_bytes_limit=68719476736 + max_write_buffer_number=2 + ttl=2592000 + compaction_options_fifo={file_temperature_age_thresholds=;allow_compaction=false;age_for_warm=0;max_table_files_size=1073741824;} + check_flush_compaction_key_order=true + memtable_huge_page_size=0 + max_successive_merges=0 + inplace_update_num_locks=10000 + enable_blob_garbage_collection=false + arena_block_size=1048576 + bottommost_compression_opts={use_zstd_dict_trainer=true;enabled=false;zstd_max_train_bytes=0;parallel_threads=1;max_compressed_bytes_per_kb=896;checksum=false;max_dict_bytes=0;strategy=0;max_dict_buffer_bytes=0;level=32767;window_bits=-14;} + target_file_size_multiplier=1 + max_bytes_for_level_multiplier_additional=1:1:1:1:1:1:1 + blob_garbage_collection_force_threshold=1.000000 + enable_blob_files=false + level0_slowdown_writes_trigger=20 + compression=kSnappyCompression + level0_file_num_compaction_trigger=4 + block_protection_bytes_per_key=0 + prefix_extractor=nullptr + max_bytes_for_level_multiplier=10.000000 + write_buffer_size=67108864 + disable_auto_compactions=false + max_compaction_bytes=1677721600 + memtable_max_range_deletions=0 + compression_opts={use_zstd_dict_trainer=true;enabled=false;zstd_max_train_bytes=0;parallel_threads=1;max_compressed_bytes_per_kb=896;checksum=false;max_dict_bytes=0;strategy=0;max_dict_buffer_bytes=0;level=32767;window_bits=-14;} + hard_pending_compaction_bytes_limit=274877906944 + blob_file_size=268435456 + periodic_compaction_seconds=2592000 + paranoid_file_checks=false + experimental_mempurge_threshold=0.000000 + memtable_prefix_bloom_size_ratio=0.000000 + max_bytes_for_level_base=268435456 + max_sequential_skip_in_iterations=8 + report_bg_io_stats=false + sst_partitioner_factory=nullptr + compaction_pri=kMinOverlappingRatio + compaction_style=kCompactionStyleLevel + compaction_filter_factory=nullptr + compaction_filter=nullptr + memtable_factory=SkipListFactory + comparator=leveldb.BytewiseComparator + bloom_locality=0 + min_write_buffer_number_to_merge=1 + table_factory=BlockBasedTable + max_write_buffer_size_to_maintain=0 + max_write_buffer_number_to_maintain=0 + optimize_filters_for_hits=false + default_temperature=kUnknown + preserve_internal_time_seconds=0 + force_consistency_checks=true + merge_operator={id=StringAppendTESTOperator;delimiter=,;} + num_levels=7 + level_compaction_dynamic_file_size=true + memtable_insert_with_hint_prefix_extractor=nullptr + level_compaction_dynamic_level_bytes=false + persist_user_defined_timestamps=true + preclude_last_level_data_seconds=0 + inplace_update_support=false + +[TableOptions/BlockBasedTable "state-name"] + num_file_reads_for_auto_readahead=2 + metadata_cache_options={unpartitioned_pinning=kFallback;partition_pinning=kFallback;top_level_index_pinning=kFallback;} + read_amp_bytes_per_bit=0 + verify_compression=false + format_version=5 + optimize_filters_for_memory=false + partition_filters=false + detect_filter_construct_corruption=false + initial_auto_readahead_size=8192 + max_auto_readahead_size=262144 + enable_index_compression=true + checksum=kXXH3 + index_block_restart_interval=1 + pin_top_level_index_and_filter=true + block_align=false + block_size=4096 + index_type=kBinarySearch + filter_policy=nullptr + metadata_block_size=4096 + no_block_cache=false + index_shortening=kShortenSeparators + whole_key_filtering=true + block_size_deviation=10 + data_block_index_type=kDataBlockBinarySearch + data_block_hash_table_util_ratio=0.750000 + cache_index_and_filter_blocks=true + prepopulate_block_cache=kDisable + block_restart_interval=16 + pin_l0_filter_and_index_blocks_in_cache=true + cache_index_and_filter_blocks_with_high_priority=true + flush_block_policy_factory=FlushBlockBySizePolicyFactory + diff --git a/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-checkpoint/9170c08c-8c89-4e11-863d-6916574b32ee b/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-checkpoint/9170c08c-8c89-4e11-863d-6916574b32ee new file mode 100644 index 00000000000000..aa5bb8ea50905a --- /dev/null +++ b/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-checkpoint/9170c08c-8c89-4e11-863d-6916574b32ee @@ -0,0 +1 @@ +MANIFEST-000005 diff --git a/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-checkpoint/91e74daf-23bf-4e9e-b3d8-88c86e5cb7c0 b/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-checkpoint/91e74daf-23bf-4e9e-b3d8-88c86e5cb7c0 new file mode 100644 index 0000000000000000000000000000000000000000..eb08b7d96f2f6aeb5c30ea28d68110e9684c2148 GIT binary patch literal 1076 zcmah|&1(}u6yLF}*`zUT8ZD(Bj1Z4IG`5YAQlx&}YQ+|`iiFwB+jQvc%sMmq5R2p+3dLbW-8cj9vpi2S1Bn>X zL`VllsNTwQjSLSonjXUV1a5}&q^o5=RWxC#kYg%1S)48@mV$N6LFA=UxSVFpFsF@# z0Z1(2`q;rxSh%78Xv&4t2CNlY?JAaK<68KNbadtrutTg*4?D4Nb~9?OZPfEHo2!?v zw61K_t;5jJ8*i>`)KfOn1)o*+6g`ZL{umtq-HSMpN7llhygN_Glav)9nWjx9;xmtncsNezT<~eL5W$31^N`E1p85I7>i+!zJU+Y!EKY;5vbJ^UDABnhgnVId=+5 z6*4;Vpb}Ki9R$TQM4Oa3IsoI>6NKl;5nntNgrzto<5Q5zH1UbgR~E^D$v)D`QVtU9 z0oBzUI0-8x1=9nnGcZhX8`P$jkQTenlWZ%?K=Hj>yL&rcjd(amR6nJ8PdRHXDHjM% z+Xz6hLXHU9IYxr=9Ko4DY9OISKCLA!!l+a=J9?13+2*r|NbuwtHd!ODc%R; zs7?|Kt}(fqgJ&O}2Mbewu4ZQP_}JaG*M*7EllN~fPJb!X8;c(L&zV8}&yPP|yxaQv F@;9pIO`ZS% literal 0 HcmV?d00001 diff --git a/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-checkpoint/94e347a5-ffb7-4042-a984-7da49a8889da b/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-checkpoint/94e347a5-ffb7-4042-a984-7da49a8889da new file mode 100644 index 0000000000000000000000000000000000000000..413a56910cada5ef6f38b30005db7be155f54d1a GIT binary patch literal 1128 zcmah|&u1j-GF8l*N<)pmC0tuxAaW|C@r$m${^bwy!6{{C4W@7?>C9gET(3O(m|Q7Y zlO8#dutebpOSl8UJWmubsRc}!pXLxaYb!LjkjV+lr1D^;9;~l5>G;s#)gzdm!kuV^ zrbdm1nq_<_)s#s=S4)>QA42Tq5Nzx`_wY%MvB5d?G=r;j(Z5cDu9Hsx+@y z;2tYvSd0{)z4X&=A2$2l1ll6WZnUp=Gu}?pUcbF5U?bhQk?|zkXq>xrXq=yOZu4U) zT>CChca1q}?^(leU|cm;F1T4c=2!22`EY0N;Qq$J!JUWQ&pY?N*xc*Z%Zo;{(EOMG zyneA1RjA;eGbbNIuX2`x0*`aYF**{RU&ILmON-3^%Q_oT9DG3{)jFNb7)*g4_(M`T zM~xkF&yK-{@sQ{uok=LDLpp|CvLOVmmuLulwZ2M^xf-F;921~0AJC~0AZS#lD3bv& zlY`}2IMO_G31zYGgYI_n9JF}w+5Ut3!HjscO!a8Uikb=`J6bDK?6#HQ7HV}m(`2Nv|L zM@r@1RvQZ;b3bLc2nvGPef4!z!>HrJf2e=ARz0ad{E?_ZJ(r5%ZdlJumO1df`L;g& y?Zsc@{F!&#imMa+V|CyBT%KQgbK%vWr5~bJ@1p?y&sjwKt7rdy_v_Bz-@gTC6km}5 literal 0 HcmV?d00001 diff --git a/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-checkpoint/95d078d3-fc51-423c-96ec-e6773f8d8487 b/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-checkpoint/95d078d3-fc51-423c-96ec-e6773f8d8487 new file mode 100644 index 0000000000000000000000000000000000000000..c0eb747ddecc374358c41bfe2a70543da549c6da GIT binary patch literal 1123 zcmah|&ubGw6yC9o+0>Y}MoTRS5fnkpm}qPZrHA?pJgCJAT1A%Goww=G$;>h{X_8*l zgP=!`o;-W-?8Tc`QS?vH|3C%xAoym}Mm&gf+1YR2_kMmaI2w=#0eSwg{NY_NJY&0G zvU@{-c<{=JUvGoM|FjQId86F&P4WJR;Mlm)$)@EojU`@a%q(!~SS*1G#i38#AOp{t znoqyr;VyD?WKy$y|~n=tqTH^V8CXxZ&3nzD|N11dO~89$;}2O=jrU?S_7 zgVPzt25ZsN5S|FFrBNm{KbmSux#_>@FCa|qZT zrmTBWESz1gH(N`!+|BaYGYj(zOEv4zHM9rIjip+L^&>747sVLBdSu%=9(fq8g!+Sn z^3C9Xle%e&RgAb@3sKI`UFHtJEH{^GrRp&Q%wdHTixC`@6K>E-k~HOMTu&S4SiQyP z=j)3AyuOg0;joahR@`h%@1Nb!){Qt9*_Pn8ew8KXwcf0+8clIvOioW7w8M6cOt0R) zv$DE={oMNc7Jo6paSI^oP5*&O^3MML~KV(n|s_iy{(te^%hdH_h#*Zfm50RmSygG!X*d^mb zkjgmmflpRu$QF}bRGOt6B<2Gu(HuAlD+FcI2C6eKOmQ1j$7WF$YtHL#CCfnZo0ryZ zUiZ(4hm%BgJ2bB;7qTVgBEfDO0eG#Dp=P5UBq&c3blZkHhJ{=@K{#2^k^{Efr#tFY zsY;A!3&o@tI8Y1|gQNK_Bnxk!Pz5G!K4vg(?E3S_BkJa6MQ5+e4e%*gI Y{v@n5k9+7pr-1L@-+z1bYUR`8-wYXD^#A|> literal 0 HcmV?d00001 diff --git a/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-checkpoint/9962d291-cbeb-42f5-b3d3-e8d9cad92d91 b/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-checkpoint/9962d291-cbeb-42f5-b3d3-e8d9cad92d91 new file mode 100644 index 0000000000000000000000000000000000000000..138aa09ae97c422b590f05c93905311c266cbc7f GIT binary patch literal 1099 zcmah|&2AG(5bjPKJT}IOF+m|*i~uP@xJe8ljL>2+s`b$dPy!7tmzy$k+4MJgC*R7V4f!mnA8G> z%#Sh%oW(hsSxDuOrBZpYQg@dZ>vXVh(DeXD-{6&Kj&_Xd_cTj+PpT1G8X7)S@V&9S9YJYm5(Y4on&a@mp03?oZS&fxg?;1vgmZ@>J>-s2}*+j|dI_x65ya(!pz{-gGGt6H2fnuWRl{pH_3PDCXtxaZ8t=de^dNkM_f zmE#5-iB8Ypa)EX7%8yuI0_$W%apyUSl&f?&W-tZ1>-S0N6g9TTJv#&&)mg;_wmZLG`oB;qAN3#pNK~VqOU3XktY;=o9r&f=LnWU-zWJS;o<2U*%;xd2ySwj- g6Q>U^cHS5MDmIqR2j~ai4BG$s^!4S3tv`SL56iGrr2qf` literal 0 HcmV?d00001 diff --git a/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-checkpoint/9cbdfdb9-732d-487c-860f-74ad0503e6fa b/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-checkpoint/9cbdfdb9-732d-487c-860f-74ad0503e6fa new file mode 100644 index 0000000000000000000000000000000000000000..7578e57efccbcc6232dfb77eb9eecd295efa5ae5 GIT binary patch literal 747 zcmZS8)^KKEU^I2G?@(Z1WR%KDElbTwNz!wwEJ-cTEKYUK&n-wSN-W7Q>U3aa{KCu= z#lpbI#K6MvM@Q`^8v`RJ12Y>7gXXK5;hy-lGqEspurQopWIV|z8()%{n_3iKT#{Il zs$Wo)pPX7;oSByn5eC`wkw^BF3qkX^K;|)>WRyTL59oos5`m zBNy0Bx_ODYsUUaQHuJ9S1p1c+=uLhW=5z+W#~g~x4GfI)8+k6iWq<%C7|qBGVG&lr z%*@LA>GRJ^Y;3HbK@=||BRc~JduU#EUVeEVj{sABd}zPNt@_F(=6CmZ9=G6U+Qh*K z47-bCVPN?9H3a5A$_m{&iyY zfrIsJ#lc}d?6)rBUwhY>fGBIQ!gC4>*+eB8)h|)((-g|4K z++2R*W6QAZ+k9fyphq>hSChp_Ib|b5YmV2LEJsx|mE@v-l4OQ5xl*q$d;ic)N7gcIC%g|-G`#Sq^ zwMrei&YF<;m6V94X)(MX#xknQyqV<0JIiEytA}5H<@|FmzjRK>`AXcTOJ%DbU6j%S zw`oyCuM3NbE(V!oSIe=S`rXz0=O`sl9UL4o)Q803r7VJpM%W~)NFylGwHr(xrM7i5 z^PXM3@0nN6o_+SE^NcIGHrGuREjBh>v=&)P_RmLadnzfYWyO!IKJ?<#FFkkW*>mSN zOLlX~Em>1p!cOYc7Dm|M)S^A*Or~{&EqXPM&m_}jt$xrL^FoWa;Zg_ID9O@E934KqL^wiK6;^LX7j055j7EO zx-e{H*L2vdVDG8j5LH!U(cX!YNfC~?GtLenedxo6&X$*Pt7AiCRqEL$BRcD2`wY$8 zfa4$9_i9=HGMC|<(@>e>DpugK_WP# z*{Q9hx6=GMtgfb8X=Xa?B%%8!LZoB{0?`Q>nbju8+1gTsi>i#O+;C+kAFq3ch?Fx- znMDqk*|nM=^AeizO=o3{41RN)JF=*c60IIeu)ujhGKf@761oF6Wn?qMZHDft-4NxL zR3Divh%DMxD@8Ij3JI*Gwc7aBH{*^Eksi7vPWUIlOeGU%vVJnxMyx%dcO(*01NotJhbLA0g25 z>&w;*%2h8f7wMP zf{0aS;X;)~S)IIH0=Z4mGp`bVM;`k$jDUIOFh+2!T7bdWt7^b?VbQ&t%dGe9MuFLU zAFxZ)FsF^hh*+``YUHSV%G~yzi84lT#rgwJxo(95(e`y{~7#kj6?5nvuPy5eej%2-0z;<|QqoGaRw*CJE0F-Y2;RF`;;ewn8Sj1Sc3{|UY{(AyLKs#; z-Z@1pLZf=+7-MS7#`iAX1`Omxf$|ZM4z{*t4EQ%2p>nD&Y1lF^skisz#{eUDZKxTD zfxu~73-{*=5BMx?k5p$J^yZ9@0t3FtW9qy{M$JT`U?~D?a_q{rZd(|eamNE=7%i1% zw(16eEPdAap5TCje3S^zwj|;NMp3Ew$kEC=`NjDnC@zR6WLETQ_<9S5>q(ER%vOiy zw4EU>lj6`rDU*Ri*+IQkL&qteb}IA5PXi1JAsGji0s>TG3ma83K6G9^*K0~O9L)T z{_Wk)7>avKE0bs*nTeRt0%0QxEhC5=1q1C<0+ zQ`pw^qrd<`n1EPCndZT!$T&%eovIo@g;utky$dklP+f3Ep}=<5BF$qU)FJhx8udSv z1@mgr(w(oCo(UI?O0deQs+gD*8dizUHfA*ih za`8ug=TCm)Xa4SeT>Ag8if`LY>c9PipZ?A+e(bql`TPg=f9k*9`o7)u?PSZ5@~oU~ z8LbA|QD+b@{DicIiYwZpQw7aTwt1Axajwl|%m!p7)MK0qydb_yENh4COZCO#Lm4th zy|a1esO~hA24m+9)fqAY6_L_|*P-fAo5#SY1-D@64jGK<3M`#MX&8VD!~?9&XsnR} zQ42b5GxJe1sa3CmA|+6)tlYbXQ^7(9+((C?V&2m5@v!e50l*DJbAhyJ>^u&ftb(A6 zkwrSW@adGnT1D?E87L^cg{=u0)0%}*bdg>w+qcQNS?euu?i5OH+k&aooN8y`fD|cG zQwl|0tI8OmIpa>Dbkj`A5Nxzabt?57#+J({5)FjGDK_}ARZ#Z~(c~_L-V!z8gi(xB zkg$zV0#YohT(|qZBSh>y^hUamK502jyOUE95*wnVVMUhQp0A^3GO0lMfSCv-EAK=H z>(J1w%5&(&=)R!h_z*QtwZLsKOqiAmkxz?&1DhVD*VNJKn|Wu53h1@qO*A=q%uVZQ zsXi!emKeO&ZYk-TF}IjvCqy2?_fZXM6r69P&lE}83@!FVn1kwTRlk#jYcmOY_&hY-m~$e5b7rgAaaY}POe0s8ww&`FAqr`#zJi8A z(9ozr)X=t=v^<7U0mCKxz z_hg<2H`ThToKDiH~~ROnv$}FWo;%) z^riR!#3>Z0byPQ|QnvS5sFQ~)s3K;f(-^(3eAc$DkxWw8^dOy{j~gQA-0)2nY?p&kjJGN{?QubC~H^ z^|svHE)9Jv97~qMq*jo-ah8|}oyVQ^meS(-Av{WsJZ_$TFjzVcK-HyfR9F>Ori;m5DGC!;PfX=3hSGo_0 zUQ@m;gmQd#BPJCDA_Wa+(qW*e>1)ygP{C7AByM2otxRb+QAqC?+B0$8Qj-GDN||VB z+HdG<8=cKokE@ZyJvv;wa7B|zcqQsA*03n89E6te6pY@fkr&ryvOzcsI6C?P9FUeI z5SVnKCD$oYt}fhvS6~$9VNmRH7*kKEX=7=T3ze*!eR@;ma>jRA(MF!1kE7W z4`|ZxO$;qL7HPJ%cI_GH@{R(Z(W|45^NfIa(stCEbgIT^a&oiE&F|wXGu^J)55}P@ z2e^1b!GnuBO=30%1w}h|X3$P$UYp5c6!o9BjWJkAh#7m8DU;1r;~=U*=XW#dU4b#H zKtg2EAV4lH!U-J};(VsiIjOM?(d~>u^arL9zEWr=l<@4r!*xy7W;7-@_qv(=4l^0N z8EPOs)ND=ifP}+sI7)h9oP3bz^)053Gn2FiRf72;*ePVXr@w(30bFFh&v|6ONT;K~ z7%e#3kXATN)>%yNB=>bgh+d7SppSdDH6gP$aGX3En!UQngRST#Mu3MPC~DJjvzr}H zU`QH1uJeclC5Hx|q+SAptFE-66g90a=QGE=hlh&l(zk?q{x`q+_B-Erx+2*)APco0z@WkohYb16eJwvh@k%tv662MZ(t zm{>~Yi62^qFK=J`#_Ilq>#KP6`h`>ZTCNxSsc{*XeCqlQo{C=Sr}$=hMtbVqp7|@+ zXD9veQa@O3bMoZs!Pi!gv`YsyUvJOk{n{^I?(MbJ2bZtTfs#o2`-O z)?uBsc;}=?37+_&Cm+&ZZ#7A$Lh6*zdhIiWKUr9Zl^6TucGcPR#LI*y8ZSH%9wZMU z(ZH3FFymofK;*2qY2hGKGoC3Oz$r7nv)-lCV~egQFu#O1S(~O-PjbUEkt;ptN-kZm zHjK!@2N9qjZw3#E2`bD7L)aM(66nh$yWhVz z$V5L$w}<^530vvb{Y)g;R%hkLvGrlW`9hp3>HCjG`oP+g{(-X`wTGv%O#04T6A{C;2O+09FzJAwJsNdpMs0)A?zAG(@T_s@*Jn+ zVhY--(wO+;)^&O+^aN$)xde^%fJvWAs9;HLr>ax`m)mSQb zF{yf&IyF{C=%{Akm?i<&X4h)x(uW!DJH;A!l(3m-T?E(YRAS{}&QbLmqS=4{f;BPg zw2UA7zuRn__aFb-tV4rPn&W$Lf!i$e5H>EJCi&ymrz>P_>EdY?u8fb}ef>*q;q>?L cpP#C4YQ2q{5&ECAjP^f&fB(a8`>%ie7n3eeuK)l5 literal 0 HcmV?d00001 diff --git a/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-checkpoint/abdf15c6-c997-4607-989c-7b793f81ac0f b/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-checkpoint/abdf15c6-c997-4607-989c-7b793f81ac0f new file mode 100644 index 00000000000000..6fa414733aae57 --- /dev/null +++ b/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-checkpoint/abdf15c6-c997-4607-989c-7b793f81ac0f @@ -0,0 +1,317 @@ +# This is a RocksDB option file. +# +# For detailed file format spec, please refer to the example file +# in examples/rocksdb_option_file_example.ini +# + +[Version] + rocksdb_version=8.10.0 + options_file_version=1.1 + +[DBOptions] + max_background_flushes=-1 + compaction_readahead_size=2097152 + strict_bytes_per_sync=false + wal_bytes_per_sync=0 + max_open_files=-1 + stats_history_buffer_size=1048576 + max_total_wal_size=0 + stats_persist_period_sec=600 + stats_dump_period_sec=0 + avoid_flush_during_shutdown=true + max_subcompactions=1 + bytes_per_sync=0 + delayed_write_rate=16777216 + max_background_compactions=-1 + max_background_jobs=2 + delete_obsolete_files_period_micros=21600000000 + writable_file_max_buffer_size=1048576 + file_checksum_gen_factory=nullptr + allow_data_in_errors=false + max_bgerror_resume_count=2147483647 + best_efforts_recovery=false + write_dbid_to_manifest=false + atomic_flush=false + manual_wal_flush=false + two_write_queues=false + avoid_flush_during_recovery=false + dump_malloc_stats=false + info_log_level=INFO_LEVEL + write_thread_slow_yield_usec=3 + unordered_write=false + allow_ingest_behind=false + fail_if_options_file_error=true + persist_stats_to_disk=false + WAL_ttl_seconds=0 + bgerror_resume_retry_interval=1000000 + allow_concurrent_memtable_write=true + paranoid_checks=true + WAL_size_limit_MB=0 + lowest_used_cache_tier=kNonVolatileBlockTier + keep_log_file_num=4 + table_cache_numshardbits=6 + max_file_opening_threads=16 + random_access_max_buffer_size=1048576 + log_readahead_size=0 + enable_pipelined_write=false + wal_recovery_mode=kPointInTimeRecovery + db_write_buffer_size=0 + allow_2pc=false + skip_checking_sst_file_sizes_on_db_open=false + skip_stats_update_on_db_open=false + recycle_log_file_num=0 + db_host_id=__hostname__ + track_and_verify_wals_in_manifest=false + use_fsync=false + wal_compression=kNoCompression + compaction_verify_record_count=true + error_if_exists=false + manifest_preallocation_size=4194304 + is_fd_close_on_exec=true + enable_write_thread_adaptive_yield=true + enable_thread_tracking=false + avoid_unnecessary_blocking_io=false + allow_fallocate=true + max_log_file_size=26214400 + advise_random_on_open=true + create_missing_column_families=false + max_write_batch_group_size_bytes=1048576 + use_adaptive_mutex=false + wal_filter=nullptr + create_if_missing=true + enforce_single_del_contracts=true + allow_mmap_writes=false + access_hint_on_compaction_start=NORMAL + verify_sst_unique_id_in_manifest=true + log_file_time_to_roll=0 + use_direct_io_for_flush_and_compaction=false + flush_verify_memtable_count=true + max_manifest_file_size=1073741824 + write_thread_max_yield_usec=100 + use_direct_reads=false + allow_mmap_reads=false + + +[CFOptions "default"] + bottommost_file_compaction_delay=0 + memtable_protection_bytes_per_key=0 + compression_per_level=kSnappyCompression + bottommost_compression=kDisableCompressionOption + sample_for_compression=0 + blob_garbage_collection_age_cutoff=0.250000 + blob_compression_type=kNoCompression + prepopulate_blob_cache=kDisable + blob_compaction_readahead_size=0 + level0_stop_writes_trigger=36 + min_blob_size=0 + last_level_temperature=kUnknown + compaction_options_universal={allow_trivial_move=false;stop_style=kCompactionStopStyleTotalSize;min_merge_width=2;compression_size_percent=-1;max_size_amplification_percent=200;incremental=false;max_merge_width=4294967295;size_ratio=1;} + target_file_size_base=67108864 + ignore_max_compaction_bytes_for_input=true + memtable_whole_key_filtering=false + blob_file_starting_level=0 + soft_pending_compaction_bytes_limit=68719476736 + max_write_buffer_number=2 + ttl=2592000 + compaction_options_fifo={file_temperature_age_thresholds=;allow_compaction=false;age_for_warm=0;max_table_files_size=1073741824;} + check_flush_compaction_key_order=true + memtable_huge_page_size=0 + max_successive_merges=0 + inplace_update_num_locks=10000 + enable_blob_garbage_collection=false + arena_block_size=1048576 + bottommost_compression_opts={use_zstd_dict_trainer=true;enabled=false;zstd_max_train_bytes=0;parallel_threads=1;max_compressed_bytes_per_kb=896;checksum=false;max_dict_bytes=0;strategy=0;max_dict_buffer_bytes=0;level=32767;window_bits=-14;} + target_file_size_multiplier=1 + max_bytes_for_level_multiplier_additional=1:1:1:1:1:1:1 + blob_garbage_collection_force_threshold=1.000000 + enable_blob_files=false + level0_slowdown_writes_trigger=20 + compression=kSnappyCompression + level0_file_num_compaction_trigger=4 + block_protection_bytes_per_key=0 + prefix_extractor=nullptr + max_bytes_for_level_multiplier=10.000000 + write_buffer_size=67108864 + disable_auto_compactions=false + max_compaction_bytes=1677721600 + memtable_max_range_deletions=0 + compression_opts={use_zstd_dict_trainer=true;enabled=false;zstd_max_train_bytes=0;parallel_threads=1;max_compressed_bytes_per_kb=896;checksum=false;max_dict_bytes=0;strategy=0;max_dict_buffer_bytes=0;level=32767;window_bits=-14;} + hard_pending_compaction_bytes_limit=274877906944 + blob_file_size=268435456 + periodic_compaction_seconds=2592000 + paranoid_file_checks=false + experimental_mempurge_threshold=0.000000 + memtable_prefix_bloom_size_ratio=0.000000 + max_bytes_for_level_base=268435456 + max_sequential_skip_in_iterations=8 + report_bg_io_stats=false + sst_partitioner_factory=nullptr + compaction_pri=kMinOverlappingRatio + compaction_style=kCompactionStyleLevel + compaction_filter_factory=nullptr + compaction_filter=nullptr + memtable_factory=SkipListFactory + comparator=leveldb.BytewiseComparator + bloom_locality=0 + min_write_buffer_number_to_merge=1 + table_factory=BlockBasedTable + max_write_buffer_size_to_maintain=0 + max_write_buffer_number_to_maintain=0 + optimize_filters_for_hits=false + default_temperature=kUnknown + preserve_internal_time_seconds=0 + force_consistency_checks=true + merge_operator={id=StringAppendTESTOperator;delimiter=,;} + num_levels=7 + level_compaction_dynamic_file_size=true + memtable_insert_with_hint_prefix_extractor=nullptr + level_compaction_dynamic_level_bytes=false + persist_user_defined_timestamps=true + preclude_last_level_data_seconds=0 + inplace_update_support=false + +[TableOptions/BlockBasedTable "default"] + num_file_reads_for_auto_readahead=2 + metadata_cache_options={unpartitioned_pinning=kFallback;partition_pinning=kFallback;top_level_index_pinning=kFallback;} + read_amp_bytes_per_bit=0 + verify_compression=false + format_version=5 + optimize_filters_for_memory=false + partition_filters=false + detect_filter_construct_corruption=false + initial_auto_readahead_size=8192 + max_auto_readahead_size=262144 + enable_index_compression=true + checksum=kXXH3 + index_block_restart_interval=1 + pin_top_level_index_and_filter=true + block_align=false + block_size=4096 + index_type=kBinarySearch + filter_policy=nullptr + metadata_block_size=4096 + no_block_cache=false + index_shortening=kShortenSeparators + whole_key_filtering=true + block_size_deviation=10 + data_block_index_type=kDataBlockBinarySearch + data_block_hash_table_util_ratio=0.750000 + cache_index_and_filter_blocks=true + prepopulate_block_cache=kDisable + block_restart_interval=16 + pin_l0_filter_and_index_blocks_in_cache=true + cache_index_and_filter_blocks_with_high_priority=true + flush_block_policy_factory=FlushBlockBySizePolicyFactory + + +[CFOptions "state-name"] + bottommost_file_compaction_delay=0 + memtable_protection_bytes_per_key=0 + compression_per_level=kSnappyCompression + bottommost_compression=kDisableCompressionOption + sample_for_compression=0 + blob_garbage_collection_age_cutoff=0.250000 + blob_compression_type=kNoCompression + prepopulate_blob_cache=kDisable + blob_compaction_readahead_size=0 + level0_stop_writes_trigger=36 + min_blob_size=0 + last_level_temperature=kUnknown + compaction_options_universal={allow_trivial_move=false;stop_style=kCompactionStopStyleTotalSize;min_merge_width=2;compression_size_percent=-1;max_size_amplification_percent=200;incremental=false;max_merge_width=4294967295;size_ratio=1;} + target_file_size_base=67108864 + ignore_max_compaction_bytes_for_input=true + memtable_whole_key_filtering=false + blob_file_starting_level=0 + soft_pending_compaction_bytes_limit=68719476736 + max_write_buffer_number=2 + ttl=2592000 + compaction_options_fifo={file_temperature_age_thresholds=;allow_compaction=false;age_for_warm=0;max_table_files_size=1073741824;} + check_flush_compaction_key_order=true + memtable_huge_page_size=0 + max_successive_merges=0 + inplace_update_num_locks=10000 + enable_blob_garbage_collection=false + arena_block_size=1048576 + bottommost_compression_opts={use_zstd_dict_trainer=true;enabled=false;zstd_max_train_bytes=0;parallel_threads=1;max_compressed_bytes_per_kb=896;checksum=false;max_dict_bytes=0;strategy=0;max_dict_buffer_bytes=0;level=32767;window_bits=-14;} + target_file_size_multiplier=1 + max_bytes_for_level_multiplier_additional=1:1:1:1:1:1:1 + blob_garbage_collection_force_threshold=1.000000 + enable_blob_files=false + level0_slowdown_writes_trigger=20 + compression=kSnappyCompression + level0_file_num_compaction_trigger=4 + block_protection_bytes_per_key=0 + prefix_extractor=nullptr + max_bytes_for_level_multiplier=10.000000 + write_buffer_size=67108864 + disable_auto_compactions=false + max_compaction_bytes=1677721600 + memtable_max_range_deletions=0 + compression_opts={use_zstd_dict_trainer=true;enabled=false;zstd_max_train_bytes=0;parallel_threads=1;max_compressed_bytes_per_kb=896;checksum=false;max_dict_bytes=0;strategy=0;max_dict_buffer_bytes=0;level=32767;window_bits=-14;} + hard_pending_compaction_bytes_limit=274877906944 + blob_file_size=268435456 + periodic_compaction_seconds=2592000 + paranoid_file_checks=false + experimental_mempurge_threshold=0.000000 + memtable_prefix_bloom_size_ratio=0.000000 + max_bytes_for_level_base=268435456 + max_sequential_skip_in_iterations=8 + report_bg_io_stats=false + sst_partitioner_factory=nullptr + compaction_pri=kMinOverlappingRatio + compaction_style=kCompactionStyleLevel + compaction_filter_factory=nullptr + compaction_filter=nullptr + memtable_factory=SkipListFactory + comparator=leveldb.BytewiseComparator + bloom_locality=0 + min_write_buffer_number_to_merge=1 + table_factory=BlockBasedTable + max_write_buffer_size_to_maintain=0 + max_write_buffer_number_to_maintain=0 + optimize_filters_for_hits=false + default_temperature=kUnknown + preserve_internal_time_seconds=0 + force_consistency_checks=true + merge_operator={id=StringAppendTESTOperator;delimiter=,;} + num_levels=7 + level_compaction_dynamic_file_size=true + memtable_insert_with_hint_prefix_extractor=nullptr + level_compaction_dynamic_level_bytes=false + persist_user_defined_timestamps=true + preclude_last_level_data_seconds=0 + inplace_update_support=false + +[TableOptions/BlockBasedTable "state-name"] + num_file_reads_for_auto_readahead=2 + metadata_cache_options={unpartitioned_pinning=kFallback;partition_pinning=kFallback;top_level_index_pinning=kFallback;} + read_amp_bytes_per_bit=0 + verify_compression=false + format_version=5 + optimize_filters_for_memory=false + partition_filters=false + detect_filter_construct_corruption=false + initial_auto_readahead_size=8192 + max_auto_readahead_size=262144 + enable_index_compression=true + checksum=kXXH3 + index_block_restart_interval=1 + pin_top_level_index_and_filter=true + block_align=false + block_size=4096 + index_type=kBinarySearch + filter_policy=nullptr + metadata_block_size=4096 + no_block_cache=false + index_shortening=kShortenSeparators + whole_key_filtering=true + block_size_deviation=10 + data_block_index_type=kDataBlockBinarySearch + data_block_hash_table_util_ratio=0.750000 + cache_index_and_filter_blocks=true + prepopulate_block_cache=kDisable + block_restart_interval=16 + pin_l0_filter_and_index_blocks_in_cache=true + cache_index_and_filter_blocks_with_high_priority=true + flush_block_policy_factory=FlushBlockBySizePolicyFactory + diff --git a/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-checkpoint/ad91efab-f85b-4c40-93c8-01f9044236de b/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-checkpoint/ad91efab-f85b-4c40-93c8-01f9044236de new file mode 100644 index 00000000000000..aa5bb8ea50905a --- /dev/null +++ b/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-checkpoint/ad91efab-f85b-4c40-93c8-01f9044236de @@ -0,0 +1 @@ +MANIFEST-000005 diff --git a/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-checkpoint/ae233392-97f4-44a4-ac68-6a04e8b61272 b/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-checkpoint/ae233392-97f4-44a4-ac68-6a04e8b61272 new file mode 100644 index 00000000000000..00c77db5b298c5 --- /dev/null +++ b/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-checkpoint/ae233392-97f4-44a4-ac68-6a04e8b61272 @@ -0,0 +1,541 @@ +# This is a RocksDB option file. +# +# For detailed file format spec, please refer to the example file +# in examples/rocksdb_option_file_example.ini +# + +[Version] + rocksdb_version=8.10.0 + options_file_version=1.1 + +[DBOptions] + max_background_flushes=-1 + compaction_readahead_size=2097152 + strict_bytes_per_sync=false + wal_bytes_per_sync=0 + max_open_files=-1 + stats_history_buffer_size=1048576 + max_total_wal_size=0 + stats_persist_period_sec=600 + stats_dump_period_sec=0 + avoid_flush_during_shutdown=true + max_subcompactions=1 + bytes_per_sync=0 + delayed_write_rate=16777216 + max_background_compactions=-1 + max_background_jobs=2 + delete_obsolete_files_period_micros=21600000000 + writable_file_max_buffer_size=1048576 + file_checksum_gen_factory=nullptr + allow_data_in_errors=false + max_bgerror_resume_count=2147483647 + best_efforts_recovery=false + write_dbid_to_manifest=false + atomic_flush=false + manual_wal_flush=false + two_write_queues=false + avoid_flush_during_recovery=false + dump_malloc_stats=false + info_log_level=INFO_LEVEL + write_thread_slow_yield_usec=3 + unordered_write=false + allow_ingest_behind=false + fail_if_options_file_error=true + persist_stats_to_disk=false + WAL_ttl_seconds=0 + bgerror_resume_retry_interval=1000000 + allow_concurrent_memtable_write=true + paranoid_checks=true + WAL_size_limit_MB=0 + lowest_used_cache_tier=kNonVolatileBlockTier + keep_log_file_num=4 + table_cache_numshardbits=6 + max_file_opening_threads=16 + random_access_max_buffer_size=1048576 + log_readahead_size=0 + enable_pipelined_write=false + wal_recovery_mode=kPointInTimeRecovery + db_write_buffer_size=0 + allow_2pc=false + skip_checking_sst_file_sizes_on_db_open=false + skip_stats_update_on_db_open=false + recycle_log_file_num=0 + db_host_id=__hostname__ + track_and_verify_wals_in_manifest=false + use_fsync=false + wal_compression=kNoCompression + compaction_verify_record_count=true + error_if_exists=false + manifest_preallocation_size=4194304 + is_fd_close_on_exec=true + enable_write_thread_adaptive_yield=true + enable_thread_tracking=false + avoid_unnecessary_blocking_io=false + allow_fallocate=true + max_log_file_size=26214400 + advise_random_on_open=true + create_missing_column_families=false + max_write_batch_group_size_bytes=1048576 + use_adaptive_mutex=false + wal_filter=nullptr + create_if_missing=true + enforce_single_del_contracts=true + allow_mmap_writes=false + access_hint_on_compaction_start=NORMAL + verify_sst_unique_id_in_manifest=true + log_file_time_to_roll=0 + use_direct_io_for_flush_and_compaction=false + flush_verify_memtable_count=true + max_manifest_file_size=1073741824 + write_thread_max_yield_usec=100 + use_direct_reads=false + allow_mmap_reads=false + + +[CFOptions "default"] + bottommost_file_compaction_delay=0 + memtable_protection_bytes_per_key=0 + compression_per_level=kSnappyCompression + bottommost_compression=kDisableCompressionOption + sample_for_compression=0 + blob_garbage_collection_age_cutoff=0.250000 + blob_compression_type=kNoCompression + prepopulate_blob_cache=kDisable + blob_compaction_readahead_size=0 + level0_stop_writes_trigger=36 + min_blob_size=0 + last_level_temperature=kUnknown + compaction_options_universal={allow_trivial_move=false;stop_style=kCompactionStopStyleTotalSize;min_merge_width=2;compression_size_percent=-1;max_size_amplification_percent=200;incremental=false;max_merge_width=4294967295;size_ratio=1;} + target_file_size_base=67108864 + ignore_max_compaction_bytes_for_input=true + memtable_whole_key_filtering=false + blob_file_starting_level=0 + soft_pending_compaction_bytes_limit=68719476736 + max_write_buffer_number=2 + ttl=2592000 + compaction_options_fifo={file_temperature_age_thresholds=;allow_compaction=false;age_for_warm=0;max_table_files_size=1073741824;} + check_flush_compaction_key_order=true + memtable_huge_page_size=0 + max_successive_merges=0 + inplace_update_num_locks=10000 + enable_blob_garbage_collection=false + arena_block_size=1048576 + bottommost_compression_opts={use_zstd_dict_trainer=true;enabled=false;zstd_max_train_bytes=0;parallel_threads=1;max_compressed_bytes_per_kb=896;checksum=false;max_dict_bytes=0;strategy=0;max_dict_buffer_bytes=0;level=32767;window_bits=-14;} + target_file_size_multiplier=1 + max_bytes_for_level_multiplier_additional=1:1:1:1:1:1:1 + blob_garbage_collection_force_threshold=1.000000 + enable_blob_files=false + level0_slowdown_writes_trigger=20 + compression=kSnappyCompression + level0_file_num_compaction_trigger=4 + block_protection_bytes_per_key=0 + prefix_extractor=nullptr + max_bytes_for_level_multiplier=10.000000 + write_buffer_size=67108864 + disable_auto_compactions=false + max_compaction_bytes=1677721600 + memtable_max_range_deletions=0 + compression_opts={use_zstd_dict_trainer=true;enabled=false;zstd_max_train_bytes=0;parallel_threads=1;max_compressed_bytes_per_kb=896;checksum=false;max_dict_bytes=0;strategy=0;max_dict_buffer_bytes=0;level=32767;window_bits=-14;} + hard_pending_compaction_bytes_limit=274877906944 + blob_file_size=268435456 + periodic_compaction_seconds=2592000 + paranoid_file_checks=false + experimental_mempurge_threshold=0.000000 + memtable_prefix_bloom_size_ratio=0.000000 + max_bytes_for_level_base=268435456 + max_sequential_skip_in_iterations=8 + report_bg_io_stats=false + sst_partitioner_factory=nullptr + compaction_pri=kMinOverlappingRatio + compaction_style=kCompactionStyleLevel + compaction_filter_factory=nullptr + compaction_filter=nullptr + memtable_factory=SkipListFactory + comparator=leveldb.BytewiseComparator + bloom_locality=0 + min_write_buffer_number_to_merge=1 + table_factory=BlockBasedTable + max_write_buffer_size_to_maintain=0 + max_write_buffer_number_to_maintain=0 + optimize_filters_for_hits=false + default_temperature=kUnknown + preserve_internal_time_seconds=0 + force_consistency_checks=true + merge_operator={id=StringAppendTESTOperator;delimiter=,;} + num_levels=7 + level_compaction_dynamic_file_size=true + memtable_insert_with_hint_prefix_extractor=nullptr + level_compaction_dynamic_level_bytes=false + persist_user_defined_timestamps=true + preclude_last_level_data_seconds=0 + inplace_update_support=false + +[TableOptions/BlockBasedTable "default"] + num_file_reads_for_auto_readahead=2 + metadata_cache_options={unpartitioned_pinning=kFallback;partition_pinning=kFallback;top_level_index_pinning=kFallback;} + read_amp_bytes_per_bit=0 + verify_compression=false + format_version=5 + optimize_filters_for_memory=false + partition_filters=false + detect_filter_construct_corruption=false + initial_auto_readahead_size=8192 + max_auto_readahead_size=262144 + enable_index_compression=true + checksum=kXXH3 + index_block_restart_interval=1 + pin_top_level_index_and_filter=true + block_align=false + block_size=4096 + index_type=kBinarySearch + filter_policy=nullptr + metadata_block_size=4096 + no_block_cache=false + index_shortening=kShortenSeparators + whole_key_filtering=true + block_size_deviation=10 + data_block_index_type=kDataBlockBinarySearch + data_block_hash_table_util_ratio=0.750000 + cache_index_and_filter_blocks=true + prepopulate_block_cache=kDisable + block_restart_interval=16 + pin_l0_filter_and_index_blocks_in_cache=true + cache_index_and_filter_blocks_with_high_priority=true + flush_block_policy_factory=FlushBlockBySizePolicyFactory + + +[CFOptions "_timer_state/processing_timer"] + bottommost_file_compaction_delay=0 + memtable_protection_bytes_per_key=0 + compression_per_level=kSnappyCompression + bottommost_compression=kDisableCompressionOption + sample_for_compression=0 + blob_garbage_collection_age_cutoff=0.250000 + blob_compression_type=kNoCompression + prepopulate_blob_cache=kDisable + blob_compaction_readahead_size=0 + level0_stop_writes_trigger=36 + min_blob_size=0 + last_level_temperature=kUnknown + compaction_options_universal={allow_trivial_move=false;stop_style=kCompactionStopStyleTotalSize;min_merge_width=2;compression_size_percent=-1;max_size_amplification_percent=200;incremental=false;max_merge_width=4294967295;size_ratio=1;} + target_file_size_base=67108864 + ignore_max_compaction_bytes_for_input=true + memtable_whole_key_filtering=false + blob_file_starting_level=0 + soft_pending_compaction_bytes_limit=68719476736 + max_write_buffer_number=2 + ttl=2592000 + compaction_options_fifo={file_temperature_age_thresholds=;allow_compaction=false;age_for_warm=0;max_table_files_size=1073741824;} + check_flush_compaction_key_order=true + memtable_huge_page_size=0 + max_successive_merges=0 + inplace_update_num_locks=10000 + enable_blob_garbage_collection=false + arena_block_size=1048576 + bottommost_compression_opts={use_zstd_dict_trainer=true;enabled=false;zstd_max_train_bytes=0;parallel_threads=1;max_compressed_bytes_per_kb=896;checksum=false;max_dict_bytes=0;strategy=0;max_dict_buffer_bytes=0;level=32767;window_bits=-14;} + target_file_size_multiplier=1 + max_bytes_for_level_multiplier_additional=1:1:1:1:1:1:1 + blob_garbage_collection_force_threshold=1.000000 + enable_blob_files=false + level0_slowdown_writes_trigger=20 + compression=kSnappyCompression + level0_file_num_compaction_trigger=4 + block_protection_bytes_per_key=0 + prefix_extractor=nullptr + max_bytes_for_level_multiplier=10.000000 + write_buffer_size=67108864 + disable_auto_compactions=false + max_compaction_bytes=1677721600 + memtable_max_range_deletions=0 + compression_opts={use_zstd_dict_trainer=true;enabled=false;zstd_max_train_bytes=0;parallel_threads=1;max_compressed_bytes_per_kb=896;checksum=false;max_dict_bytes=0;strategy=0;max_dict_buffer_bytes=0;level=32767;window_bits=-14;} + hard_pending_compaction_bytes_limit=274877906944 + blob_file_size=268435456 + periodic_compaction_seconds=2592000 + paranoid_file_checks=false + experimental_mempurge_threshold=0.000000 + memtable_prefix_bloom_size_ratio=0.000000 + max_bytes_for_level_base=268435456 + max_sequential_skip_in_iterations=8 + report_bg_io_stats=false + sst_partitioner_factory=nullptr + compaction_pri=kMinOverlappingRatio + compaction_style=kCompactionStyleLevel + compaction_filter_factory=nullptr + compaction_filter=nullptr + memtable_factory=SkipListFactory + comparator=leveldb.BytewiseComparator + bloom_locality=0 + min_write_buffer_number_to_merge=1 + table_factory=BlockBasedTable + max_write_buffer_size_to_maintain=0 + max_write_buffer_number_to_maintain=0 + optimize_filters_for_hits=false + default_temperature=kUnknown + preserve_internal_time_seconds=0 + force_consistency_checks=true + merge_operator={id=StringAppendTESTOperator;delimiter=,;} + num_levels=7 + level_compaction_dynamic_file_size=true + memtable_insert_with_hint_prefix_extractor=nullptr + level_compaction_dynamic_level_bytes=false + persist_user_defined_timestamps=true + preclude_last_level_data_seconds=0 + inplace_update_support=false + +[TableOptions/BlockBasedTable "_timer_state/processing_timer"] + num_file_reads_for_auto_readahead=2 + metadata_cache_options={unpartitioned_pinning=kFallback;partition_pinning=kFallback;top_level_index_pinning=kFallback;} + read_amp_bytes_per_bit=0 + verify_compression=false + format_version=5 + optimize_filters_for_memory=false + partition_filters=false + detect_filter_construct_corruption=false + initial_auto_readahead_size=8192 + max_auto_readahead_size=262144 + enable_index_compression=true + checksum=kXXH3 + index_block_restart_interval=1 + pin_top_level_index_and_filter=true + block_align=false + block_size=4096 + index_type=kBinarySearch + filter_policy=nullptr + metadata_block_size=4096 + no_block_cache=false + index_shortening=kShortenSeparators + whole_key_filtering=true + block_size_deviation=10 + data_block_index_type=kDataBlockBinarySearch + data_block_hash_table_util_ratio=0.750000 + cache_index_and_filter_blocks=true + prepopulate_block_cache=kDisable + block_restart_interval=16 + pin_l0_filter_and_index_blocks_in_cache=true + cache_index_and_filter_blocks_with_high_priority=true + flush_block_policy_factory=FlushBlockBySizePolicyFactory + + +[CFOptions "_timer_state/event_timer"] + bottommost_file_compaction_delay=0 + memtable_protection_bytes_per_key=0 + compression_per_level=kSnappyCompression + bottommost_compression=kDisableCompressionOption + sample_for_compression=0 + blob_garbage_collection_age_cutoff=0.250000 + blob_compression_type=kNoCompression + prepopulate_blob_cache=kDisable + blob_compaction_readahead_size=0 + level0_stop_writes_trigger=36 + min_blob_size=0 + last_level_temperature=kUnknown + compaction_options_universal={allow_trivial_move=false;stop_style=kCompactionStopStyleTotalSize;min_merge_width=2;compression_size_percent=-1;max_size_amplification_percent=200;incremental=false;max_merge_width=4294967295;size_ratio=1;} + target_file_size_base=67108864 + ignore_max_compaction_bytes_for_input=true + memtable_whole_key_filtering=false + blob_file_starting_level=0 + soft_pending_compaction_bytes_limit=68719476736 + max_write_buffer_number=2 + ttl=2592000 + compaction_options_fifo={file_temperature_age_thresholds=;allow_compaction=false;age_for_warm=0;max_table_files_size=1073741824;} + check_flush_compaction_key_order=true + memtable_huge_page_size=0 + max_successive_merges=0 + inplace_update_num_locks=10000 + enable_blob_garbage_collection=false + arena_block_size=1048576 + bottommost_compression_opts={use_zstd_dict_trainer=true;enabled=false;zstd_max_train_bytes=0;parallel_threads=1;max_compressed_bytes_per_kb=896;checksum=false;max_dict_bytes=0;strategy=0;max_dict_buffer_bytes=0;level=32767;window_bits=-14;} + target_file_size_multiplier=1 + max_bytes_for_level_multiplier_additional=1:1:1:1:1:1:1 + blob_garbage_collection_force_threshold=1.000000 + enable_blob_files=false + level0_slowdown_writes_trigger=20 + compression=kSnappyCompression + level0_file_num_compaction_trigger=4 + block_protection_bytes_per_key=0 + prefix_extractor=nullptr + max_bytes_for_level_multiplier=10.000000 + write_buffer_size=67108864 + disable_auto_compactions=false + max_compaction_bytes=1677721600 + memtable_max_range_deletions=0 + compression_opts={use_zstd_dict_trainer=true;enabled=false;zstd_max_train_bytes=0;parallel_threads=1;max_compressed_bytes_per_kb=896;checksum=false;max_dict_bytes=0;strategy=0;max_dict_buffer_bytes=0;level=32767;window_bits=-14;} + hard_pending_compaction_bytes_limit=274877906944 + blob_file_size=268435456 + periodic_compaction_seconds=2592000 + paranoid_file_checks=false + experimental_mempurge_threshold=0.000000 + memtable_prefix_bloom_size_ratio=0.000000 + max_bytes_for_level_base=268435456 + max_sequential_skip_in_iterations=8 + report_bg_io_stats=false + sst_partitioner_factory=nullptr + compaction_pri=kMinOverlappingRatio + compaction_style=kCompactionStyleLevel + compaction_filter_factory=nullptr + compaction_filter=nullptr + memtable_factory=SkipListFactory + comparator=leveldb.BytewiseComparator + bloom_locality=0 + min_write_buffer_number_to_merge=1 + table_factory=BlockBasedTable + max_write_buffer_size_to_maintain=0 + max_write_buffer_number_to_maintain=0 + optimize_filters_for_hits=false + default_temperature=kUnknown + preserve_internal_time_seconds=0 + force_consistency_checks=true + merge_operator={id=StringAppendTESTOperator;delimiter=,;} + num_levels=7 + level_compaction_dynamic_file_size=true + memtable_insert_with_hint_prefix_extractor=nullptr + level_compaction_dynamic_level_bytes=false + persist_user_defined_timestamps=true + preclude_last_level_data_seconds=0 + inplace_update_support=false + +[TableOptions/BlockBasedTable "_timer_state/event_timer"] + num_file_reads_for_auto_readahead=2 + metadata_cache_options={unpartitioned_pinning=kFallback;partition_pinning=kFallback;top_level_index_pinning=kFallback;} + read_amp_bytes_per_bit=0 + verify_compression=false + format_version=5 + optimize_filters_for_memory=false + partition_filters=false + detect_filter_construct_corruption=false + initial_auto_readahead_size=8192 + max_auto_readahead_size=262144 + enable_index_compression=true + checksum=kXXH3 + index_block_restart_interval=1 + pin_top_level_index_and_filter=true + block_align=false + block_size=4096 + index_type=kBinarySearch + filter_policy=nullptr + metadata_block_size=4096 + no_block_cache=false + index_shortening=kShortenSeparators + whole_key_filtering=true + block_size_deviation=10 + data_block_index_type=kDataBlockBinarySearch + data_block_hash_table_util_ratio=0.750000 + cache_index_and_filter_blocks=true + prepopulate_block_cache=kDisable + block_restart_interval=16 + pin_l0_filter_and_index_blocks_in_cache=true + cache_index_and_filter_blocks_with_high_priority=true + flush_block_policy_factory=FlushBlockBySizePolicyFactory + + +[CFOptions "state-name"] + bottommost_file_compaction_delay=0 + memtable_protection_bytes_per_key=0 + compression_per_level=kSnappyCompression + bottommost_compression=kDisableCompressionOption + sample_for_compression=0 + blob_garbage_collection_age_cutoff=0.250000 + blob_compression_type=kNoCompression + prepopulate_blob_cache=kDisable + blob_compaction_readahead_size=0 + level0_stop_writes_trigger=36 + min_blob_size=0 + last_level_temperature=kUnknown + compaction_options_universal={allow_trivial_move=false;stop_style=kCompactionStopStyleTotalSize;min_merge_width=2;compression_size_percent=-1;max_size_amplification_percent=200;incremental=false;max_merge_width=4294967295;size_ratio=1;} + target_file_size_base=67108864 + ignore_max_compaction_bytes_for_input=true + memtable_whole_key_filtering=false + blob_file_starting_level=0 + soft_pending_compaction_bytes_limit=68719476736 + max_write_buffer_number=2 + ttl=2592000 + compaction_options_fifo={file_temperature_age_thresholds=;allow_compaction=false;age_for_warm=0;max_table_files_size=1073741824;} + check_flush_compaction_key_order=true + memtable_huge_page_size=0 + max_successive_merges=0 + inplace_update_num_locks=10000 + enable_blob_garbage_collection=false + arena_block_size=1048576 + bottommost_compression_opts={use_zstd_dict_trainer=true;enabled=false;zstd_max_train_bytes=0;parallel_threads=1;max_compressed_bytes_per_kb=896;checksum=false;max_dict_bytes=0;strategy=0;max_dict_buffer_bytes=0;level=32767;window_bits=-14;} + target_file_size_multiplier=1 + max_bytes_for_level_multiplier_additional=1:1:1:1:1:1:1 + blob_garbage_collection_force_threshold=1.000000 + enable_blob_files=false + level0_slowdown_writes_trigger=20 + compression=kSnappyCompression + level0_file_num_compaction_trigger=4 + block_protection_bytes_per_key=0 + prefix_extractor=nullptr + max_bytes_for_level_multiplier=10.000000 + write_buffer_size=67108864 + disable_auto_compactions=false + max_compaction_bytes=1677721600 + memtable_max_range_deletions=0 + compression_opts={use_zstd_dict_trainer=true;enabled=false;zstd_max_train_bytes=0;parallel_threads=1;max_compressed_bytes_per_kb=896;checksum=false;max_dict_bytes=0;strategy=0;max_dict_buffer_bytes=0;level=32767;window_bits=-14;} + hard_pending_compaction_bytes_limit=274877906944 + blob_file_size=268435456 + periodic_compaction_seconds=2592000 + paranoid_file_checks=false + experimental_mempurge_threshold=0.000000 + memtable_prefix_bloom_size_ratio=0.000000 + max_bytes_for_level_base=268435456 + max_sequential_skip_in_iterations=8 + report_bg_io_stats=false + sst_partitioner_factory=nullptr + compaction_pri=kMinOverlappingRatio + compaction_style=kCompactionStyleLevel + compaction_filter_factory=nullptr + compaction_filter=nullptr + memtable_factory=SkipListFactory + comparator=leveldb.BytewiseComparator + bloom_locality=0 + min_write_buffer_number_to_merge=1 + table_factory=BlockBasedTable + max_write_buffer_size_to_maintain=0 + max_write_buffer_number_to_maintain=0 + optimize_filters_for_hits=false + default_temperature=kUnknown + preserve_internal_time_seconds=0 + force_consistency_checks=true + merge_operator={id=StringAppendTESTOperator;delimiter=,;} + num_levels=7 + level_compaction_dynamic_file_size=true + memtable_insert_with_hint_prefix_extractor=nullptr + level_compaction_dynamic_level_bytes=false + persist_user_defined_timestamps=true + preclude_last_level_data_seconds=0 + inplace_update_support=false + +[TableOptions/BlockBasedTable "state-name"] + num_file_reads_for_auto_readahead=2 + metadata_cache_options={unpartitioned_pinning=kFallback;partition_pinning=kFallback;top_level_index_pinning=kFallback;} + read_amp_bytes_per_bit=0 + verify_compression=false + format_version=5 + optimize_filters_for_memory=false + partition_filters=false + detect_filter_construct_corruption=false + initial_auto_readahead_size=8192 + max_auto_readahead_size=262144 + enable_index_compression=true + checksum=kXXH3 + index_block_restart_interval=1 + pin_top_level_index_and_filter=true + block_align=false + block_size=4096 + index_type=kBinarySearch + filter_policy=nullptr + metadata_block_size=4096 + no_block_cache=false + index_shortening=kShortenSeparators + whole_key_filtering=true + block_size_deviation=10 + data_block_index_type=kDataBlockBinarySearch + data_block_hash_table_util_ratio=0.750000 + cache_index_and_filter_blocks=true + prepopulate_block_cache=kDisable + block_restart_interval=16 + pin_l0_filter_and_index_blocks_in_cache=true + cache_index_and_filter_blocks_with_high_priority=true + flush_block_policy_factory=FlushBlockBySizePolicyFactory + diff --git a/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-checkpoint/b31ff795-33f9-46ab-9abe-d5c35655f495 b/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-checkpoint/b31ff795-33f9-46ab-9abe-d5c35655f495 new file mode 100644 index 0000000000000000000000000000000000000000..667ac8709a9d3de2e034e1259e5746e22c16f82d GIT binary patch literal 1414 zcmeH{K}*9h6vy8-^&kiycJSg&yczKuSY{5xDrK$8yp(5ocF{HoNjA_g?57Y+Go+Rc zZ@q|t1oFuH=a={R2LSfKk0DHyDH&=k7Q~(_Az%GQuoqk*b8niKPE?kerF5bumMwKf zDH(y4cqfxe)OMkq7aGCA$4(GD{Y9`zUyEG8_~Fx^AB34~%_&q}EBOQC2`#Z$$+AT_ z>25njBRI|*Y?E7uj?T4F1z9U(xefPd{zk4_-WzSW|Fb@ZL3_ l^Q%0~qKxO+JmIh#+!!pl-I)Erjc=nHo+i;`<0I(hzAqoB%1i(N literal 0 HcmV?d00001 diff --git a/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-checkpoint/b40ae522-462d-4a51-84bf-6c87ba43144c b/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-checkpoint/b40ae522-462d-4a51-84bf-6c87ba43144c new file mode 100644 index 0000000000000000000000000000000000000000..7ed4b7229e7797af0dae200af18d8d7cba873c84 GIT binary patch literal 1099 zcmah|Pj3@P6rV{PympKe;|8VSVg!|S(6?+k+4MJgC*R7V4f!mnA8GB z%#U*joRvkITgc>yWm0*tQujJ5O*%X>=z0v}PjEL{q^VJZzGfNkOEqRv%v>xjYu<<0 z%RboHdG6sFoPhQdq#CXCb8fjeRw1mgpj%@PL+RkQIkVKt=PWoUjXuyk&&SQ^9~zt7 zBjAQutr^CN^lrP|UEgXIVYaWYZEkFCwVcP$&>L@ewpx8YiiJ#loL~YMkf+XzIKb#7 z^(P#3n1lF|G{`b+V9FghhzouZvIqcnySvq@G_P9V9>>J687Z(;>BsA7nq?wO+F9oY zZ?B7ujrL6d(ca9~1Z-w}J?VBD=a-L+^Ha_pej+WxlclHh+-Z(tG`}q2P_rb3>_d50RoY5@I{oVVIug^slD!Av&$)~VdnWvz@r>m?cze_y{yPq-SO$Q%=(upZE<5g=$(r>Kw~Fq4DjS~$|2T}D|P_#nBRJO?cv z{e1A~VK5^eEl@q^v!bU$!;aR<6sK(^;ImFAa*aIAr2u{9n?w7DSO5L>a_7z8{{!$>RBr$P literal 0 HcmV?d00001 diff --git a/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-checkpoint/b56e42a8-7fb6-41e3-8014-1945ac5a3b0b b/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-checkpoint/b56e42a8-7fb6-41e3-8014-1945ac5a3b0b new file mode 100644 index 0000000000000000000000000000000000000000..95b1a6eeff5b849fab20a9279e95d35ecc547d2a GIT binary patch literal 1110 zcmah}O=}xR7@o1^Xjj?DQd9@Wy(o|#TF}&rRLjK}YBwq5ki=Ah)+uF~-F;UcJepZ% zMwXO&Adpl3LrPCQ_tf7|l7Eo=gnUp6J@lQGtiYGL&{ ztA`A4`LG-#^jWUN@u z$3o7T$X2dZHWeR3?8F#MY#n#-C7gkB3#1lojSFtL(?%jJF`>h`gQ>9at-g4Ps+SB{ zE3_IaUKI0I@SMiFa0u8bW~--hBAngtbo+bl(#?MF)?jC_*R~E_!)U(0z1JS|S)7T~ z#R&$m9(inC7JC@2g!+hs@_oquOPb_47O><_EW{GI=vmR_z&ldq^IPVm5U|!m4B4y!B zt-0becXNh2Ai+P|pMDM^j5;m-`}z-~+Iju{iv&&TxR4Cj!Z@b$+=A;}EGl_+_w6fk sb@gIV3sd^X>V_|>OQX9lhrd+*skVEcdgyU3aa{KCu= z#lpbI#K6MvM@Q`^8v`RJ12Y>7gWTUAht2S7XJTRIU|~4H$as>GtGFbwBvm&rF*g-t zXy?Vpj@dv%S%7A7voNMJaBbueVrGBC~ZJIs^(1WUb!8C4vZ&I7o7bE=F;$wumhm=`y5GUnSr`G927} z-~S%~JONDLIr?L$@gtHUgflr$R_wUUbs;OIbIq%zP+E%5Qj20+ZHgs_X}L}NCH(T0 zuS;GjE=9f;-&`j80NRI!nZeX8vfs|SLpm(0ecyY>=rrJwY!}(yL}ZGBb&bMcO=tfw zEbf7FW{9n)^!X9sb%g=5J!U__G~UJe+X#A}#7Ji&Jt1W`=6y8OVlt61(zW&v${$w; literal 0 HcmV?d00001 diff --git a/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-checkpoint/c1c8b265-bad3-450e-824f-067ef47e7827 b/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-checkpoint/c1c8b265-bad3-450e-824f-067ef47e7827 new file mode 100644 index 00000000000000..aa5bb8ea50905a --- /dev/null +++ b/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-checkpoint/c1c8b265-bad3-450e-824f-067ef47e7827 @@ -0,0 +1 @@ +MANIFEST-000005 diff --git a/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-checkpoint/ccec00d0-f5d5-4914-8d3b-d2a35c4bc1fd b/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-checkpoint/ccec00d0-f5d5-4914-8d3b-d2a35c4bc1fd new file mode 100644 index 00000000000000..aa5bb8ea50905a --- /dev/null +++ b/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-checkpoint/ccec00d0-f5d5-4914-8d3b-d2a35c4bc1fd @@ -0,0 +1 @@ +MANIFEST-000005 diff --git a/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-checkpoint/d18f7d4f-2fa2-4d17-98bb-6cef47d6727b b/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-checkpoint/d18f7d4f-2fa2-4d17-98bb-6cef47d6727b new file mode 100644 index 00000000000000..00c77db5b298c5 --- /dev/null +++ b/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-checkpoint/d18f7d4f-2fa2-4d17-98bb-6cef47d6727b @@ -0,0 +1,541 @@ +# This is a RocksDB option file. +# +# For detailed file format spec, please refer to the example file +# in examples/rocksdb_option_file_example.ini +# + +[Version] + rocksdb_version=8.10.0 + options_file_version=1.1 + +[DBOptions] + max_background_flushes=-1 + compaction_readahead_size=2097152 + strict_bytes_per_sync=false + wal_bytes_per_sync=0 + max_open_files=-1 + stats_history_buffer_size=1048576 + max_total_wal_size=0 + stats_persist_period_sec=600 + stats_dump_period_sec=0 + avoid_flush_during_shutdown=true + max_subcompactions=1 + bytes_per_sync=0 + delayed_write_rate=16777216 + max_background_compactions=-1 + max_background_jobs=2 + delete_obsolete_files_period_micros=21600000000 + writable_file_max_buffer_size=1048576 + file_checksum_gen_factory=nullptr + allow_data_in_errors=false + max_bgerror_resume_count=2147483647 + best_efforts_recovery=false + write_dbid_to_manifest=false + atomic_flush=false + manual_wal_flush=false + two_write_queues=false + avoid_flush_during_recovery=false + dump_malloc_stats=false + info_log_level=INFO_LEVEL + write_thread_slow_yield_usec=3 + unordered_write=false + allow_ingest_behind=false + fail_if_options_file_error=true + persist_stats_to_disk=false + WAL_ttl_seconds=0 + bgerror_resume_retry_interval=1000000 + allow_concurrent_memtable_write=true + paranoid_checks=true + WAL_size_limit_MB=0 + lowest_used_cache_tier=kNonVolatileBlockTier + keep_log_file_num=4 + table_cache_numshardbits=6 + max_file_opening_threads=16 + random_access_max_buffer_size=1048576 + log_readahead_size=0 + enable_pipelined_write=false + wal_recovery_mode=kPointInTimeRecovery + db_write_buffer_size=0 + allow_2pc=false + skip_checking_sst_file_sizes_on_db_open=false + skip_stats_update_on_db_open=false + recycle_log_file_num=0 + db_host_id=__hostname__ + track_and_verify_wals_in_manifest=false + use_fsync=false + wal_compression=kNoCompression + compaction_verify_record_count=true + error_if_exists=false + manifest_preallocation_size=4194304 + is_fd_close_on_exec=true + enable_write_thread_adaptive_yield=true + enable_thread_tracking=false + avoid_unnecessary_blocking_io=false + allow_fallocate=true + max_log_file_size=26214400 + advise_random_on_open=true + create_missing_column_families=false + max_write_batch_group_size_bytes=1048576 + use_adaptive_mutex=false + wal_filter=nullptr + create_if_missing=true + enforce_single_del_contracts=true + allow_mmap_writes=false + access_hint_on_compaction_start=NORMAL + verify_sst_unique_id_in_manifest=true + log_file_time_to_roll=0 + use_direct_io_for_flush_and_compaction=false + flush_verify_memtable_count=true + max_manifest_file_size=1073741824 + write_thread_max_yield_usec=100 + use_direct_reads=false + allow_mmap_reads=false + + +[CFOptions "default"] + bottommost_file_compaction_delay=0 + memtable_protection_bytes_per_key=0 + compression_per_level=kSnappyCompression + bottommost_compression=kDisableCompressionOption + sample_for_compression=0 + blob_garbage_collection_age_cutoff=0.250000 + blob_compression_type=kNoCompression + prepopulate_blob_cache=kDisable + blob_compaction_readahead_size=0 + level0_stop_writes_trigger=36 + min_blob_size=0 + last_level_temperature=kUnknown + compaction_options_universal={allow_trivial_move=false;stop_style=kCompactionStopStyleTotalSize;min_merge_width=2;compression_size_percent=-1;max_size_amplification_percent=200;incremental=false;max_merge_width=4294967295;size_ratio=1;} + target_file_size_base=67108864 + ignore_max_compaction_bytes_for_input=true + memtable_whole_key_filtering=false + blob_file_starting_level=0 + soft_pending_compaction_bytes_limit=68719476736 + max_write_buffer_number=2 + ttl=2592000 + compaction_options_fifo={file_temperature_age_thresholds=;allow_compaction=false;age_for_warm=0;max_table_files_size=1073741824;} + check_flush_compaction_key_order=true + memtable_huge_page_size=0 + max_successive_merges=0 + inplace_update_num_locks=10000 + enable_blob_garbage_collection=false + arena_block_size=1048576 + bottommost_compression_opts={use_zstd_dict_trainer=true;enabled=false;zstd_max_train_bytes=0;parallel_threads=1;max_compressed_bytes_per_kb=896;checksum=false;max_dict_bytes=0;strategy=0;max_dict_buffer_bytes=0;level=32767;window_bits=-14;} + target_file_size_multiplier=1 + max_bytes_for_level_multiplier_additional=1:1:1:1:1:1:1 + blob_garbage_collection_force_threshold=1.000000 + enable_blob_files=false + level0_slowdown_writes_trigger=20 + compression=kSnappyCompression + level0_file_num_compaction_trigger=4 + block_protection_bytes_per_key=0 + prefix_extractor=nullptr + max_bytes_for_level_multiplier=10.000000 + write_buffer_size=67108864 + disable_auto_compactions=false + max_compaction_bytes=1677721600 + memtable_max_range_deletions=0 + compression_opts={use_zstd_dict_trainer=true;enabled=false;zstd_max_train_bytes=0;parallel_threads=1;max_compressed_bytes_per_kb=896;checksum=false;max_dict_bytes=0;strategy=0;max_dict_buffer_bytes=0;level=32767;window_bits=-14;} + hard_pending_compaction_bytes_limit=274877906944 + blob_file_size=268435456 + periodic_compaction_seconds=2592000 + paranoid_file_checks=false + experimental_mempurge_threshold=0.000000 + memtable_prefix_bloom_size_ratio=0.000000 + max_bytes_for_level_base=268435456 + max_sequential_skip_in_iterations=8 + report_bg_io_stats=false + sst_partitioner_factory=nullptr + compaction_pri=kMinOverlappingRatio + compaction_style=kCompactionStyleLevel + compaction_filter_factory=nullptr + compaction_filter=nullptr + memtable_factory=SkipListFactory + comparator=leveldb.BytewiseComparator + bloom_locality=0 + min_write_buffer_number_to_merge=1 + table_factory=BlockBasedTable + max_write_buffer_size_to_maintain=0 + max_write_buffer_number_to_maintain=0 + optimize_filters_for_hits=false + default_temperature=kUnknown + preserve_internal_time_seconds=0 + force_consistency_checks=true + merge_operator={id=StringAppendTESTOperator;delimiter=,;} + num_levels=7 + level_compaction_dynamic_file_size=true + memtable_insert_with_hint_prefix_extractor=nullptr + level_compaction_dynamic_level_bytes=false + persist_user_defined_timestamps=true + preclude_last_level_data_seconds=0 + inplace_update_support=false + +[TableOptions/BlockBasedTable "default"] + num_file_reads_for_auto_readahead=2 + metadata_cache_options={unpartitioned_pinning=kFallback;partition_pinning=kFallback;top_level_index_pinning=kFallback;} + read_amp_bytes_per_bit=0 + verify_compression=false + format_version=5 + optimize_filters_for_memory=false + partition_filters=false + detect_filter_construct_corruption=false + initial_auto_readahead_size=8192 + max_auto_readahead_size=262144 + enable_index_compression=true + checksum=kXXH3 + index_block_restart_interval=1 + pin_top_level_index_and_filter=true + block_align=false + block_size=4096 + index_type=kBinarySearch + filter_policy=nullptr + metadata_block_size=4096 + no_block_cache=false + index_shortening=kShortenSeparators + whole_key_filtering=true + block_size_deviation=10 + data_block_index_type=kDataBlockBinarySearch + data_block_hash_table_util_ratio=0.750000 + cache_index_and_filter_blocks=true + prepopulate_block_cache=kDisable + block_restart_interval=16 + pin_l0_filter_and_index_blocks_in_cache=true + cache_index_and_filter_blocks_with_high_priority=true + flush_block_policy_factory=FlushBlockBySizePolicyFactory + + +[CFOptions "_timer_state/processing_timer"] + bottommost_file_compaction_delay=0 + memtable_protection_bytes_per_key=0 + compression_per_level=kSnappyCompression + bottommost_compression=kDisableCompressionOption + sample_for_compression=0 + blob_garbage_collection_age_cutoff=0.250000 + blob_compression_type=kNoCompression + prepopulate_blob_cache=kDisable + blob_compaction_readahead_size=0 + level0_stop_writes_trigger=36 + min_blob_size=0 + last_level_temperature=kUnknown + compaction_options_universal={allow_trivial_move=false;stop_style=kCompactionStopStyleTotalSize;min_merge_width=2;compression_size_percent=-1;max_size_amplification_percent=200;incremental=false;max_merge_width=4294967295;size_ratio=1;} + target_file_size_base=67108864 + ignore_max_compaction_bytes_for_input=true + memtable_whole_key_filtering=false + blob_file_starting_level=0 + soft_pending_compaction_bytes_limit=68719476736 + max_write_buffer_number=2 + ttl=2592000 + compaction_options_fifo={file_temperature_age_thresholds=;allow_compaction=false;age_for_warm=0;max_table_files_size=1073741824;} + check_flush_compaction_key_order=true + memtable_huge_page_size=0 + max_successive_merges=0 + inplace_update_num_locks=10000 + enable_blob_garbage_collection=false + arena_block_size=1048576 + bottommost_compression_opts={use_zstd_dict_trainer=true;enabled=false;zstd_max_train_bytes=0;parallel_threads=1;max_compressed_bytes_per_kb=896;checksum=false;max_dict_bytes=0;strategy=0;max_dict_buffer_bytes=0;level=32767;window_bits=-14;} + target_file_size_multiplier=1 + max_bytes_for_level_multiplier_additional=1:1:1:1:1:1:1 + blob_garbage_collection_force_threshold=1.000000 + enable_blob_files=false + level0_slowdown_writes_trigger=20 + compression=kSnappyCompression + level0_file_num_compaction_trigger=4 + block_protection_bytes_per_key=0 + prefix_extractor=nullptr + max_bytes_for_level_multiplier=10.000000 + write_buffer_size=67108864 + disable_auto_compactions=false + max_compaction_bytes=1677721600 + memtable_max_range_deletions=0 + compression_opts={use_zstd_dict_trainer=true;enabled=false;zstd_max_train_bytes=0;parallel_threads=1;max_compressed_bytes_per_kb=896;checksum=false;max_dict_bytes=0;strategy=0;max_dict_buffer_bytes=0;level=32767;window_bits=-14;} + hard_pending_compaction_bytes_limit=274877906944 + blob_file_size=268435456 + periodic_compaction_seconds=2592000 + paranoid_file_checks=false + experimental_mempurge_threshold=0.000000 + memtable_prefix_bloom_size_ratio=0.000000 + max_bytes_for_level_base=268435456 + max_sequential_skip_in_iterations=8 + report_bg_io_stats=false + sst_partitioner_factory=nullptr + compaction_pri=kMinOverlappingRatio + compaction_style=kCompactionStyleLevel + compaction_filter_factory=nullptr + compaction_filter=nullptr + memtable_factory=SkipListFactory + comparator=leveldb.BytewiseComparator + bloom_locality=0 + min_write_buffer_number_to_merge=1 + table_factory=BlockBasedTable + max_write_buffer_size_to_maintain=0 + max_write_buffer_number_to_maintain=0 + optimize_filters_for_hits=false + default_temperature=kUnknown + preserve_internal_time_seconds=0 + force_consistency_checks=true + merge_operator={id=StringAppendTESTOperator;delimiter=,;} + num_levels=7 + level_compaction_dynamic_file_size=true + memtable_insert_with_hint_prefix_extractor=nullptr + level_compaction_dynamic_level_bytes=false + persist_user_defined_timestamps=true + preclude_last_level_data_seconds=0 + inplace_update_support=false + +[TableOptions/BlockBasedTable "_timer_state/processing_timer"] + num_file_reads_for_auto_readahead=2 + metadata_cache_options={unpartitioned_pinning=kFallback;partition_pinning=kFallback;top_level_index_pinning=kFallback;} + read_amp_bytes_per_bit=0 + verify_compression=false + format_version=5 + optimize_filters_for_memory=false + partition_filters=false + detect_filter_construct_corruption=false + initial_auto_readahead_size=8192 + max_auto_readahead_size=262144 + enable_index_compression=true + checksum=kXXH3 + index_block_restart_interval=1 + pin_top_level_index_and_filter=true + block_align=false + block_size=4096 + index_type=kBinarySearch + filter_policy=nullptr + metadata_block_size=4096 + no_block_cache=false + index_shortening=kShortenSeparators + whole_key_filtering=true + block_size_deviation=10 + data_block_index_type=kDataBlockBinarySearch + data_block_hash_table_util_ratio=0.750000 + cache_index_and_filter_blocks=true + prepopulate_block_cache=kDisable + block_restart_interval=16 + pin_l0_filter_and_index_blocks_in_cache=true + cache_index_and_filter_blocks_with_high_priority=true + flush_block_policy_factory=FlushBlockBySizePolicyFactory + + +[CFOptions "_timer_state/event_timer"] + bottommost_file_compaction_delay=0 + memtable_protection_bytes_per_key=0 + compression_per_level=kSnappyCompression + bottommost_compression=kDisableCompressionOption + sample_for_compression=0 + blob_garbage_collection_age_cutoff=0.250000 + blob_compression_type=kNoCompression + prepopulate_blob_cache=kDisable + blob_compaction_readahead_size=0 + level0_stop_writes_trigger=36 + min_blob_size=0 + last_level_temperature=kUnknown + compaction_options_universal={allow_trivial_move=false;stop_style=kCompactionStopStyleTotalSize;min_merge_width=2;compression_size_percent=-1;max_size_amplification_percent=200;incremental=false;max_merge_width=4294967295;size_ratio=1;} + target_file_size_base=67108864 + ignore_max_compaction_bytes_for_input=true + memtable_whole_key_filtering=false + blob_file_starting_level=0 + soft_pending_compaction_bytes_limit=68719476736 + max_write_buffer_number=2 + ttl=2592000 + compaction_options_fifo={file_temperature_age_thresholds=;allow_compaction=false;age_for_warm=0;max_table_files_size=1073741824;} + check_flush_compaction_key_order=true + memtable_huge_page_size=0 + max_successive_merges=0 + inplace_update_num_locks=10000 + enable_blob_garbage_collection=false + arena_block_size=1048576 + bottommost_compression_opts={use_zstd_dict_trainer=true;enabled=false;zstd_max_train_bytes=0;parallel_threads=1;max_compressed_bytes_per_kb=896;checksum=false;max_dict_bytes=0;strategy=0;max_dict_buffer_bytes=0;level=32767;window_bits=-14;} + target_file_size_multiplier=1 + max_bytes_for_level_multiplier_additional=1:1:1:1:1:1:1 + blob_garbage_collection_force_threshold=1.000000 + enable_blob_files=false + level0_slowdown_writes_trigger=20 + compression=kSnappyCompression + level0_file_num_compaction_trigger=4 + block_protection_bytes_per_key=0 + prefix_extractor=nullptr + max_bytes_for_level_multiplier=10.000000 + write_buffer_size=67108864 + disable_auto_compactions=false + max_compaction_bytes=1677721600 + memtable_max_range_deletions=0 + compression_opts={use_zstd_dict_trainer=true;enabled=false;zstd_max_train_bytes=0;parallel_threads=1;max_compressed_bytes_per_kb=896;checksum=false;max_dict_bytes=0;strategy=0;max_dict_buffer_bytes=0;level=32767;window_bits=-14;} + hard_pending_compaction_bytes_limit=274877906944 + blob_file_size=268435456 + periodic_compaction_seconds=2592000 + paranoid_file_checks=false + experimental_mempurge_threshold=0.000000 + memtable_prefix_bloom_size_ratio=0.000000 + max_bytes_for_level_base=268435456 + max_sequential_skip_in_iterations=8 + report_bg_io_stats=false + sst_partitioner_factory=nullptr + compaction_pri=kMinOverlappingRatio + compaction_style=kCompactionStyleLevel + compaction_filter_factory=nullptr + compaction_filter=nullptr + memtable_factory=SkipListFactory + comparator=leveldb.BytewiseComparator + bloom_locality=0 + min_write_buffer_number_to_merge=1 + table_factory=BlockBasedTable + max_write_buffer_size_to_maintain=0 + max_write_buffer_number_to_maintain=0 + optimize_filters_for_hits=false + default_temperature=kUnknown + preserve_internal_time_seconds=0 + force_consistency_checks=true + merge_operator={id=StringAppendTESTOperator;delimiter=,;} + num_levels=7 + level_compaction_dynamic_file_size=true + memtable_insert_with_hint_prefix_extractor=nullptr + level_compaction_dynamic_level_bytes=false + persist_user_defined_timestamps=true + preclude_last_level_data_seconds=0 + inplace_update_support=false + +[TableOptions/BlockBasedTable "_timer_state/event_timer"] + num_file_reads_for_auto_readahead=2 + metadata_cache_options={unpartitioned_pinning=kFallback;partition_pinning=kFallback;top_level_index_pinning=kFallback;} + read_amp_bytes_per_bit=0 + verify_compression=false + format_version=5 + optimize_filters_for_memory=false + partition_filters=false + detect_filter_construct_corruption=false + initial_auto_readahead_size=8192 + max_auto_readahead_size=262144 + enable_index_compression=true + checksum=kXXH3 + index_block_restart_interval=1 + pin_top_level_index_and_filter=true + block_align=false + block_size=4096 + index_type=kBinarySearch + filter_policy=nullptr + metadata_block_size=4096 + no_block_cache=false + index_shortening=kShortenSeparators + whole_key_filtering=true + block_size_deviation=10 + data_block_index_type=kDataBlockBinarySearch + data_block_hash_table_util_ratio=0.750000 + cache_index_and_filter_blocks=true + prepopulate_block_cache=kDisable + block_restart_interval=16 + pin_l0_filter_and_index_blocks_in_cache=true + cache_index_and_filter_blocks_with_high_priority=true + flush_block_policy_factory=FlushBlockBySizePolicyFactory + + +[CFOptions "state-name"] + bottommost_file_compaction_delay=0 + memtable_protection_bytes_per_key=0 + compression_per_level=kSnappyCompression + bottommost_compression=kDisableCompressionOption + sample_for_compression=0 + blob_garbage_collection_age_cutoff=0.250000 + blob_compression_type=kNoCompression + prepopulate_blob_cache=kDisable + blob_compaction_readahead_size=0 + level0_stop_writes_trigger=36 + min_blob_size=0 + last_level_temperature=kUnknown + compaction_options_universal={allow_trivial_move=false;stop_style=kCompactionStopStyleTotalSize;min_merge_width=2;compression_size_percent=-1;max_size_amplification_percent=200;incremental=false;max_merge_width=4294967295;size_ratio=1;} + target_file_size_base=67108864 + ignore_max_compaction_bytes_for_input=true + memtable_whole_key_filtering=false + blob_file_starting_level=0 + soft_pending_compaction_bytes_limit=68719476736 + max_write_buffer_number=2 + ttl=2592000 + compaction_options_fifo={file_temperature_age_thresholds=;allow_compaction=false;age_for_warm=0;max_table_files_size=1073741824;} + check_flush_compaction_key_order=true + memtable_huge_page_size=0 + max_successive_merges=0 + inplace_update_num_locks=10000 + enable_blob_garbage_collection=false + arena_block_size=1048576 + bottommost_compression_opts={use_zstd_dict_trainer=true;enabled=false;zstd_max_train_bytes=0;parallel_threads=1;max_compressed_bytes_per_kb=896;checksum=false;max_dict_bytes=0;strategy=0;max_dict_buffer_bytes=0;level=32767;window_bits=-14;} + target_file_size_multiplier=1 + max_bytes_for_level_multiplier_additional=1:1:1:1:1:1:1 + blob_garbage_collection_force_threshold=1.000000 + enable_blob_files=false + level0_slowdown_writes_trigger=20 + compression=kSnappyCompression + level0_file_num_compaction_trigger=4 + block_protection_bytes_per_key=0 + prefix_extractor=nullptr + max_bytes_for_level_multiplier=10.000000 + write_buffer_size=67108864 + disable_auto_compactions=false + max_compaction_bytes=1677721600 + memtable_max_range_deletions=0 + compression_opts={use_zstd_dict_trainer=true;enabled=false;zstd_max_train_bytes=0;parallel_threads=1;max_compressed_bytes_per_kb=896;checksum=false;max_dict_bytes=0;strategy=0;max_dict_buffer_bytes=0;level=32767;window_bits=-14;} + hard_pending_compaction_bytes_limit=274877906944 + blob_file_size=268435456 + periodic_compaction_seconds=2592000 + paranoid_file_checks=false + experimental_mempurge_threshold=0.000000 + memtable_prefix_bloom_size_ratio=0.000000 + max_bytes_for_level_base=268435456 + max_sequential_skip_in_iterations=8 + report_bg_io_stats=false + sst_partitioner_factory=nullptr + compaction_pri=kMinOverlappingRatio + compaction_style=kCompactionStyleLevel + compaction_filter_factory=nullptr + compaction_filter=nullptr + memtable_factory=SkipListFactory + comparator=leveldb.BytewiseComparator + bloom_locality=0 + min_write_buffer_number_to_merge=1 + table_factory=BlockBasedTable + max_write_buffer_size_to_maintain=0 + max_write_buffer_number_to_maintain=0 + optimize_filters_for_hits=false + default_temperature=kUnknown + preserve_internal_time_seconds=0 + force_consistency_checks=true + merge_operator={id=StringAppendTESTOperator;delimiter=,;} + num_levels=7 + level_compaction_dynamic_file_size=true + memtable_insert_with_hint_prefix_extractor=nullptr + level_compaction_dynamic_level_bytes=false + persist_user_defined_timestamps=true + preclude_last_level_data_seconds=0 + inplace_update_support=false + +[TableOptions/BlockBasedTable "state-name"] + num_file_reads_for_auto_readahead=2 + metadata_cache_options={unpartitioned_pinning=kFallback;partition_pinning=kFallback;top_level_index_pinning=kFallback;} + read_amp_bytes_per_bit=0 + verify_compression=false + format_version=5 + optimize_filters_for_memory=false + partition_filters=false + detect_filter_construct_corruption=false + initial_auto_readahead_size=8192 + max_auto_readahead_size=262144 + enable_index_compression=true + checksum=kXXH3 + index_block_restart_interval=1 + pin_top_level_index_and_filter=true + block_align=false + block_size=4096 + index_type=kBinarySearch + filter_policy=nullptr + metadata_block_size=4096 + no_block_cache=false + index_shortening=kShortenSeparators + whole_key_filtering=true + block_size_deviation=10 + data_block_index_type=kDataBlockBinarySearch + data_block_hash_table_util_ratio=0.750000 + cache_index_and_filter_blocks=true + prepopulate_block_cache=kDisable + block_restart_interval=16 + pin_l0_filter_and_index_blocks_in_cache=true + cache_index_and_filter_blocks_with_high_priority=true + flush_block_policy_factory=FlushBlockBySizePolicyFactory + diff --git a/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-checkpoint/d4edb439-a170-4dac-b979-bebbcec9e1e8 b/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-checkpoint/d4edb439-a170-4dac-b979-bebbcec9e1e8 new file mode 100644 index 0000000000000000000000000000000000000000..268aefd0ede0dcf3d7b2f1bf2dc2b704c0e3ef4c GIT binary patch literal 260 zcmZS8)^KKEU^I2G?@(Z1WR%KDElbTwNz!wwEJ-cTEKYUK&n-wSN-W7Q>U3aa{KCu= z#lpbI#K6MvM@Q`^8v`RJ12Y>7gWTUAht2S7XJTRIU|~4H$as>GtGFbwBvm&rF*g-t zXsnM+MK;h-7NA+&EKKPPTzfc#m>6JykrBdz3o(Km00xXqtgN3t|GdP;2BCNv8QB>) z*hBNO^YY8{cm!DM<3syBZq@I9uOGHFL+=+q(*zDipc7P;dV*MSOOJ_Lyx+C3Z64N zMN$Ka=+Q(-2S%vY+-#Y2w=|k=L;nw43#Uj^%T8O-gtdk2Q^CoRu@j25A#$P(CbEt> zIG184!Xj^Wxe-O%;bF*^3zPPZsT(J&aL#w|sw_ItnUc^PyMKK1j9(iCLk35W4LjA!( z`DXCHNu4CYDn{Ing(%}^E;9#UR%*+YLiv;d=CDGF#Rv|{3D>VflP^Jiv07i6Yg8}9 zjkzjI8jUJniszH1WN~4>!KM!$+tSvJI9J$?;I?|5H7{wsU0pMp;=q`ko;qv??HHL} zzq`4*wsCWQW8>Q9`CGLccN%N;Qhr=3>YM+4_t&TWVS#Yw7`5U7)Cva(NN_lJ9HR}w zL*qDMpv^4vA#2yO4uk{;pOJ!z66p;XRDx=`t)Os_Xwznn?tt;*3BnmNkdRl0uoSyw zd4a&J=D2sLHb+?+Pp!n^p z>$h+EXT-xvqB?Dw)szX@l471sxiCOr4pS-sdxSeTs`9!9Ux3_roGa z?PmUc{U?hP!}|SS5Ka@vgrv9|#!;Ol7F=z#t*;+8J_Ltyd)tbu{kM&I7{ aUW`2pE49-e`p-9x??2!Fc=BfT>(k#(wp`@^ literal 0 HcmV?d00001 diff --git a/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-checkpoint/e5ef7089-6903-460b-8d27-79dedce80e6e b/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-checkpoint/e5ef7089-6903-460b-8d27-79dedce80e6e new file mode 100644 index 00000000000000..0e36dbd4cdcd04 --- /dev/null +++ b/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-checkpoint/e5ef7089-6903-460b-8d27-79dedce80e6e @@ -0,0 +1,429 @@ +# This is a RocksDB option file. +# +# For detailed file format spec, please refer to the example file +# in examples/rocksdb_option_file_example.ini +# + +[Version] + rocksdb_version=8.10.0 + options_file_version=1.1 + +[DBOptions] + max_background_flushes=-1 + compaction_readahead_size=2097152 + strict_bytes_per_sync=false + wal_bytes_per_sync=0 + max_open_files=-1 + stats_history_buffer_size=1048576 + max_total_wal_size=0 + stats_persist_period_sec=600 + stats_dump_period_sec=0 + avoid_flush_during_shutdown=true + max_subcompactions=1 + bytes_per_sync=0 + delayed_write_rate=16777216 + max_background_compactions=-1 + max_background_jobs=2 + delete_obsolete_files_period_micros=21600000000 + writable_file_max_buffer_size=1048576 + file_checksum_gen_factory=nullptr + allow_data_in_errors=false + max_bgerror_resume_count=2147483647 + best_efforts_recovery=false + write_dbid_to_manifest=false + atomic_flush=false + manual_wal_flush=false + two_write_queues=false + avoid_flush_during_recovery=false + dump_malloc_stats=false + info_log_level=INFO_LEVEL + write_thread_slow_yield_usec=3 + unordered_write=false + allow_ingest_behind=false + fail_if_options_file_error=true + persist_stats_to_disk=false + WAL_ttl_seconds=0 + bgerror_resume_retry_interval=1000000 + allow_concurrent_memtable_write=true + paranoid_checks=true + WAL_size_limit_MB=0 + lowest_used_cache_tier=kNonVolatileBlockTier + keep_log_file_num=4 + table_cache_numshardbits=6 + max_file_opening_threads=16 + random_access_max_buffer_size=1048576 + log_readahead_size=0 + enable_pipelined_write=false + wal_recovery_mode=kPointInTimeRecovery + db_write_buffer_size=0 + allow_2pc=false + skip_checking_sst_file_sizes_on_db_open=false + skip_stats_update_on_db_open=false + recycle_log_file_num=0 + db_host_id=__hostname__ + track_and_verify_wals_in_manifest=false + use_fsync=false + wal_compression=kNoCompression + compaction_verify_record_count=true + error_if_exists=false + manifest_preallocation_size=4194304 + is_fd_close_on_exec=true + enable_write_thread_adaptive_yield=true + enable_thread_tracking=false + avoid_unnecessary_blocking_io=false + allow_fallocate=true + max_log_file_size=26214400 + advise_random_on_open=true + create_missing_column_families=false + max_write_batch_group_size_bytes=1048576 + use_adaptive_mutex=false + wal_filter=nullptr + create_if_missing=true + enforce_single_del_contracts=true + allow_mmap_writes=false + access_hint_on_compaction_start=NORMAL + verify_sst_unique_id_in_manifest=true + log_file_time_to_roll=0 + use_direct_io_for_flush_and_compaction=false + flush_verify_memtable_count=true + max_manifest_file_size=1073741824 + write_thread_max_yield_usec=100 + use_direct_reads=false + allow_mmap_reads=false + + +[CFOptions "default"] + bottommost_file_compaction_delay=0 + memtable_protection_bytes_per_key=0 + compression_per_level=kSnappyCompression + bottommost_compression=kDisableCompressionOption + sample_for_compression=0 + blob_garbage_collection_age_cutoff=0.250000 + blob_compression_type=kNoCompression + prepopulate_blob_cache=kDisable + blob_compaction_readahead_size=0 + level0_stop_writes_trigger=36 + min_blob_size=0 + last_level_temperature=kUnknown + compaction_options_universal={allow_trivial_move=false;stop_style=kCompactionStopStyleTotalSize;min_merge_width=2;compression_size_percent=-1;max_size_amplification_percent=200;incremental=false;max_merge_width=4294967295;size_ratio=1;} + target_file_size_base=67108864 + ignore_max_compaction_bytes_for_input=true + memtable_whole_key_filtering=false + blob_file_starting_level=0 + soft_pending_compaction_bytes_limit=68719476736 + max_write_buffer_number=2 + ttl=2592000 + compaction_options_fifo={file_temperature_age_thresholds=;allow_compaction=false;age_for_warm=0;max_table_files_size=1073741824;} + check_flush_compaction_key_order=true + memtable_huge_page_size=0 + max_successive_merges=0 + inplace_update_num_locks=10000 + enable_blob_garbage_collection=false + arena_block_size=1048576 + bottommost_compression_opts={use_zstd_dict_trainer=true;enabled=false;zstd_max_train_bytes=0;parallel_threads=1;max_compressed_bytes_per_kb=896;checksum=false;max_dict_bytes=0;strategy=0;max_dict_buffer_bytes=0;level=32767;window_bits=-14;} + target_file_size_multiplier=1 + max_bytes_for_level_multiplier_additional=1:1:1:1:1:1:1 + blob_garbage_collection_force_threshold=1.000000 + enable_blob_files=false + level0_slowdown_writes_trigger=20 + compression=kSnappyCompression + level0_file_num_compaction_trigger=4 + block_protection_bytes_per_key=0 + prefix_extractor=nullptr + max_bytes_for_level_multiplier=10.000000 + write_buffer_size=67108864 + disable_auto_compactions=false + max_compaction_bytes=1677721600 + memtable_max_range_deletions=0 + compression_opts={use_zstd_dict_trainer=true;enabled=false;zstd_max_train_bytes=0;parallel_threads=1;max_compressed_bytes_per_kb=896;checksum=false;max_dict_bytes=0;strategy=0;max_dict_buffer_bytes=0;level=32767;window_bits=-14;} + hard_pending_compaction_bytes_limit=274877906944 + blob_file_size=268435456 + periodic_compaction_seconds=2592000 + paranoid_file_checks=false + experimental_mempurge_threshold=0.000000 + memtable_prefix_bloom_size_ratio=0.000000 + max_bytes_for_level_base=268435456 + max_sequential_skip_in_iterations=8 + report_bg_io_stats=false + sst_partitioner_factory=nullptr + compaction_pri=kMinOverlappingRatio + compaction_style=kCompactionStyleLevel + compaction_filter_factory=nullptr + compaction_filter=nullptr + memtable_factory=SkipListFactory + comparator=leveldb.BytewiseComparator + bloom_locality=0 + min_write_buffer_number_to_merge=1 + table_factory=BlockBasedTable + max_write_buffer_size_to_maintain=0 + max_write_buffer_number_to_maintain=0 + optimize_filters_for_hits=false + default_temperature=kUnknown + preserve_internal_time_seconds=0 + force_consistency_checks=true + merge_operator={id=StringAppendTESTOperator;delimiter=,;} + num_levels=7 + level_compaction_dynamic_file_size=true + memtable_insert_with_hint_prefix_extractor=nullptr + level_compaction_dynamic_level_bytes=false + persist_user_defined_timestamps=true + preclude_last_level_data_seconds=0 + inplace_update_support=false + +[TableOptions/BlockBasedTable "default"] + num_file_reads_for_auto_readahead=2 + metadata_cache_options={unpartitioned_pinning=kFallback;partition_pinning=kFallback;top_level_index_pinning=kFallback;} + read_amp_bytes_per_bit=0 + verify_compression=false + format_version=5 + optimize_filters_for_memory=false + partition_filters=false + detect_filter_construct_corruption=false + initial_auto_readahead_size=8192 + max_auto_readahead_size=262144 + enable_index_compression=true + checksum=kXXH3 + index_block_restart_interval=1 + pin_top_level_index_and_filter=true + block_align=false + block_size=4096 + index_type=kBinarySearch + filter_policy=nullptr + metadata_block_size=4096 + no_block_cache=false + index_shortening=kShortenSeparators + whole_key_filtering=true + block_size_deviation=10 + data_block_index_type=kDataBlockBinarySearch + data_block_hash_table_util_ratio=0.750000 + cache_index_and_filter_blocks=true + prepopulate_block_cache=kDisable + block_restart_interval=16 + pin_l0_filter_and_index_blocks_in_cache=true + cache_index_and_filter_blocks_with_high_priority=true + flush_block_policy_factory=FlushBlockBySizePolicyFactory + + +[CFOptions "_timer_state/processing_timer"] + bottommost_file_compaction_delay=0 + memtable_protection_bytes_per_key=0 + compression_per_level=kSnappyCompression + bottommost_compression=kDisableCompressionOption + sample_for_compression=0 + blob_garbage_collection_age_cutoff=0.250000 + blob_compression_type=kNoCompression + prepopulate_blob_cache=kDisable + blob_compaction_readahead_size=0 + level0_stop_writes_trigger=36 + min_blob_size=0 + last_level_temperature=kUnknown + compaction_options_universal={allow_trivial_move=false;stop_style=kCompactionStopStyleTotalSize;min_merge_width=2;compression_size_percent=-1;max_size_amplification_percent=200;incremental=false;max_merge_width=4294967295;size_ratio=1;} + target_file_size_base=67108864 + ignore_max_compaction_bytes_for_input=true + memtable_whole_key_filtering=false + blob_file_starting_level=0 + soft_pending_compaction_bytes_limit=68719476736 + max_write_buffer_number=2 + ttl=2592000 + compaction_options_fifo={file_temperature_age_thresholds=;allow_compaction=false;age_for_warm=0;max_table_files_size=1073741824;} + check_flush_compaction_key_order=true + memtable_huge_page_size=0 + max_successive_merges=0 + inplace_update_num_locks=10000 + enable_blob_garbage_collection=false + arena_block_size=1048576 + bottommost_compression_opts={use_zstd_dict_trainer=true;enabled=false;zstd_max_train_bytes=0;parallel_threads=1;max_compressed_bytes_per_kb=896;checksum=false;max_dict_bytes=0;strategy=0;max_dict_buffer_bytes=0;level=32767;window_bits=-14;} + target_file_size_multiplier=1 + max_bytes_for_level_multiplier_additional=1:1:1:1:1:1:1 + blob_garbage_collection_force_threshold=1.000000 + enable_blob_files=false + level0_slowdown_writes_trigger=20 + compression=kSnappyCompression + level0_file_num_compaction_trigger=4 + block_protection_bytes_per_key=0 + prefix_extractor=nullptr + max_bytes_for_level_multiplier=10.000000 + write_buffer_size=67108864 + disable_auto_compactions=false + max_compaction_bytes=1677721600 + memtable_max_range_deletions=0 + compression_opts={use_zstd_dict_trainer=true;enabled=false;zstd_max_train_bytes=0;parallel_threads=1;max_compressed_bytes_per_kb=896;checksum=false;max_dict_bytes=0;strategy=0;max_dict_buffer_bytes=0;level=32767;window_bits=-14;} + hard_pending_compaction_bytes_limit=274877906944 + blob_file_size=268435456 + periodic_compaction_seconds=2592000 + paranoid_file_checks=false + experimental_mempurge_threshold=0.000000 + memtable_prefix_bloom_size_ratio=0.000000 + max_bytes_for_level_base=268435456 + max_sequential_skip_in_iterations=8 + report_bg_io_stats=false + sst_partitioner_factory=nullptr + compaction_pri=kMinOverlappingRatio + compaction_style=kCompactionStyleLevel + compaction_filter_factory=nullptr + compaction_filter=nullptr + memtable_factory=SkipListFactory + comparator=leveldb.BytewiseComparator + bloom_locality=0 + min_write_buffer_number_to_merge=1 + table_factory=BlockBasedTable + max_write_buffer_size_to_maintain=0 + max_write_buffer_number_to_maintain=0 + optimize_filters_for_hits=false + default_temperature=kUnknown + preserve_internal_time_seconds=0 + force_consistency_checks=true + merge_operator={id=StringAppendTESTOperator;delimiter=,;} + num_levels=7 + level_compaction_dynamic_file_size=true + memtable_insert_with_hint_prefix_extractor=nullptr + level_compaction_dynamic_level_bytes=false + persist_user_defined_timestamps=true + preclude_last_level_data_seconds=0 + inplace_update_support=false + +[TableOptions/BlockBasedTable "_timer_state/processing_timer"] + num_file_reads_for_auto_readahead=2 + metadata_cache_options={unpartitioned_pinning=kFallback;partition_pinning=kFallback;top_level_index_pinning=kFallback;} + read_amp_bytes_per_bit=0 + verify_compression=false + format_version=5 + optimize_filters_for_memory=false + partition_filters=false + detect_filter_construct_corruption=false + initial_auto_readahead_size=8192 + max_auto_readahead_size=262144 + enable_index_compression=true + checksum=kXXH3 + index_block_restart_interval=1 + pin_top_level_index_and_filter=true + block_align=false + block_size=4096 + index_type=kBinarySearch + filter_policy=nullptr + metadata_block_size=4096 + no_block_cache=false + index_shortening=kShortenSeparators + whole_key_filtering=true + block_size_deviation=10 + data_block_index_type=kDataBlockBinarySearch + data_block_hash_table_util_ratio=0.750000 + cache_index_and_filter_blocks=true + prepopulate_block_cache=kDisable + block_restart_interval=16 + pin_l0_filter_and_index_blocks_in_cache=true + cache_index_and_filter_blocks_with_high_priority=true + flush_block_policy_factory=FlushBlockBySizePolicyFactory + + +[CFOptions "_timer_state/event_timer"] + bottommost_file_compaction_delay=0 + memtable_protection_bytes_per_key=0 + compression_per_level=kSnappyCompression + bottommost_compression=kDisableCompressionOption + sample_for_compression=0 + blob_garbage_collection_age_cutoff=0.250000 + blob_compression_type=kNoCompression + prepopulate_blob_cache=kDisable + blob_compaction_readahead_size=0 + level0_stop_writes_trigger=36 + min_blob_size=0 + last_level_temperature=kUnknown + compaction_options_universal={allow_trivial_move=false;stop_style=kCompactionStopStyleTotalSize;min_merge_width=2;compression_size_percent=-1;max_size_amplification_percent=200;incremental=false;max_merge_width=4294967295;size_ratio=1;} + target_file_size_base=67108864 + ignore_max_compaction_bytes_for_input=true + memtable_whole_key_filtering=false + blob_file_starting_level=0 + soft_pending_compaction_bytes_limit=68719476736 + max_write_buffer_number=2 + ttl=2592000 + compaction_options_fifo={file_temperature_age_thresholds=;allow_compaction=false;age_for_warm=0;max_table_files_size=1073741824;} + check_flush_compaction_key_order=true + memtable_huge_page_size=0 + max_successive_merges=0 + inplace_update_num_locks=10000 + enable_blob_garbage_collection=false + arena_block_size=1048576 + bottommost_compression_opts={use_zstd_dict_trainer=true;enabled=false;zstd_max_train_bytes=0;parallel_threads=1;max_compressed_bytes_per_kb=896;checksum=false;max_dict_bytes=0;strategy=0;max_dict_buffer_bytes=0;level=32767;window_bits=-14;} + target_file_size_multiplier=1 + max_bytes_for_level_multiplier_additional=1:1:1:1:1:1:1 + blob_garbage_collection_force_threshold=1.000000 + enable_blob_files=false + level0_slowdown_writes_trigger=20 + compression=kSnappyCompression + level0_file_num_compaction_trigger=4 + block_protection_bytes_per_key=0 + prefix_extractor=nullptr + max_bytes_for_level_multiplier=10.000000 + write_buffer_size=67108864 + disable_auto_compactions=false + max_compaction_bytes=1677721600 + memtable_max_range_deletions=0 + compression_opts={use_zstd_dict_trainer=true;enabled=false;zstd_max_train_bytes=0;parallel_threads=1;max_compressed_bytes_per_kb=896;checksum=false;max_dict_bytes=0;strategy=0;max_dict_buffer_bytes=0;level=32767;window_bits=-14;} + hard_pending_compaction_bytes_limit=274877906944 + blob_file_size=268435456 + periodic_compaction_seconds=2592000 + paranoid_file_checks=false + experimental_mempurge_threshold=0.000000 + memtable_prefix_bloom_size_ratio=0.000000 + max_bytes_for_level_base=268435456 + max_sequential_skip_in_iterations=8 + report_bg_io_stats=false + sst_partitioner_factory=nullptr + compaction_pri=kMinOverlappingRatio + compaction_style=kCompactionStyleLevel + compaction_filter_factory=nullptr + compaction_filter=nullptr + memtable_factory=SkipListFactory + comparator=leveldb.BytewiseComparator + bloom_locality=0 + min_write_buffer_number_to_merge=1 + table_factory=BlockBasedTable + max_write_buffer_size_to_maintain=0 + max_write_buffer_number_to_maintain=0 + optimize_filters_for_hits=false + default_temperature=kUnknown + preserve_internal_time_seconds=0 + force_consistency_checks=true + merge_operator={id=StringAppendTESTOperator;delimiter=,;} + num_levels=7 + level_compaction_dynamic_file_size=true + memtable_insert_with_hint_prefix_extractor=nullptr + level_compaction_dynamic_level_bytes=false + persist_user_defined_timestamps=true + preclude_last_level_data_seconds=0 + inplace_update_support=false + +[TableOptions/BlockBasedTable "_timer_state/event_timer"] + num_file_reads_for_auto_readahead=2 + metadata_cache_options={unpartitioned_pinning=kFallback;partition_pinning=kFallback;top_level_index_pinning=kFallback;} + read_amp_bytes_per_bit=0 + verify_compression=false + format_version=5 + optimize_filters_for_memory=false + partition_filters=false + detect_filter_construct_corruption=false + initial_auto_readahead_size=8192 + max_auto_readahead_size=262144 + enable_index_compression=true + checksum=kXXH3 + index_block_restart_interval=1 + pin_top_level_index_and_filter=true + block_align=false + block_size=4096 + index_type=kBinarySearch + filter_policy=nullptr + metadata_block_size=4096 + no_block_cache=false + index_shortening=kShortenSeparators + whole_key_filtering=true + block_size_deviation=10 + data_block_index_type=kDataBlockBinarySearch + data_block_hash_table_util_ratio=0.750000 + cache_index_and_filter_blocks=true + prepopulate_block_cache=kDisable + block_restart_interval=16 + pin_l0_filter_and_index_blocks_in_cache=true + cache_index_and_filter_blocks_with_high_priority=true + flush_block_policy_factory=FlushBlockBySizePolicyFactory + diff --git a/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-checkpoint/eb095a55-f2f7-429e-af83-18710f80d06e b/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-checkpoint/eb095a55-f2f7-429e-af83-18710f80d06e new file mode 100644 index 0000000000000000000000000000000000000000..667ac8709a9d3de2e034e1259e5746e22c16f82d GIT binary patch literal 1414 zcmeH{K}*9h6vy8-^&kiycJSg&yczKuSY{5xDrK$8yp(5ocF{HoNjA_g?57Y+Go+Rc zZ@q|t1oFuH=a={R2LSfKk0DHyDH&=k7Q~(_Az%GQuoqk*b8niKPE?kerF5bumMwKf zDH(y4cqfxe)OMkq7aGCA$4(GD{Y9`zUyEG8_~Fx^AB34~%_&q}EBOQC2`#Z$$+AT_ z>25njBRI|*Y?E7uj?T4F1z9U(xefPd{zk4_-WzSW|Fb@ZL3_ l^Q%0~qKxO+JmIh#+!!pl-I)Erjc=nHo+i;`<0I(hzAqoB%1i(N literal 0 HcmV?d00001 diff --git a/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-checkpoint/ed943c2b-f675-4504-84e4-8085fd654c5d b/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-checkpoint/ed943c2b-f675-4504-84e4-8085fd654c5d new file mode 100644 index 0000000000000000000000000000000000000000..a24db4bf2c4327012117852aa19cedf7e025a87a GIT binary patch literal 260 zcmZS8)^KKEU^I2G?@(Z1WR%KDElbTwNz!wwEJ-cTEKYUK&n-wSN-W7Q>U3aa{KCu= z#lpbI#K6MvM@Q`^8v`RJ12Y>7gWTUAht2S7XJTRIU|~4H$as>GtGFbwBvm&rF*g-t z=tBNig4sYrS%7A7voNMJaBblbVq|~-W}vAM78W5!Mpo8OpMPFrV}nqupJ@UIBhU#){wz7e0d_k#7Xu3;04&iz(EtDd literal 0 HcmV?d00001 diff --git a/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-checkpoint/ee3f8736-d574-4d69-8f0c-1ae2b30b050f b/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-checkpoint/ee3f8736-d574-4d69-8f0c-1ae2b30b050f new file mode 100644 index 0000000000000000000000000000000000000000..f039bcfd2160aeef6720a66684e7e05ce0f50ce3 GIT binary patch literal 260 zcmZS8)^KKEU^I2G?@(Z1WR%KDElbTwNz!wwEJ-cTEKYUK&n-wSN-W7Q>U3aa{KCu= z#lpbI#K6MvM@Q`^8v`RJ12Y>7gWTUAht2S7XJTRIU|~4H$as>GtGFbwBvm&rF*g-t z=-yTn1QB3SXhJ@8Ch9Beg1igjSWKaGBUC=aIlBw wW#{FW=kW+I)W?VRd)%teyttYt-~8rrex?Z=j6f$G`LpB<2iWc0TnsFX0QGl4YXATM literal 0 HcmV?d00001 diff --git a/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-checkpoint/efb842f1-03a4-4407-9c39-2e7af130d3f5 b/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-checkpoint/efb842f1-03a4-4407-9c39-2e7af130d3f5 new file mode 100644 index 0000000000000000000000000000000000000000..253d0f256554b9bc68d40feb487674c04b5c767b GIT binary patch literal 1073 zcmah|%}*0S6yJejx3!dyDlzDxBzoLQ3sg#w1Nf16P>Gl*7}Lz|yp{>GGn<(yZM~Ct z<>JZz!#{(>n0PWK{sA7;XuSDmLC}+vYcS8 z-@WYkO;8^9Z#;-!^M5Z2wvGz#gX;yOlYPr$8cV#;m|5V|u~-5Xio=k)Q3hUpewt(k zx?)JXLOL))^&0avGT76ox(}msxEW59M9Y4vXqTlzj;P>du25Di1?!lD$luE0e3~)C zoHh~;Kw=7;BL@Rv;kN!GsT405uvTcbtyq?gYT*&-=*%Ht2biB8bYkJ`demHAtLJXk zmljuUuB_FqL)Xw7tvA-{DI0dUNL(kz0M;Wft>YaJqn1$TI4EB^|JSJB?SeVi>09XJ z_PNX40hsmXTD?@eZh$##48>vu2jzqtHKDz@+Gw|;m@Rjs<;A6D)Q(qK6t`NfB;l<_ zyS+3sd1X&qcV=^k9SClt2Q1mtdOzASn&NbroSD94Pug*&`rz5_#@5cG*3Qno-KEFP zhfmvEt!i;XE9yiFU%&l&cOfhh&K#pwyo80)MFJ8W4jE@=gK%~N#|bpaGymJ_Vn}ex zxlvHAlHrL3m7scVFDOkCZBpjw0T@4?AiPXY_~NM`EX6JvAA(d1#0S1wog)WK_K{YW za*&u0s6=z%B&?DYOb@8ez%a#aP#eF3wAgl@WE)uqia)u#{p67sBOXo>)lX?&Q_fmT zDn)|bHUjWkB_{;!oFYMGilEybL>Lxw>IC7`gq9rHm^1gRQ>7X)q9+uSp3OipObn(R zUM`+eABH&Z1aqLC!m2N2=1h5J%xCUK6j?99i|z9lVFjZOa{s>m*-H7ee*X%?8RD3b z6!*b6s=HkaZo#ivzM5YS?>BU3aa{KCu= z#lpbI#K6MvM@Q`^8v`RJ12Y>7gXXK5;hy-lGqEspurQopWIV|z8()%{n_3iKT#{Il zs$Wo)pPX7;oSByn5eC`wkw^BF3qkX^K;|)>WRyTL59oos5`m zBNy0Bx_ODYsUUZBO+0p_6X;(Spf~wh*wPvJUT`QfH83#FZ{)dnhye{SvOokdR4_sn zGBUD3SS)O;te-yryu`)^p?Db?*%>(4L-Vrp^2_sh1la52L;F2$)jMrrt@@E&>cr2q ziGvXscBhlY9XY^(&dU3aa{KCu= z#lpbI#K6MvM@Q`^8v`RJ12Y>7gXXK5;hy-lGqEspurQopWIV|z8()%{n_3iKT#{Il zs$Wo)pPX7;oSByn5eC`wkw^BF3qkX^K;|)>WRyTL59oos5`m zBNy0Bx_ODYsUUYu5{NeG1p1c+=uLhWwsZ!*7aWRA4GfI)8+k6CV?YCpED!+<6^u}Y zjErm$77H6I>!;5@FR`()eg;vzjEw9I9PFWa*?IZpc{~Cf_3@$o9=Gb(%_u(^{mAM+ zKhq`-Mqt>TP8N6M00%lh7Xu4h*tH$DFy{$?oX39+=sc)pTu>TLF)~A#7%C9XV}+<- zW+l#f>*3B@400Y*?sA!*5a$VioF|`qGq4gGdV(P53GCyLggFo4EU5Kx8H977Y8jb` XbIu01b0&kF!`#2!MF-*>L6CC**JZD~ literal 0 HcmV?d00001 diff --git a/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-checkpoint/f75af3d2-d7eb-40cb-a1af-3a8e15de4d7f b/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-checkpoint/f75af3d2-d7eb-40cb-a1af-3a8e15de4d7f new file mode 100644 index 00000000000000..aa5bb8ea50905a --- /dev/null +++ b/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-checkpoint/f75af3d2-d7eb-40cb-a1af-3a8e15de4d7f @@ -0,0 +1 @@ +MANIFEST-000005 diff --git a/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-checkpoint/fba42b4d-7bfe-44dc-874a-79e91d0c97be b/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-checkpoint/fba42b4d-7bfe-44dc-874a-79e91d0c97be new file mode 100644 index 0000000000000000000000000000000000000000..121a25b7e654425f5b250f82ae0c347daf798eb2 GIT binary patch literal 747 zcmZS8)^KKEU^I2G?@(Z1WR%KDElbTwNz!wwEJ-cTEKYUK&n-wSN-W7Q>U3aa{KCu= z#lpbI#K6MvM@Q`^8v`RJ12Y>7gXXK5;hy-lGqEspurQopWIV|z8()%{n_3iKT#{Il zs$Wo)pPX7;oSByn5eC`wkw^BF3qkX^K;|)>WRyTL59oos5`m zBNy0Bx_ODYsUUYud7vuP3G^=u(3|`$%;^k#k2w^X8yFbpH}YIO#{dCLFq)AW!Xm7K znVFUK)90U;*w|Pl{0 L#s%UWL6CC*Rl2Zk literal 0 HcmV?d00001 diff --git a/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-checkpoint/fd754104-527e-4a75-9dee-2445886f6df7 b/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-checkpoint/fd754104-527e-4a75-9dee-2445886f6df7 new file mode 100644 index 00000000000000..aa5bb8ea50905a --- /dev/null +++ b/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-checkpoint/fd754104-527e-4a75-9dee-2445886f6df7 @@ -0,0 +1 @@ +MANIFEST-000005 diff --git a/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-checkpoint/ff75b468-a725-47e6-a410-c823acceda2a b/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-checkpoint/ff75b468-a725-47e6-a410-c823acceda2a new file mode 100644 index 0000000000000000000000000000000000000000..dfb020f3e5b1de34a27a9f626b5ec4ce7aa19646 GIT binary patch literal 225 zcmZS8)^KKEU^I2G?@(Z1WR%KDElbTwNz!wwEJ-cTEKYUK&n-wSN-W7Q>U3aa{KCu= z#lpbI#K6MvM@Q`^8v`RJ12Y>7gXXK5;hy-lGqEspurQopWIV|z8()%{n_3iKT#{Il rs$Wo)pPX7;oSByn5eC`wkw^BF3qkX^K;|)>WRyTL59oos5`<9z)FVZO literal 0 HcmV?d00001 diff --git a/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/03556267-d317-4389-b2c5-cb6617380c53 b/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/03556267-d317-4389-b2c5-cb6617380c53 new file mode 100644 index 0000000000000000000000000000000000000000..08039e57e8f2543a01188b08f01f7df235448ad8 GIT binary patch literal 260 zcmZS8)^KKEU^I2G?@(Z1WR%KDElbTwNz!wwEJ-cTEKYUK&n-wSN-W7Q>U3aa{KCu= z#lpbI#K6MvM@Q`^8v`RJ12Y>7gWTUAht2S7XJTRIU|~4H$as>GtGFbwBvm&rF*g-t z=-s9Nk7ol7WdWMS&BB<@z_o=#h>-yTn1QB3SXhJ@8Ch9BeExZfjSWKaGBUC=aIlBw wW#{FW=kW-b*T;wUd)%sz{%v&cK?Cnzex?Z=j6f$G`LpB<2iWc0TnsFX01OU70RR91 literal 0 HcmV?d00001 diff --git a/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/03e98b55-2752-4826-8058-5f7cad4dc8f8 b/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/03e98b55-2752-4826-8058-5f7cad4dc8f8 new file mode 100644 index 0000000000000000000000000000000000000000..966ef8e59b646540067755e3a0a2ae467e27cca1 GIT binary patch literal 282 zcmZ9Ev1-FG5QZ-;>C~ZJIs^(1WUb!8C4vZ&I7o7bE=F;$wumhm=`y5GUnSr`G927} z-~S%~JONDLIr?L$@gtHUgflr$R_wUUbs;OIbIq%zP+E%5Qj20+ZHgs_X}L}NCH(T0 zuS;GjE=9f;-&`j80NRI!nZeX8vfs|SLpm(0ecyY>=rrJwY!}(yL}ZGBb&bMcO=tfw zEbf7FW{9n)^!X9sb%g=5J!U__G~UJe+X#A}#7Ji&Jt1W`=6y8OVlt61(zW&v${$w; literal 0 HcmV?d00001 diff --git a/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/05a3364c-418a-4c99-bc58-5f6ceeac38e0 b/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/05a3364c-418a-4c99-bc58-5f6ceeac38e0 new file mode 100644 index 0000000000000000000000000000000000000000..d810f56c44d79e795ac1d960cb401589c77b538b GIT binary patch literal 505 zcmZQzU|?ea0wxCM{GxQd#Dc`+j8wg}oXoszASY8VE3qt5ucWddwX`HNr&zD3G_NEx zH&rjBv>+!nIJGDHGms9Y2mF*0x!mn4>?>gFZprULB&0Y(M^Z`Vjy zm-yfi#}L=}kjMa62G%e~pHNqzBol)Gm>D1J8szEd;~C`|1Qw-@^F;g{eO-eC9GzX! i?F+*Q4p;<${i7F_pPAwZ^iwe~+K{3{1&26tpa1|C;-Pr} literal 0 HcmV?d00001 diff --git a/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/070bb171-8a9a-4004-a8fc-3db8d05fc83a b/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/070bb171-8a9a-4004-a8fc-3db8d05fc83a new file mode 100644 index 0000000000000000000000000000000000000000..4073ae19dda269612d0752fd093f5962c2cccbb7 GIT binary patch literal 747 zcmZS8)^KKEU^I2G?@(Z1WR%KDElbTwNz!wwEJ-cTEKYUK&n-wSN-W7Q>U3aa{KCu= z#lpbI#K6MvM@Q`^8v`RJ12Y>7gXXK5;hy-lGqEspurQopWIV|z8()%{n_3iKT#{Il zs$Wo)pPX7;oSByn5eC`wkw^BF3qkX^K;|)>WRyTL59oos5`m zBNy0Bx_ODYsUUZVFS*as3G^=u(3|`$%;^k#k2w^X8yFbpH}aekW`F=D7|qBGVG&lr z%*@LA;q%W+Y;3F_K@=||BRc~JduU#EUVeEVkAP8qd}zPNt@^e0S*b5vB=_?(ZQ@`A zhTY4*dXXI9KMXEMk+%(|0m LTp-R71UUx)jLfSS literal 0 HcmV?d00001 diff --git a/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/086b1ce2-8f44-42ad-85e5-85d3cfa8c57f b/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/086b1ce2-8f44-42ad-85e5-85d3cfa8c57f new file mode 100644 index 0000000000000000000000000000000000000000..667ac8709a9d3de2e034e1259e5746e22c16f82d GIT binary patch literal 1414 zcmeH{K}*9h6vy8-^&kiycJSg&yczKuSY{5xDrK$8yp(5ocF{HoNjA_g?57Y+Go+Rc zZ@q|t1oFuH=a={R2LSfKk0DHyDH&=k7Q~(_Az%GQuoqk*b8niKPE?kerF5bumMwKf zDH(y4cqfxe)OMkq7aGCA$4(GD{Y9`zUyEG8_~Fx^AB34~%_&q}EBOQC2`#Z$$+AT_ z>25njBRI|*Y?E7uj?T4F1z9U(xefPd{zk4_-WzSW|Fb@ZL3_ l^Q%0~qKxO+JmIh#+!!pl-I)Erjc=nHo+i;`<0I(hzAqoB%1i(N literal 0 HcmV?d00001 diff --git a/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/09f2f282-2230-4b03-923b-5f2c68ad1e05 b/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/09f2f282-2230-4b03-923b-5f2c68ad1e05 new file mode 100644 index 00000000000000..aa5bb8ea50905a --- /dev/null +++ b/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/09f2f282-2230-4b03-923b-5f2c68ad1e05 @@ -0,0 +1 @@ +MANIFEST-000005 diff --git a/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/0b5f99eb-04ae-4c30-a75c-7a2ccc9598d4 b/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/0b5f99eb-04ae-4c30-a75c-7a2ccc9598d4 new file mode 100644 index 00000000000000..aa5bb8ea50905a --- /dev/null +++ b/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/0b5f99eb-04ae-4c30-a75c-7a2ccc9598d4 @@ -0,0 +1 @@ +MANIFEST-000005 diff --git a/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/0f22c723-413f-49b7-835b-320cdc92cb4f b/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/0f22c723-413f-49b7-835b-320cdc92cb4f new file mode 100644 index 0000000000000000000000000000000000000000..2bceb5cf93a5e692260525014c33466a66d7b4c0 GIT binary patch literal 1145 zcmeH`!AiqG5Qe8wdJ{Z&=*3&VNDhS@N>dfQgfWciYO=e`P73V{_bCK7DH21) zTQ1_jF3hm=@3-@_05FCS5!_oY6gtc|q+UyH-b13*8*Wj_&QUG8^onaEx+1l%T}dgi z#!~NzQ-jWLtOTJmxHz1*g0o))oA#r~EnGc)g!7|zEr0CEZB<$G4dVqpsl=M1Lzwo{ z9#I6>S%b})7Zkd2Y;*Eno8nk*vBMT(1ecHVNv@->?7$$xt8!?-!=c}ZI`@^9mi-)9gTKLP84b`Agl literal 0 HcmV?d00001 diff --git a/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/150f4489-f3a5-4904-a8f5-173cb35e20ff b/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/150f4489-f3a5-4904-a8f5-173cb35e20ff new file mode 100644 index 0000000000000000000000000000000000000000..efb26a1f31cb8543159b4aedf3d167a4460cd12d GIT binary patch literal 1083 zcmah|&2AGr6t+oACLyFr1Bg~aihxBI9V=-{Q&e@)@^jhnb14D}LXjsvNv(S9k?k}I zD>g`M@8&)OZ@^<9@doe&Ag+Y&?jBFuRCmQlGxB`reCPM`YK<&Kl$0nbl!_54(E8#g z$)7^_((rC1x^%5V>Zfk2q(E-WtPieLUXz=1*7OgZNLZrqz!L62FwYYOOlkoW=BF71 z&T@@r76x*{22y#jQV(0p4LUwB=z0j#Gq@eqXy2$&s@Z_2Qcal@g)4Jq%~Nomdx*oS z94)6Ax7-`6;0P3!usiiImJaTiQ%j|I-hy+|=snG|Y}$zaqCJy&1l$s!q{%ywt3yV2chI**}YINfe-HB&z63EB6(1QWP`ymemm0*qc#pW&cG=i>jQ(O>}f z%xC1Fm-F+Gc>u86?X701anl0#I2eY_NCDbQKkclyTDNcUjkvY8*^Sp>trKsyJFR#_ zv^#4_x7!);q<-=0fpLDuxyz5FaPdRl-!WG8&c5f91V%D zSFg|`u0|*;#{?*>2Xx;E5HzaN6zmX~$-r_g9BCA;qAd1&5ZO+affmp1?LB)O%!o$| zRF6`Y_mr#F(Mplxw5)Ucy#KWG?Zbay&PnkA literal 0 HcmV?d00001 diff --git a/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/16ae77d4-2921-416e-b8fa-47d5f5361524 b/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/16ae77d4-2921-416e-b8fa-47d5f5361524 new file mode 100644 index 0000000000000000000000000000000000000000..719e9240ecdd880e69c4f476aedff5eed8573b65 GIT binary patch literal 1073 zcmah|&1)1f6rZ$PcXr)wKh~B~J#0mf6S}rqOYNb4^wtlppsmP~nY`JCW|ASvc6WOh zyn68@_-FWM2qJhALGUgpiZ@@Twbhe>VUpkbe((3Ljt7(Ba8Mz&p@5J|b(A!R0zAZj z>-pPPL3P-_@gRQ5|Gg;Keo=ZKTqzly99SOHSmK4o%mSy5#S*Ac9QxD^a`5W2<0Lnb ziat$+bYO()%+EGRZ(pP80SwOIRya-)ExVbbDa(W$P{GM`sj658)-eZ>zg5H8EN6x} zZ6q9m#1w819Q1^RJNl2LRz7FITA|gBVtGDjgfB>2=MDke!~Arw9Sdhyqt@a|vv9Mz zaBbikMGWBoQ4iEGCgz($EX!YFjqNGK!U>|fhI-fe_Ndo2~N2% z3aWL|KenI}RLAWHl~JNi#vDBazNWDaS;EVNXa>!&CX=Nz~ ziTQv^GzU(?I?2Fvfa)9!Q``oP;TfdGj`Jj2%X3it;k})QTV9NKI7U=AqeV>xYb~jj z33l5Ez-yfx6SRGT1hp}OZaWZRSSY9ygkvLGa%5w{+|y1~8pMc>P)vF@1H~{gm})px zKA}GJao!2$Ks|+3SIXR(>co)G+zlwQUV<0fCr`r~M(q{;ef^WQ>Ph|n6^0YUF(E1L zgK<=+sRcLZ*Q{90nai)g1e3#mRx>w+f2{7-%krtx=*J(QN*~J2xoHpm=Zv8I=iBek J-mHCo{u`Y4PWb=; literal 0 HcmV?d00001 diff --git a/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/18fb8fde-3c37-4241-8da7-f7d2cc95dd1e b/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/18fb8fde-3c37-4241-8da7-f7d2cc95dd1e new file mode 100644 index 0000000000000000000000000000000000000000..5e924258b13ca8ebcaf30d5c62affc8f8894615f GIT binary patch literal 293 zcmZ9^v1-FG5P;!p1D!IYONT(gfvnX#xI_?v69-A@(8Vb3#TK7xYP(hfJ= z_j3mTPXG@vjs6sBe2ZiV;U>4q${m-vE@h>3u6eZ*N=xy+*P`53n{vfrrgnwUzk%QH zW*>R6=au48UU%@oq#l_1Ay-#7(`KV{4>`!?e3$>U^B#iWPb_Hq; BT5|vZ literal 0 HcmV?d00001 diff --git a/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/1a5ff059-f7cc-4a08-9268-ea271230f700 b/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/1a5ff059-f7cc-4a08-9268-ea271230f700 new file mode 100644 index 0000000000000000000000000000000000000000..667ac8709a9d3de2e034e1259e5746e22c16f82d GIT binary patch literal 1414 zcmeH{K}*9h6vy8-^&kiycJSg&yczKuSY{5xDrK$8yp(5ocF{HoNjA_g?57Y+Go+Rc zZ@q|t1oFuH=a={R2LSfKk0DHyDH&=k7Q~(_Az%GQuoqk*b8niKPE?kerF5bumMwKf zDH(y4cqfxe)OMkq7aGCA$4(GD{Y9`zUyEG8_~Fx^AB34~%_&q}EBOQC2`#Z$$+AT_ z>25njBRI|*Y?E7uj?T4F1z9U(xefPd{zk4_-WzSW|Fb@ZL3_ l^Q%0~qKxO+JmIh#+!!pl-I)Erjc=nHo+i;`<0I(hzAqoB%1i(N literal 0 HcmV?d00001 diff --git a/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/1cc27bb1-7d76-4735-a3c8-11f5ee6b230e b/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/1cc27bb1-7d76-4735-a3c8-11f5ee6b230e new file mode 100644 index 00000000000000..aa5bb8ea50905a --- /dev/null +++ b/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/1cc27bb1-7d76-4735-a3c8-11f5ee6b230e @@ -0,0 +1 @@ +MANIFEST-000005 diff --git a/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/2415c309-e747-40fd-a1e7-459ce0464ea7 b/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/2415c309-e747-40fd-a1e7-459ce0464ea7 new file mode 100644 index 00000000000000..00c77db5b298c5 --- /dev/null +++ b/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/2415c309-e747-40fd-a1e7-459ce0464ea7 @@ -0,0 +1,541 @@ +# This is a RocksDB option file. +# +# For detailed file format spec, please refer to the example file +# in examples/rocksdb_option_file_example.ini +# + +[Version] + rocksdb_version=8.10.0 + options_file_version=1.1 + +[DBOptions] + max_background_flushes=-1 + compaction_readahead_size=2097152 + strict_bytes_per_sync=false + wal_bytes_per_sync=0 + max_open_files=-1 + stats_history_buffer_size=1048576 + max_total_wal_size=0 + stats_persist_period_sec=600 + stats_dump_period_sec=0 + avoid_flush_during_shutdown=true + max_subcompactions=1 + bytes_per_sync=0 + delayed_write_rate=16777216 + max_background_compactions=-1 + max_background_jobs=2 + delete_obsolete_files_period_micros=21600000000 + writable_file_max_buffer_size=1048576 + file_checksum_gen_factory=nullptr + allow_data_in_errors=false + max_bgerror_resume_count=2147483647 + best_efforts_recovery=false + write_dbid_to_manifest=false + atomic_flush=false + manual_wal_flush=false + two_write_queues=false + avoid_flush_during_recovery=false + dump_malloc_stats=false + info_log_level=INFO_LEVEL + write_thread_slow_yield_usec=3 + unordered_write=false + allow_ingest_behind=false + fail_if_options_file_error=true + persist_stats_to_disk=false + WAL_ttl_seconds=0 + bgerror_resume_retry_interval=1000000 + allow_concurrent_memtable_write=true + paranoid_checks=true + WAL_size_limit_MB=0 + lowest_used_cache_tier=kNonVolatileBlockTier + keep_log_file_num=4 + table_cache_numshardbits=6 + max_file_opening_threads=16 + random_access_max_buffer_size=1048576 + log_readahead_size=0 + enable_pipelined_write=false + wal_recovery_mode=kPointInTimeRecovery + db_write_buffer_size=0 + allow_2pc=false + skip_checking_sst_file_sizes_on_db_open=false + skip_stats_update_on_db_open=false + recycle_log_file_num=0 + db_host_id=__hostname__ + track_and_verify_wals_in_manifest=false + use_fsync=false + wal_compression=kNoCompression + compaction_verify_record_count=true + error_if_exists=false + manifest_preallocation_size=4194304 + is_fd_close_on_exec=true + enable_write_thread_adaptive_yield=true + enable_thread_tracking=false + avoid_unnecessary_blocking_io=false + allow_fallocate=true + max_log_file_size=26214400 + advise_random_on_open=true + create_missing_column_families=false + max_write_batch_group_size_bytes=1048576 + use_adaptive_mutex=false + wal_filter=nullptr + create_if_missing=true + enforce_single_del_contracts=true + allow_mmap_writes=false + access_hint_on_compaction_start=NORMAL + verify_sst_unique_id_in_manifest=true + log_file_time_to_roll=0 + use_direct_io_for_flush_and_compaction=false + flush_verify_memtable_count=true + max_manifest_file_size=1073741824 + write_thread_max_yield_usec=100 + use_direct_reads=false + allow_mmap_reads=false + + +[CFOptions "default"] + bottommost_file_compaction_delay=0 + memtable_protection_bytes_per_key=0 + compression_per_level=kSnappyCompression + bottommost_compression=kDisableCompressionOption + sample_for_compression=0 + blob_garbage_collection_age_cutoff=0.250000 + blob_compression_type=kNoCompression + prepopulate_blob_cache=kDisable + blob_compaction_readahead_size=0 + level0_stop_writes_trigger=36 + min_blob_size=0 + last_level_temperature=kUnknown + compaction_options_universal={allow_trivial_move=false;stop_style=kCompactionStopStyleTotalSize;min_merge_width=2;compression_size_percent=-1;max_size_amplification_percent=200;incremental=false;max_merge_width=4294967295;size_ratio=1;} + target_file_size_base=67108864 + ignore_max_compaction_bytes_for_input=true + memtable_whole_key_filtering=false + blob_file_starting_level=0 + soft_pending_compaction_bytes_limit=68719476736 + max_write_buffer_number=2 + ttl=2592000 + compaction_options_fifo={file_temperature_age_thresholds=;allow_compaction=false;age_for_warm=0;max_table_files_size=1073741824;} + check_flush_compaction_key_order=true + memtable_huge_page_size=0 + max_successive_merges=0 + inplace_update_num_locks=10000 + enable_blob_garbage_collection=false + arena_block_size=1048576 + bottommost_compression_opts={use_zstd_dict_trainer=true;enabled=false;zstd_max_train_bytes=0;parallel_threads=1;max_compressed_bytes_per_kb=896;checksum=false;max_dict_bytes=0;strategy=0;max_dict_buffer_bytes=0;level=32767;window_bits=-14;} + target_file_size_multiplier=1 + max_bytes_for_level_multiplier_additional=1:1:1:1:1:1:1 + blob_garbage_collection_force_threshold=1.000000 + enable_blob_files=false + level0_slowdown_writes_trigger=20 + compression=kSnappyCompression + level0_file_num_compaction_trigger=4 + block_protection_bytes_per_key=0 + prefix_extractor=nullptr + max_bytes_for_level_multiplier=10.000000 + write_buffer_size=67108864 + disable_auto_compactions=false + max_compaction_bytes=1677721600 + memtable_max_range_deletions=0 + compression_opts={use_zstd_dict_trainer=true;enabled=false;zstd_max_train_bytes=0;parallel_threads=1;max_compressed_bytes_per_kb=896;checksum=false;max_dict_bytes=0;strategy=0;max_dict_buffer_bytes=0;level=32767;window_bits=-14;} + hard_pending_compaction_bytes_limit=274877906944 + blob_file_size=268435456 + periodic_compaction_seconds=2592000 + paranoid_file_checks=false + experimental_mempurge_threshold=0.000000 + memtable_prefix_bloom_size_ratio=0.000000 + max_bytes_for_level_base=268435456 + max_sequential_skip_in_iterations=8 + report_bg_io_stats=false + sst_partitioner_factory=nullptr + compaction_pri=kMinOverlappingRatio + compaction_style=kCompactionStyleLevel + compaction_filter_factory=nullptr + compaction_filter=nullptr + memtable_factory=SkipListFactory + comparator=leveldb.BytewiseComparator + bloom_locality=0 + min_write_buffer_number_to_merge=1 + table_factory=BlockBasedTable + max_write_buffer_size_to_maintain=0 + max_write_buffer_number_to_maintain=0 + optimize_filters_for_hits=false + default_temperature=kUnknown + preserve_internal_time_seconds=0 + force_consistency_checks=true + merge_operator={id=StringAppendTESTOperator;delimiter=,;} + num_levels=7 + level_compaction_dynamic_file_size=true + memtable_insert_with_hint_prefix_extractor=nullptr + level_compaction_dynamic_level_bytes=false + persist_user_defined_timestamps=true + preclude_last_level_data_seconds=0 + inplace_update_support=false + +[TableOptions/BlockBasedTable "default"] + num_file_reads_for_auto_readahead=2 + metadata_cache_options={unpartitioned_pinning=kFallback;partition_pinning=kFallback;top_level_index_pinning=kFallback;} + read_amp_bytes_per_bit=0 + verify_compression=false + format_version=5 + optimize_filters_for_memory=false + partition_filters=false + detect_filter_construct_corruption=false + initial_auto_readahead_size=8192 + max_auto_readahead_size=262144 + enable_index_compression=true + checksum=kXXH3 + index_block_restart_interval=1 + pin_top_level_index_and_filter=true + block_align=false + block_size=4096 + index_type=kBinarySearch + filter_policy=nullptr + metadata_block_size=4096 + no_block_cache=false + index_shortening=kShortenSeparators + whole_key_filtering=true + block_size_deviation=10 + data_block_index_type=kDataBlockBinarySearch + data_block_hash_table_util_ratio=0.750000 + cache_index_and_filter_blocks=true + prepopulate_block_cache=kDisable + block_restart_interval=16 + pin_l0_filter_and_index_blocks_in_cache=true + cache_index_and_filter_blocks_with_high_priority=true + flush_block_policy_factory=FlushBlockBySizePolicyFactory + + +[CFOptions "_timer_state/processing_timer"] + bottommost_file_compaction_delay=0 + memtable_protection_bytes_per_key=0 + compression_per_level=kSnappyCompression + bottommost_compression=kDisableCompressionOption + sample_for_compression=0 + blob_garbage_collection_age_cutoff=0.250000 + blob_compression_type=kNoCompression + prepopulate_blob_cache=kDisable + blob_compaction_readahead_size=0 + level0_stop_writes_trigger=36 + min_blob_size=0 + last_level_temperature=kUnknown + compaction_options_universal={allow_trivial_move=false;stop_style=kCompactionStopStyleTotalSize;min_merge_width=2;compression_size_percent=-1;max_size_amplification_percent=200;incremental=false;max_merge_width=4294967295;size_ratio=1;} + target_file_size_base=67108864 + ignore_max_compaction_bytes_for_input=true + memtable_whole_key_filtering=false + blob_file_starting_level=0 + soft_pending_compaction_bytes_limit=68719476736 + max_write_buffer_number=2 + ttl=2592000 + compaction_options_fifo={file_temperature_age_thresholds=;allow_compaction=false;age_for_warm=0;max_table_files_size=1073741824;} + check_flush_compaction_key_order=true + memtable_huge_page_size=0 + max_successive_merges=0 + inplace_update_num_locks=10000 + enable_blob_garbage_collection=false + arena_block_size=1048576 + bottommost_compression_opts={use_zstd_dict_trainer=true;enabled=false;zstd_max_train_bytes=0;parallel_threads=1;max_compressed_bytes_per_kb=896;checksum=false;max_dict_bytes=0;strategy=0;max_dict_buffer_bytes=0;level=32767;window_bits=-14;} + target_file_size_multiplier=1 + max_bytes_for_level_multiplier_additional=1:1:1:1:1:1:1 + blob_garbage_collection_force_threshold=1.000000 + enable_blob_files=false + level0_slowdown_writes_trigger=20 + compression=kSnappyCompression + level0_file_num_compaction_trigger=4 + block_protection_bytes_per_key=0 + prefix_extractor=nullptr + max_bytes_for_level_multiplier=10.000000 + write_buffer_size=67108864 + disable_auto_compactions=false + max_compaction_bytes=1677721600 + memtable_max_range_deletions=0 + compression_opts={use_zstd_dict_trainer=true;enabled=false;zstd_max_train_bytes=0;parallel_threads=1;max_compressed_bytes_per_kb=896;checksum=false;max_dict_bytes=0;strategy=0;max_dict_buffer_bytes=0;level=32767;window_bits=-14;} + hard_pending_compaction_bytes_limit=274877906944 + blob_file_size=268435456 + periodic_compaction_seconds=2592000 + paranoid_file_checks=false + experimental_mempurge_threshold=0.000000 + memtable_prefix_bloom_size_ratio=0.000000 + max_bytes_for_level_base=268435456 + max_sequential_skip_in_iterations=8 + report_bg_io_stats=false + sst_partitioner_factory=nullptr + compaction_pri=kMinOverlappingRatio + compaction_style=kCompactionStyleLevel + compaction_filter_factory=nullptr + compaction_filter=nullptr + memtable_factory=SkipListFactory + comparator=leveldb.BytewiseComparator + bloom_locality=0 + min_write_buffer_number_to_merge=1 + table_factory=BlockBasedTable + max_write_buffer_size_to_maintain=0 + max_write_buffer_number_to_maintain=0 + optimize_filters_for_hits=false + default_temperature=kUnknown + preserve_internal_time_seconds=0 + force_consistency_checks=true + merge_operator={id=StringAppendTESTOperator;delimiter=,;} + num_levels=7 + level_compaction_dynamic_file_size=true + memtable_insert_with_hint_prefix_extractor=nullptr + level_compaction_dynamic_level_bytes=false + persist_user_defined_timestamps=true + preclude_last_level_data_seconds=0 + inplace_update_support=false + +[TableOptions/BlockBasedTable "_timer_state/processing_timer"] + num_file_reads_for_auto_readahead=2 + metadata_cache_options={unpartitioned_pinning=kFallback;partition_pinning=kFallback;top_level_index_pinning=kFallback;} + read_amp_bytes_per_bit=0 + verify_compression=false + format_version=5 + optimize_filters_for_memory=false + partition_filters=false + detect_filter_construct_corruption=false + initial_auto_readahead_size=8192 + max_auto_readahead_size=262144 + enable_index_compression=true + checksum=kXXH3 + index_block_restart_interval=1 + pin_top_level_index_and_filter=true + block_align=false + block_size=4096 + index_type=kBinarySearch + filter_policy=nullptr + metadata_block_size=4096 + no_block_cache=false + index_shortening=kShortenSeparators + whole_key_filtering=true + block_size_deviation=10 + data_block_index_type=kDataBlockBinarySearch + data_block_hash_table_util_ratio=0.750000 + cache_index_and_filter_blocks=true + prepopulate_block_cache=kDisable + block_restart_interval=16 + pin_l0_filter_and_index_blocks_in_cache=true + cache_index_and_filter_blocks_with_high_priority=true + flush_block_policy_factory=FlushBlockBySizePolicyFactory + + +[CFOptions "_timer_state/event_timer"] + bottommost_file_compaction_delay=0 + memtable_protection_bytes_per_key=0 + compression_per_level=kSnappyCompression + bottommost_compression=kDisableCompressionOption + sample_for_compression=0 + blob_garbage_collection_age_cutoff=0.250000 + blob_compression_type=kNoCompression + prepopulate_blob_cache=kDisable + blob_compaction_readahead_size=0 + level0_stop_writes_trigger=36 + min_blob_size=0 + last_level_temperature=kUnknown + compaction_options_universal={allow_trivial_move=false;stop_style=kCompactionStopStyleTotalSize;min_merge_width=2;compression_size_percent=-1;max_size_amplification_percent=200;incremental=false;max_merge_width=4294967295;size_ratio=1;} + target_file_size_base=67108864 + ignore_max_compaction_bytes_for_input=true + memtable_whole_key_filtering=false + blob_file_starting_level=0 + soft_pending_compaction_bytes_limit=68719476736 + max_write_buffer_number=2 + ttl=2592000 + compaction_options_fifo={file_temperature_age_thresholds=;allow_compaction=false;age_for_warm=0;max_table_files_size=1073741824;} + check_flush_compaction_key_order=true + memtable_huge_page_size=0 + max_successive_merges=0 + inplace_update_num_locks=10000 + enable_blob_garbage_collection=false + arena_block_size=1048576 + bottommost_compression_opts={use_zstd_dict_trainer=true;enabled=false;zstd_max_train_bytes=0;parallel_threads=1;max_compressed_bytes_per_kb=896;checksum=false;max_dict_bytes=0;strategy=0;max_dict_buffer_bytes=0;level=32767;window_bits=-14;} + target_file_size_multiplier=1 + max_bytes_for_level_multiplier_additional=1:1:1:1:1:1:1 + blob_garbage_collection_force_threshold=1.000000 + enable_blob_files=false + level0_slowdown_writes_trigger=20 + compression=kSnappyCompression + level0_file_num_compaction_trigger=4 + block_protection_bytes_per_key=0 + prefix_extractor=nullptr + max_bytes_for_level_multiplier=10.000000 + write_buffer_size=67108864 + disable_auto_compactions=false + max_compaction_bytes=1677721600 + memtable_max_range_deletions=0 + compression_opts={use_zstd_dict_trainer=true;enabled=false;zstd_max_train_bytes=0;parallel_threads=1;max_compressed_bytes_per_kb=896;checksum=false;max_dict_bytes=0;strategy=0;max_dict_buffer_bytes=0;level=32767;window_bits=-14;} + hard_pending_compaction_bytes_limit=274877906944 + blob_file_size=268435456 + periodic_compaction_seconds=2592000 + paranoid_file_checks=false + experimental_mempurge_threshold=0.000000 + memtable_prefix_bloom_size_ratio=0.000000 + max_bytes_for_level_base=268435456 + max_sequential_skip_in_iterations=8 + report_bg_io_stats=false + sst_partitioner_factory=nullptr + compaction_pri=kMinOverlappingRatio + compaction_style=kCompactionStyleLevel + compaction_filter_factory=nullptr + compaction_filter=nullptr + memtable_factory=SkipListFactory + comparator=leveldb.BytewiseComparator + bloom_locality=0 + min_write_buffer_number_to_merge=1 + table_factory=BlockBasedTable + max_write_buffer_size_to_maintain=0 + max_write_buffer_number_to_maintain=0 + optimize_filters_for_hits=false + default_temperature=kUnknown + preserve_internal_time_seconds=0 + force_consistency_checks=true + merge_operator={id=StringAppendTESTOperator;delimiter=,;} + num_levels=7 + level_compaction_dynamic_file_size=true + memtable_insert_with_hint_prefix_extractor=nullptr + level_compaction_dynamic_level_bytes=false + persist_user_defined_timestamps=true + preclude_last_level_data_seconds=0 + inplace_update_support=false + +[TableOptions/BlockBasedTable "_timer_state/event_timer"] + num_file_reads_for_auto_readahead=2 + metadata_cache_options={unpartitioned_pinning=kFallback;partition_pinning=kFallback;top_level_index_pinning=kFallback;} + read_amp_bytes_per_bit=0 + verify_compression=false + format_version=5 + optimize_filters_for_memory=false + partition_filters=false + detect_filter_construct_corruption=false + initial_auto_readahead_size=8192 + max_auto_readahead_size=262144 + enable_index_compression=true + checksum=kXXH3 + index_block_restart_interval=1 + pin_top_level_index_and_filter=true + block_align=false + block_size=4096 + index_type=kBinarySearch + filter_policy=nullptr + metadata_block_size=4096 + no_block_cache=false + index_shortening=kShortenSeparators + whole_key_filtering=true + block_size_deviation=10 + data_block_index_type=kDataBlockBinarySearch + data_block_hash_table_util_ratio=0.750000 + cache_index_and_filter_blocks=true + prepopulate_block_cache=kDisable + block_restart_interval=16 + pin_l0_filter_and_index_blocks_in_cache=true + cache_index_and_filter_blocks_with_high_priority=true + flush_block_policy_factory=FlushBlockBySizePolicyFactory + + +[CFOptions "state-name"] + bottommost_file_compaction_delay=0 + memtable_protection_bytes_per_key=0 + compression_per_level=kSnappyCompression + bottommost_compression=kDisableCompressionOption + sample_for_compression=0 + blob_garbage_collection_age_cutoff=0.250000 + blob_compression_type=kNoCompression + prepopulate_blob_cache=kDisable + blob_compaction_readahead_size=0 + level0_stop_writes_trigger=36 + min_blob_size=0 + last_level_temperature=kUnknown + compaction_options_universal={allow_trivial_move=false;stop_style=kCompactionStopStyleTotalSize;min_merge_width=2;compression_size_percent=-1;max_size_amplification_percent=200;incremental=false;max_merge_width=4294967295;size_ratio=1;} + target_file_size_base=67108864 + ignore_max_compaction_bytes_for_input=true + memtable_whole_key_filtering=false + blob_file_starting_level=0 + soft_pending_compaction_bytes_limit=68719476736 + max_write_buffer_number=2 + ttl=2592000 + compaction_options_fifo={file_temperature_age_thresholds=;allow_compaction=false;age_for_warm=0;max_table_files_size=1073741824;} + check_flush_compaction_key_order=true + memtable_huge_page_size=0 + max_successive_merges=0 + inplace_update_num_locks=10000 + enable_blob_garbage_collection=false + arena_block_size=1048576 + bottommost_compression_opts={use_zstd_dict_trainer=true;enabled=false;zstd_max_train_bytes=0;parallel_threads=1;max_compressed_bytes_per_kb=896;checksum=false;max_dict_bytes=0;strategy=0;max_dict_buffer_bytes=0;level=32767;window_bits=-14;} + target_file_size_multiplier=1 + max_bytes_for_level_multiplier_additional=1:1:1:1:1:1:1 + blob_garbage_collection_force_threshold=1.000000 + enable_blob_files=false + level0_slowdown_writes_trigger=20 + compression=kSnappyCompression + level0_file_num_compaction_trigger=4 + block_protection_bytes_per_key=0 + prefix_extractor=nullptr + max_bytes_for_level_multiplier=10.000000 + write_buffer_size=67108864 + disable_auto_compactions=false + max_compaction_bytes=1677721600 + memtable_max_range_deletions=0 + compression_opts={use_zstd_dict_trainer=true;enabled=false;zstd_max_train_bytes=0;parallel_threads=1;max_compressed_bytes_per_kb=896;checksum=false;max_dict_bytes=0;strategy=0;max_dict_buffer_bytes=0;level=32767;window_bits=-14;} + hard_pending_compaction_bytes_limit=274877906944 + blob_file_size=268435456 + periodic_compaction_seconds=2592000 + paranoid_file_checks=false + experimental_mempurge_threshold=0.000000 + memtable_prefix_bloom_size_ratio=0.000000 + max_bytes_for_level_base=268435456 + max_sequential_skip_in_iterations=8 + report_bg_io_stats=false + sst_partitioner_factory=nullptr + compaction_pri=kMinOverlappingRatio + compaction_style=kCompactionStyleLevel + compaction_filter_factory=nullptr + compaction_filter=nullptr + memtable_factory=SkipListFactory + comparator=leveldb.BytewiseComparator + bloom_locality=0 + min_write_buffer_number_to_merge=1 + table_factory=BlockBasedTable + max_write_buffer_size_to_maintain=0 + max_write_buffer_number_to_maintain=0 + optimize_filters_for_hits=false + default_temperature=kUnknown + preserve_internal_time_seconds=0 + force_consistency_checks=true + merge_operator={id=StringAppendTESTOperator;delimiter=,;} + num_levels=7 + level_compaction_dynamic_file_size=true + memtable_insert_with_hint_prefix_extractor=nullptr + level_compaction_dynamic_level_bytes=false + persist_user_defined_timestamps=true + preclude_last_level_data_seconds=0 + inplace_update_support=false + +[TableOptions/BlockBasedTable "state-name"] + num_file_reads_for_auto_readahead=2 + metadata_cache_options={unpartitioned_pinning=kFallback;partition_pinning=kFallback;top_level_index_pinning=kFallback;} + read_amp_bytes_per_bit=0 + verify_compression=false + format_version=5 + optimize_filters_for_memory=false + partition_filters=false + detect_filter_construct_corruption=false + initial_auto_readahead_size=8192 + max_auto_readahead_size=262144 + enable_index_compression=true + checksum=kXXH3 + index_block_restart_interval=1 + pin_top_level_index_and_filter=true + block_align=false + block_size=4096 + index_type=kBinarySearch + filter_policy=nullptr + metadata_block_size=4096 + no_block_cache=false + index_shortening=kShortenSeparators + whole_key_filtering=true + block_size_deviation=10 + data_block_index_type=kDataBlockBinarySearch + data_block_hash_table_util_ratio=0.750000 + cache_index_and_filter_blocks=true + prepopulate_block_cache=kDisable + block_restart_interval=16 + pin_l0_filter_and_index_blocks_in_cache=true + cache_index_and_filter_blocks_with_high_priority=true + flush_block_policy_factory=FlushBlockBySizePolicyFactory + diff --git a/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/2709bf7b-c933-422d-aa8e-4cecea552b5a b/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/2709bf7b-c933-422d-aa8e-4cecea552b5a new file mode 100644 index 0000000000000000000000000000000000000000..8afff7c13214d10675b8338436afde7eaa2f4336 GIT binary patch literal 1131 zcmah|OK($06rM?(_}UmJ#w3D>O0GmVNFMCONo+zE2?ep?86+AIx*B_qol(X!S2N?- zX4NjJx-7q->auGV?7C-#)J-L%vgj`;DpJ)QXRaNit~!hR_|AOi`JLM}@+F!3me8NR zE4=xGT%#mIGr3YBx=7yV@)<%)(RI2=W{2Vz{qduHM=qYS-cOCe6b>bg$qS#~ztZ#M za>km@u@i09R`|i%+<{=8w-qp{1&o*27)tjqgSjhPg5HS>k$eTcp6gN>c%9|rP!+%Tt>LUz#xlFy4dC>SlLieS2$rr{X-i zhTeF$wo~czQ7mM~$88MY0`lB>5eFD=N&OiI9hxEjOB!^$SjCJxa1f{b)Me@b>~4Lh zk}F@fz&%#Tuox*od+EouX0z64HAJ=9*xIZ%cw?j5tZi*nx4VtjdVOoNzP%2mvlotx z^E1xZ{6q>@y~8{E#vE7gTf=Z*T$Ps3yGc7{SMPlDWbgjrz0JeJTTeC~*6%)UKDb@X zE*Q;1^Z)w$-`^Ia92MMi=Hzo|<<3x0;BoFaMn|G^3pin5oiy_)>qB6ji6{;}C6RoQ zjwTGIK==F+$(^Of_PJ*#V8eJwv_dBm3hI!KVV7(OL5mq00$(Yv(i5%*s5Hj}D9i_R z#|RKKDpHh5512{7axEMw&tE`U9QdHSy(9rG9^E{6bT60@kCvz&^jTU{Dr83sS&H4Z z65L#&NGF<&rwA!5QFPmbDu#trIwV?JFiHTnJfu78RIW^|>`Bd45I8Ul(*|3NRd!$nXK%^;ci&Z zOtHe% zgP=#fdGhQp@ZvABOb)L?Cdk|^L{>Wa3Ua&1M>Pw@%?l#Ium^%sjWWxtpN>5WPEH!#+O|BQiNp&{m<3K9OC(UCI1H#8rr61OmMdL0h`DIFIKcqcBM+_Pv4_!0s6RL; z-wggYsn>2}6=QDCLY(n4mze`FE75YLP(EpZIjoRkF@l3~!VMb>wc3UAY_VFaFEy(R zP;XS1qDHN{$fHI*X*L^emdqVEx}~ifb1tzR!EN;#YprR$UA<{E#ep$7H+#sA+A%i0 zcK6=u&CMIDcUj*&YdR!2_>2@xmB?Vkpb}KaZ3Tq`M4K*ibO($dPY@m^BMEtR2ura` z#)lxKN#X;aDIFm@O!iP|mU57o52%*rz)4slD3cCQoq}PC+n_vg6lJmQyzW-h6cpdM zyuNY6KO-K_5Y_9_tfoxJmK5^@yKMyEwM0gmjdzitI785F2dWqrGU){2OioJ<*m9rl zxKo8PF`^?BlV0FJF-!uc6dum+ZUYQ(-Yv|5dVQ;&l&LdQbNhVeZb)$vB=~20|3O&9 zsQt{pum41GYPWv>7ld=fF(E1LhH+H4+ZJ3j-qr^%AD<2mPV8+fu8#MQ)!l!S9~*sn bH+VJqJgh{gJoKNF!}p&bems4<`uW*!7@SxR literal 0 HcmV?d00001 diff --git a/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/35417483-2bb7-4f9b-aa9e-552c88aed0de b/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/35417483-2bb7-4f9b-aa9e-552c88aed0de new file mode 100644 index 00000000000000..aa5bb8ea50905a --- /dev/null +++ b/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/35417483-2bb7-4f9b-aa9e-552c88aed0de @@ -0,0 +1 @@ +MANIFEST-000005 diff --git a/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/35e45c86-b8fd-46b5-85e6-832acc3f493c b/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/35e45c86-b8fd-46b5-85e6-832acc3f493c new file mode 100644 index 0000000000000000000000000000000000000000..36cfb5e2e87d907df20ae18ced674416448b696d GIT binary patch literal 1076 zcmah|%}*0S6yFiB+foaqLI@tLNj>g_whASL81UnUUyvvm(@b~YmI<>n>&%pPxtn<9 zV*E#p2mc5YZ+i4E&}cN?e6wJQCnwq6x4-xO-fynYdUHPUio~DrNOij7v? zi@RRQiS8hN)qV5-&v)K_@*0y`g@-2U(Vjqo_LzZ)TGkUlxr|^$ZI*)bS(+uOhM13N z%!LKbWq*08MurCpO%EYEhnxN^36&TmlEy6IBBMMa3zH?u5-^ro2%J>%my(oeW|bCj z1OiLg$}9}If!pe@rd+tF!5FUOj$~@P{d9lx;ogIrdwcix+mD;~pL8B= zR|-=~Qp*$g`u+FEi++(r%ra{DF*J(P1O!-IGVaWH{@fI<6KI%Me&+Sfc}@ESx12k9 zr3x9HdQbtfZx6iUC8Bh~EIk74*5mo}Ats&(C z!D(v_C|1ZRLAz&&SDqmlwhsZOg`7H`KQpC7glx>2JDyarMl|np$%JDwP)ySUUGnD( zXVixg?mNU9sH3nP2$5P{s$OuF+l(UX1vs^N_S`RH)?pss^*>iGo%Qeje7{O8U3aa{KCu= z#lpbI#K6MvM@Q`^8v`RJ12Y>7gXXK5;hy-lGqEspurQopWIV|z8()%{n_3iKT#{Il zs$Wo)pPX7;oSByn5eC`wkw^BF3qkX^K;|)>WRyTL59oos5`m zBNy0Bx_ODYsUUagt@@$T3G^=u(3|`$Z0QVquQ?Q%8W)EP^Uq6cY^)za6fYwqI|B!MXkK<+et8~`fMI=nXurp;dUx}Vlz=iX z1%9SY9E`xQJDn`<$N>&?el7+UHm_Zh`(e%#06CBU8qj%A%ebI4oML2#FfmjhoW}}L z!OTjW^W5OhTMTj@Q|@w^pAhE>fSjj1vEpU3aa{KCu= z#lpbI#K6MvM@Q`^8v`RJ12Y>7gWTUAht2S7XJTRIU|~4H$as>GtGFbwBvm&rF*g-t z=vgo6%xs{cEI_lkS(wrpxb|=eF)_dZBO`+!nIJGDHGms9Y2mF*0x!mn4>?>gFZprULB&0Y(M^Z`Vjy zm-yfi#}L=}kjMa62G%e~pHNqzBol)Gm>D1J8szEd;~C`|1Qw-@^F;g{eO-eC9GzX! i?F+*Q4p;<${i7F_pPAwZ^iwe~+K{3{1&26tpa1|C;-Pr} literal 0 HcmV?d00001 diff --git a/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/47160329-3ea0-4f05-85bd-70a87d4f3627 b/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/47160329-3ea0-4f05-85bd-70a87d4f3627 new file mode 100644 index 0000000000000000000000000000000000000000..667ac8709a9d3de2e034e1259e5746e22c16f82d GIT binary patch literal 1414 zcmeH{K}*9h6vy8-^&kiycJSg&yczKuSY{5xDrK$8yp(5ocF{HoNjA_g?57Y+Go+Rc zZ@q|t1oFuH=a={R2LSfKk0DHyDH&=k7Q~(_Az%GQuoqk*b8niKPE?kerF5bumMwKf zDH(y4cqfxe)OMkq7aGCA$4(GD{Y9`zUyEG8_~Fx^AB34~%_&q}EBOQC2`#Z$$+AT_ z>25njBRI|*Y?E7uj?T4F1z9U(xefPd{zk4_-WzSW|Fb@ZL3_ l^Q%0~qKxO+JmIh#+!!pl-I)Erjc=nHo+i;`<0I(hzAqoB%1i(N literal 0 HcmV?d00001 diff --git a/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/47ee7a83-1e54-417c-85c7-91b72b9b8c37 b/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/47ee7a83-1e54-417c-85c7-91b72b9b8c37 new file mode 100644 index 00000000000000..aa5bb8ea50905a --- /dev/null +++ b/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/47ee7a83-1e54-417c-85c7-91b72b9b8c37 @@ -0,0 +1 @@ +MANIFEST-000005 diff --git a/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/4a754c38-a466-4175-9a7a-6f126005430e b/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/4a754c38-a466-4175-9a7a-6f126005430e new file mode 100644 index 0000000000000000000000000000000000000000..03b29f9e9e1d0e28bf70a8912d3295001d906677 GIT binary patch literal 260 zcmZS8)^KKEU^I2G?@(Z1WR%KDElbTwNz!wwEJ-cTEKYUK&n-wSN-W7Q>U3aa{KCu= z#lpbI#K6MvM@Q`^8v`RJ12Y>7gWTUAht2S7XJTRIU|~4H$as>GtGFbwBvm&rF*g-t z=$dn>e%U}nS%7A7voNMJaBbueVrGBV;@B=x7AXZ4q|!nvL0VPT*mLZRGI!=` zW*pnyBe6qlc#E$45G*S32#5y&fk21_oViIHv0@fibH8)G^ZU)CI=RaVe;2kreMY0Y2;HdP^ylMP zxjz2t`Qg*!Cws@oA3xvyqVw68gU=t;O6%6}pi=ndx4(Y8#>!NRAh=hrV7q*sf`))g z#+`Y>HrH{Tz{h#z7pz|+>pG*j<(xz+HM%%wa1CY}PDuF%wJsHbpMi_(A?y}C*GrUw z@*Jn+VhUO-(wO+&+HHC!^bBR?xde^%fEil}lCm02!A*hN44g31ljhnTl*LhqB0J17 zF!I?)N6(%_GvaK6npw*8o^sWCS}jqWwo~8>)fzn)=U3aa{KCu= z#lpbI#K6MvM@Q`^8v`RJ12Y>7gXXK5;hy-lGqEspurQopWIV|z8()%{n_3iKT#{Il zs$Wo)pPX7;oSByn5eC`wkw^BF3qkX^K;|)>WRyTL59oos5`m zBNy0Bx_ODYsUUakdj5~U6X;(Spf~whn9~{f9&;!%HZU;GZ{#`okO2aiVKgI@MOXzh zGb`(d&p$7*u|X(aMn-l94))Nz?7aN)JRSkl`uNa(k6ZOC?B5lw$hIlwXWGQU2n@TI zfAu0cz=6)s#lXV6+!nIJGDHGms9Y2mF*0x!mn4>?>gFZprULB&0Y(M^Z`Vjy zm-yfi#}L=}kjMa62G%e~pHNqzBol)Gm>D1J8szEd;~C`|1Qw-@^F;g{eO-eC9GzX! i?F+*Q4p;<${i7F_pPAwZ^iwe~+K{3{1&26tpa1|C;-Pr} literal 0 HcmV?d00001 diff --git a/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/5b1a53ac-0ad7-4861-8681-5eb44ba9705a b/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/5b1a53ac-0ad7-4861-8681-5eb44ba9705a new file mode 100644 index 0000000000000000000000000000000000000000..dfb020f3e5b1de34a27a9f626b5ec4ce7aa19646 GIT binary patch literal 225 zcmZS8)^KKEU^I2G?@(Z1WR%KDElbTwNz!wwEJ-cTEKYUK&n-wSN-W7Q>U3aa{KCu= z#lpbI#K6MvM@Q`^8v`RJ12Y>7gXXK5;hy-lGqEspurQopWIV|z8()%{n_3iKT#{Il rs$Wo)pPX7;oSByn5eC`wkw^BF3qkX^K;|)>WRyTL59oos5`<9z)FVZO literal 0 HcmV?d00001 diff --git a/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/5bdaf88d-2d20-43a4-8306-0279d5c8744c b/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/5bdaf88d-2d20-43a4-8306-0279d5c8744c new file mode 100644 index 00000000000000..6fa414733aae57 --- /dev/null +++ b/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/5bdaf88d-2d20-43a4-8306-0279d5c8744c @@ -0,0 +1,317 @@ +# This is a RocksDB option file. +# +# For detailed file format spec, please refer to the example file +# in examples/rocksdb_option_file_example.ini +# + +[Version] + rocksdb_version=8.10.0 + options_file_version=1.1 + +[DBOptions] + max_background_flushes=-1 + compaction_readahead_size=2097152 + strict_bytes_per_sync=false + wal_bytes_per_sync=0 + max_open_files=-1 + stats_history_buffer_size=1048576 + max_total_wal_size=0 + stats_persist_period_sec=600 + stats_dump_period_sec=0 + avoid_flush_during_shutdown=true + max_subcompactions=1 + bytes_per_sync=0 + delayed_write_rate=16777216 + max_background_compactions=-1 + max_background_jobs=2 + delete_obsolete_files_period_micros=21600000000 + writable_file_max_buffer_size=1048576 + file_checksum_gen_factory=nullptr + allow_data_in_errors=false + max_bgerror_resume_count=2147483647 + best_efforts_recovery=false + write_dbid_to_manifest=false + atomic_flush=false + manual_wal_flush=false + two_write_queues=false + avoid_flush_during_recovery=false + dump_malloc_stats=false + info_log_level=INFO_LEVEL + write_thread_slow_yield_usec=3 + unordered_write=false + allow_ingest_behind=false + fail_if_options_file_error=true + persist_stats_to_disk=false + WAL_ttl_seconds=0 + bgerror_resume_retry_interval=1000000 + allow_concurrent_memtable_write=true + paranoid_checks=true + WAL_size_limit_MB=0 + lowest_used_cache_tier=kNonVolatileBlockTier + keep_log_file_num=4 + table_cache_numshardbits=6 + max_file_opening_threads=16 + random_access_max_buffer_size=1048576 + log_readahead_size=0 + enable_pipelined_write=false + wal_recovery_mode=kPointInTimeRecovery + db_write_buffer_size=0 + allow_2pc=false + skip_checking_sst_file_sizes_on_db_open=false + skip_stats_update_on_db_open=false + recycle_log_file_num=0 + db_host_id=__hostname__ + track_and_verify_wals_in_manifest=false + use_fsync=false + wal_compression=kNoCompression + compaction_verify_record_count=true + error_if_exists=false + manifest_preallocation_size=4194304 + is_fd_close_on_exec=true + enable_write_thread_adaptive_yield=true + enable_thread_tracking=false + avoid_unnecessary_blocking_io=false + allow_fallocate=true + max_log_file_size=26214400 + advise_random_on_open=true + create_missing_column_families=false + max_write_batch_group_size_bytes=1048576 + use_adaptive_mutex=false + wal_filter=nullptr + create_if_missing=true + enforce_single_del_contracts=true + allow_mmap_writes=false + access_hint_on_compaction_start=NORMAL + verify_sst_unique_id_in_manifest=true + log_file_time_to_roll=0 + use_direct_io_for_flush_and_compaction=false + flush_verify_memtable_count=true + max_manifest_file_size=1073741824 + write_thread_max_yield_usec=100 + use_direct_reads=false + allow_mmap_reads=false + + +[CFOptions "default"] + bottommost_file_compaction_delay=0 + memtable_protection_bytes_per_key=0 + compression_per_level=kSnappyCompression + bottommost_compression=kDisableCompressionOption + sample_for_compression=0 + blob_garbage_collection_age_cutoff=0.250000 + blob_compression_type=kNoCompression + prepopulate_blob_cache=kDisable + blob_compaction_readahead_size=0 + level0_stop_writes_trigger=36 + min_blob_size=0 + last_level_temperature=kUnknown + compaction_options_universal={allow_trivial_move=false;stop_style=kCompactionStopStyleTotalSize;min_merge_width=2;compression_size_percent=-1;max_size_amplification_percent=200;incremental=false;max_merge_width=4294967295;size_ratio=1;} + target_file_size_base=67108864 + ignore_max_compaction_bytes_for_input=true + memtable_whole_key_filtering=false + blob_file_starting_level=0 + soft_pending_compaction_bytes_limit=68719476736 + max_write_buffer_number=2 + ttl=2592000 + compaction_options_fifo={file_temperature_age_thresholds=;allow_compaction=false;age_for_warm=0;max_table_files_size=1073741824;} + check_flush_compaction_key_order=true + memtable_huge_page_size=0 + max_successive_merges=0 + inplace_update_num_locks=10000 + enable_blob_garbage_collection=false + arena_block_size=1048576 + bottommost_compression_opts={use_zstd_dict_trainer=true;enabled=false;zstd_max_train_bytes=0;parallel_threads=1;max_compressed_bytes_per_kb=896;checksum=false;max_dict_bytes=0;strategy=0;max_dict_buffer_bytes=0;level=32767;window_bits=-14;} + target_file_size_multiplier=1 + max_bytes_for_level_multiplier_additional=1:1:1:1:1:1:1 + blob_garbage_collection_force_threshold=1.000000 + enable_blob_files=false + level0_slowdown_writes_trigger=20 + compression=kSnappyCompression + level0_file_num_compaction_trigger=4 + block_protection_bytes_per_key=0 + prefix_extractor=nullptr + max_bytes_for_level_multiplier=10.000000 + write_buffer_size=67108864 + disable_auto_compactions=false + max_compaction_bytes=1677721600 + memtable_max_range_deletions=0 + compression_opts={use_zstd_dict_trainer=true;enabled=false;zstd_max_train_bytes=0;parallel_threads=1;max_compressed_bytes_per_kb=896;checksum=false;max_dict_bytes=0;strategy=0;max_dict_buffer_bytes=0;level=32767;window_bits=-14;} + hard_pending_compaction_bytes_limit=274877906944 + blob_file_size=268435456 + periodic_compaction_seconds=2592000 + paranoid_file_checks=false + experimental_mempurge_threshold=0.000000 + memtable_prefix_bloom_size_ratio=0.000000 + max_bytes_for_level_base=268435456 + max_sequential_skip_in_iterations=8 + report_bg_io_stats=false + sst_partitioner_factory=nullptr + compaction_pri=kMinOverlappingRatio + compaction_style=kCompactionStyleLevel + compaction_filter_factory=nullptr + compaction_filter=nullptr + memtable_factory=SkipListFactory + comparator=leveldb.BytewiseComparator + bloom_locality=0 + min_write_buffer_number_to_merge=1 + table_factory=BlockBasedTable + max_write_buffer_size_to_maintain=0 + max_write_buffer_number_to_maintain=0 + optimize_filters_for_hits=false + default_temperature=kUnknown + preserve_internal_time_seconds=0 + force_consistency_checks=true + merge_operator={id=StringAppendTESTOperator;delimiter=,;} + num_levels=7 + level_compaction_dynamic_file_size=true + memtable_insert_with_hint_prefix_extractor=nullptr + level_compaction_dynamic_level_bytes=false + persist_user_defined_timestamps=true + preclude_last_level_data_seconds=0 + inplace_update_support=false + +[TableOptions/BlockBasedTable "default"] + num_file_reads_for_auto_readahead=2 + metadata_cache_options={unpartitioned_pinning=kFallback;partition_pinning=kFallback;top_level_index_pinning=kFallback;} + read_amp_bytes_per_bit=0 + verify_compression=false + format_version=5 + optimize_filters_for_memory=false + partition_filters=false + detect_filter_construct_corruption=false + initial_auto_readahead_size=8192 + max_auto_readahead_size=262144 + enable_index_compression=true + checksum=kXXH3 + index_block_restart_interval=1 + pin_top_level_index_and_filter=true + block_align=false + block_size=4096 + index_type=kBinarySearch + filter_policy=nullptr + metadata_block_size=4096 + no_block_cache=false + index_shortening=kShortenSeparators + whole_key_filtering=true + block_size_deviation=10 + data_block_index_type=kDataBlockBinarySearch + data_block_hash_table_util_ratio=0.750000 + cache_index_and_filter_blocks=true + prepopulate_block_cache=kDisable + block_restart_interval=16 + pin_l0_filter_and_index_blocks_in_cache=true + cache_index_and_filter_blocks_with_high_priority=true + flush_block_policy_factory=FlushBlockBySizePolicyFactory + + +[CFOptions "state-name"] + bottommost_file_compaction_delay=0 + memtable_protection_bytes_per_key=0 + compression_per_level=kSnappyCompression + bottommost_compression=kDisableCompressionOption + sample_for_compression=0 + blob_garbage_collection_age_cutoff=0.250000 + blob_compression_type=kNoCompression + prepopulate_blob_cache=kDisable + blob_compaction_readahead_size=0 + level0_stop_writes_trigger=36 + min_blob_size=0 + last_level_temperature=kUnknown + compaction_options_universal={allow_trivial_move=false;stop_style=kCompactionStopStyleTotalSize;min_merge_width=2;compression_size_percent=-1;max_size_amplification_percent=200;incremental=false;max_merge_width=4294967295;size_ratio=1;} + target_file_size_base=67108864 + ignore_max_compaction_bytes_for_input=true + memtable_whole_key_filtering=false + blob_file_starting_level=0 + soft_pending_compaction_bytes_limit=68719476736 + max_write_buffer_number=2 + ttl=2592000 + compaction_options_fifo={file_temperature_age_thresholds=;allow_compaction=false;age_for_warm=0;max_table_files_size=1073741824;} + check_flush_compaction_key_order=true + memtable_huge_page_size=0 + max_successive_merges=0 + inplace_update_num_locks=10000 + enable_blob_garbage_collection=false + arena_block_size=1048576 + bottommost_compression_opts={use_zstd_dict_trainer=true;enabled=false;zstd_max_train_bytes=0;parallel_threads=1;max_compressed_bytes_per_kb=896;checksum=false;max_dict_bytes=0;strategy=0;max_dict_buffer_bytes=0;level=32767;window_bits=-14;} + target_file_size_multiplier=1 + max_bytes_for_level_multiplier_additional=1:1:1:1:1:1:1 + blob_garbage_collection_force_threshold=1.000000 + enable_blob_files=false + level0_slowdown_writes_trigger=20 + compression=kSnappyCompression + level0_file_num_compaction_trigger=4 + block_protection_bytes_per_key=0 + prefix_extractor=nullptr + max_bytes_for_level_multiplier=10.000000 + write_buffer_size=67108864 + disable_auto_compactions=false + max_compaction_bytes=1677721600 + memtable_max_range_deletions=0 + compression_opts={use_zstd_dict_trainer=true;enabled=false;zstd_max_train_bytes=0;parallel_threads=1;max_compressed_bytes_per_kb=896;checksum=false;max_dict_bytes=0;strategy=0;max_dict_buffer_bytes=0;level=32767;window_bits=-14;} + hard_pending_compaction_bytes_limit=274877906944 + blob_file_size=268435456 + periodic_compaction_seconds=2592000 + paranoid_file_checks=false + experimental_mempurge_threshold=0.000000 + memtable_prefix_bloom_size_ratio=0.000000 + max_bytes_for_level_base=268435456 + max_sequential_skip_in_iterations=8 + report_bg_io_stats=false + sst_partitioner_factory=nullptr + compaction_pri=kMinOverlappingRatio + compaction_style=kCompactionStyleLevel + compaction_filter_factory=nullptr + compaction_filter=nullptr + memtable_factory=SkipListFactory + comparator=leveldb.BytewiseComparator + bloom_locality=0 + min_write_buffer_number_to_merge=1 + table_factory=BlockBasedTable + max_write_buffer_size_to_maintain=0 + max_write_buffer_number_to_maintain=0 + optimize_filters_for_hits=false + default_temperature=kUnknown + preserve_internal_time_seconds=0 + force_consistency_checks=true + merge_operator={id=StringAppendTESTOperator;delimiter=,;} + num_levels=7 + level_compaction_dynamic_file_size=true + memtable_insert_with_hint_prefix_extractor=nullptr + level_compaction_dynamic_level_bytes=false + persist_user_defined_timestamps=true + preclude_last_level_data_seconds=0 + inplace_update_support=false + +[TableOptions/BlockBasedTable "state-name"] + num_file_reads_for_auto_readahead=2 + metadata_cache_options={unpartitioned_pinning=kFallback;partition_pinning=kFallback;top_level_index_pinning=kFallback;} + read_amp_bytes_per_bit=0 + verify_compression=false + format_version=5 + optimize_filters_for_memory=false + partition_filters=false + detect_filter_construct_corruption=false + initial_auto_readahead_size=8192 + max_auto_readahead_size=262144 + enable_index_compression=true + checksum=kXXH3 + index_block_restart_interval=1 + pin_top_level_index_and_filter=true + block_align=false + block_size=4096 + index_type=kBinarySearch + filter_policy=nullptr + metadata_block_size=4096 + no_block_cache=false + index_shortening=kShortenSeparators + whole_key_filtering=true + block_size_deviation=10 + data_block_index_type=kDataBlockBinarySearch + data_block_hash_table_util_ratio=0.750000 + cache_index_and_filter_blocks=true + prepopulate_block_cache=kDisable + block_restart_interval=16 + pin_l0_filter_and_index_blocks_in_cache=true + cache_index_and_filter_blocks_with_high_priority=true + flush_block_policy_factory=FlushBlockBySizePolicyFactory + diff --git a/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/62ef218e-909f-4e75-8f51-d39a30023388 b/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/62ef218e-909f-4e75-8f51-d39a30023388 new file mode 100644 index 0000000000000000000000000000000000000000..6635d2aa28240f929216405c8198962f2d750dba GIT binary patch literal 1099 zcmah|%We}f6t&xwOwy1xgrZV5L4Z^tVkT{&MWu`KUQiw_5|oEVp3F^Z)v-sm(M4n?G17|XLNJdCNYa8K3L2xB+T(x0uw5MK68T8-Hu`{-Vt)ZL^5_PH>-FDA}2avBI~$= z^RNfX4Uu9n*GakIP8*4^#DcC29Q1^RtNOrF${#Xdt$FQNY6p!^(? ze@Wd|3mX`5yB4C1pM}fFR8*s5@Yg_VV69`Z(gDZUiem%>I^ zUs(>r`o#ucycAwoYQ!8Whi7-RbtBF-z9$k}-{8$FTJP5H8O?B4Tvn!!+Tl1xt{aaY zuix9gdtrO~#^c4!#+`>N_pg=n6IwAp_pjf7eLfTvXu=(5Ry>FK!XyO=4p)vFv?Mq( zfy)Kf%qrh!ee1GRNL*4!eOdShdZ_h#;=D2GjymPFAQNBPRaNb zw49?p@!9e*y2oV~MP^w766*og)CnXsC{t8O8<7`6>{ObeNGNH8^_Wdb;IU+!p9 zg(@|oEfkkt+rThQ3}z~r$?qQm^l{%!tbuuHtFDx(GsVi7uiOn7-hc#ewoje~CCu8( z;`{zjmWuoR`#%y?sN+I1JPYHPZnZ49`GZ3x@ASu~U3aa{KCu= z#lpbI#K6MvM@Q`^8v`RJ12Y>7gXXK5;hy-lGqEspurQopWIV|z8()%{n_3iKT#{Il rs$Wo)pPX7;oSByn5eC`wkw^BF3qkX^K;|)>WRyTL59oos5`<9z)FVZO literal 0 HcmV?d00001 diff --git a/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/6ebe22d9-dc15-4be3-b2a4-1653125675af b/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/6ebe22d9-dc15-4be3-b2a4-1653125675af new file mode 100644 index 0000000000000000000000000000000000000000..0361f4db3db261218cceb108c203adfb20571bbc GIT binary patch literal 1099 zcmah|&1zFY6rO2Qa}#6QG;OJM6H%dv858?Y?V?)6jeo76Rpc@^_aq%UnYqkNnxsoX z(49Vm?gck}48ce62^0l!=b4)}>dKqVWM&m_L+C^sOlTc< za1{^3% zVI-X0sMZ(PD`}XGg=;IzE9({OFf_FK8@2UHoA<(4G+Y>A0_%}O>*CPE=q1!29F(6! z{4c4~Y+?gLZpT8H^3#xM05BW%^-8XM(ExWiCWg(37+V#tzq-1(j6YtjMbScaaS?cx z*Ou0*D}1@O#_LNp&Y^T>c28S3or-ngOle)WOT40pw4X=2I_#xZog`{e27 zgWdZ}ySulaE^OEDJzjmdS=w?}eks5Wix*Z~;79uiE`fqJ|!gk?A-<5SRL zhWf;pi!=0q%MOanvKS=R1FE58h-pxysE`&goq*vgwxm2di?Y~pUUHjB0xEuVYv<8@ zZ$>;Ar>fItX-}z!EiGgzPTL5;XORx%8XhC0FitUS3#ynFQt6Ojd`!z2aOA$+;iPh9 zYD7yYF1@yaVVVfccrcwkJ_P9Dz8hEr^U_uwDHCV%r4e7b>odFo3Epg-jAOdlwBY7X4wZa-H(4Q*qbG-&m^40icjtX}=yddA`$Ohi XwlaUtL;v~4(Ejt&kC#WAUtawNe^^r( literal 0 HcmV?d00001 diff --git a/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/73ba66fa-7390-464e-8ddb-e71d430490ca b/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/73ba66fa-7390-464e-8ddb-e71d430490ca new file mode 100644 index 0000000000000000000000000000000000000000..6ebbd86136d5ac4245a5bb1533ec1652bf9d7828 GIT binary patch literal 747 zcmZS8)^KKEU^I2G?@(Z1WR%KDElbTwNz!wwEJ-cTEKYUK&n-wSN-W7Q>U3aa{KCu= z#lpbI#K6MvM@Q`^8v`RJ12Y>7gXXK5;hy-lGqEspurQopWIV|z8()%{n_3iKT#{Il zs$Wo)pPX7;oSByn5eC`wkw^BF3qkX^K;|)>WRyTL59oos5`m zBNy0Bx_ODYsUUZ3pO>!M3G^=u(3|`$%;^k#k2w?>8yFbpH}ag~W`F=@7|jS}5mv#> z%*y)V^Uq6cY^)za6fYwqI|B!MXkK<+et8~`fN_0%Xurp;dK25njBRI|*Y?E7uj?T4F1z9U(xefPd{zk4_-WzSW|Fb@ZL3_ l^Q%0~qKxO+JmIh#+!!pl-I)Erjc=nHo+i;`<0I(hzAqoB%1i(N literal 0 HcmV?d00001 diff --git a/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/7f75438b-7d6d-4ddc-a263-f8cf860b6eb8 b/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/7f75438b-7d6d-4ddc-a263-f8cf860b6eb8 new file mode 100644 index 00000000000000..aa5bb8ea50905a --- /dev/null +++ b/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/7f75438b-7d6d-4ddc-a263-f8cf860b6eb8 @@ -0,0 +1 @@ +MANIFEST-000005 diff --git a/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/814d4827-402c-4e78-89e8-b7e00cd5dbe8 b/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/814d4827-402c-4e78-89e8-b7e00cd5dbe8 new file mode 100644 index 00000000000000..00c77db5b298c5 --- /dev/null +++ b/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/814d4827-402c-4e78-89e8-b7e00cd5dbe8 @@ -0,0 +1,541 @@ +# This is a RocksDB option file. +# +# For detailed file format spec, please refer to the example file +# in examples/rocksdb_option_file_example.ini +# + +[Version] + rocksdb_version=8.10.0 + options_file_version=1.1 + +[DBOptions] + max_background_flushes=-1 + compaction_readahead_size=2097152 + strict_bytes_per_sync=false + wal_bytes_per_sync=0 + max_open_files=-1 + stats_history_buffer_size=1048576 + max_total_wal_size=0 + stats_persist_period_sec=600 + stats_dump_period_sec=0 + avoid_flush_during_shutdown=true + max_subcompactions=1 + bytes_per_sync=0 + delayed_write_rate=16777216 + max_background_compactions=-1 + max_background_jobs=2 + delete_obsolete_files_period_micros=21600000000 + writable_file_max_buffer_size=1048576 + file_checksum_gen_factory=nullptr + allow_data_in_errors=false + max_bgerror_resume_count=2147483647 + best_efforts_recovery=false + write_dbid_to_manifest=false + atomic_flush=false + manual_wal_flush=false + two_write_queues=false + avoid_flush_during_recovery=false + dump_malloc_stats=false + info_log_level=INFO_LEVEL + write_thread_slow_yield_usec=3 + unordered_write=false + allow_ingest_behind=false + fail_if_options_file_error=true + persist_stats_to_disk=false + WAL_ttl_seconds=0 + bgerror_resume_retry_interval=1000000 + allow_concurrent_memtable_write=true + paranoid_checks=true + WAL_size_limit_MB=0 + lowest_used_cache_tier=kNonVolatileBlockTier + keep_log_file_num=4 + table_cache_numshardbits=6 + max_file_opening_threads=16 + random_access_max_buffer_size=1048576 + log_readahead_size=0 + enable_pipelined_write=false + wal_recovery_mode=kPointInTimeRecovery + db_write_buffer_size=0 + allow_2pc=false + skip_checking_sst_file_sizes_on_db_open=false + skip_stats_update_on_db_open=false + recycle_log_file_num=0 + db_host_id=__hostname__ + track_and_verify_wals_in_manifest=false + use_fsync=false + wal_compression=kNoCompression + compaction_verify_record_count=true + error_if_exists=false + manifest_preallocation_size=4194304 + is_fd_close_on_exec=true + enable_write_thread_adaptive_yield=true + enable_thread_tracking=false + avoid_unnecessary_blocking_io=false + allow_fallocate=true + max_log_file_size=26214400 + advise_random_on_open=true + create_missing_column_families=false + max_write_batch_group_size_bytes=1048576 + use_adaptive_mutex=false + wal_filter=nullptr + create_if_missing=true + enforce_single_del_contracts=true + allow_mmap_writes=false + access_hint_on_compaction_start=NORMAL + verify_sst_unique_id_in_manifest=true + log_file_time_to_roll=0 + use_direct_io_for_flush_and_compaction=false + flush_verify_memtable_count=true + max_manifest_file_size=1073741824 + write_thread_max_yield_usec=100 + use_direct_reads=false + allow_mmap_reads=false + + +[CFOptions "default"] + bottommost_file_compaction_delay=0 + memtable_protection_bytes_per_key=0 + compression_per_level=kSnappyCompression + bottommost_compression=kDisableCompressionOption + sample_for_compression=0 + blob_garbage_collection_age_cutoff=0.250000 + blob_compression_type=kNoCompression + prepopulate_blob_cache=kDisable + blob_compaction_readahead_size=0 + level0_stop_writes_trigger=36 + min_blob_size=0 + last_level_temperature=kUnknown + compaction_options_universal={allow_trivial_move=false;stop_style=kCompactionStopStyleTotalSize;min_merge_width=2;compression_size_percent=-1;max_size_amplification_percent=200;incremental=false;max_merge_width=4294967295;size_ratio=1;} + target_file_size_base=67108864 + ignore_max_compaction_bytes_for_input=true + memtable_whole_key_filtering=false + blob_file_starting_level=0 + soft_pending_compaction_bytes_limit=68719476736 + max_write_buffer_number=2 + ttl=2592000 + compaction_options_fifo={file_temperature_age_thresholds=;allow_compaction=false;age_for_warm=0;max_table_files_size=1073741824;} + check_flush_compaction_key_order=true + memtable_huge_page_size=0 + max_successive_merges=0 + inplace_update_num_locks=10000 + enable_blob_garbage_collection=false + arena_block_size=1048576 + bottommost_compression_opts={use_zstd_dict_trainer=true;enabled=false;zstd_max_train_bytes=0;parallel_threads=1;max_compressed_bytes_per_kb=896;checksum=false;max_dict_bytes=0;strategy=0;max_dict_buffer_bytes=0;level=32767;window_bits=-14;} + target_file_size_multiplier=1 + max_bytes_for_level_multiplier_additional=1:1:1:1:1:1:1 + blob_garbage_collection_force_threshold=1.000000 + enable_blob_files=false + level0_slowdown_writes_trigger=20 + compression=kSnappyCompression + level0_file_num_compaction_trigger=4 + block_protection_bytes_per_key=0 + prefix_extractor=nullptr + max_bytes_for_level_multiplier=10.000000 + write_buffer_size=67108864 + disable_auto_compactions=false + max_compaction_bytes=1677721600 + memtable_max_range_deletions=0 + compression_opts={use_zstd_dict_trainer=true;enabled=false;zstd_max_train_bytes=0;parallel_threads=1;max_compressed_bytes_per_kb=896;checksum=false;max_dict_bytes=0;strategy=0;max_dict_buffer_bytes=0;level=32767;window_bits=-14;} + hard_pending_compaction_bytes_limit=274877906944 + blob_file_size=268435456 + periodic_compaction_seconds=2592000 + paranoid_file_checks=false + experimental_mempurge_threshold=0.000000 + memtable_prefix_bloom_size_ratio=0.000000 + max_bytes_for_level_base=268435456 + max_sequential_skip_in_iterations=8 + report_bg_io_stats=false + sst_partitioner_factory=nullptr + compaction_pri=kMinOverlappingRatio + compaction_style=kCompactionStyleLevel + compaction_filter_factory=nullptr + compaction_filter=nullptr + memtable_factory=SkipListFactory + comparator=leveldb.BytewiseComparator + bloom_locality=0 + min_write_buffer_number_to_merge=1 + table_factory=BlockBasedTable + max_write_buffer_size_to_maintain=0 + max_write_buffer_number_to_maintain=0 + optimize_filters_for_hits=false + default_temperature=kUnknown + preserve_internal_time_seconds=0 + force_consistency_checks=true + merge_operator={id=StringAppendTESTOperator;delimiter=,;} + num_levels=7 + level_compaction_dynamic_file_size=true + memtable_insert_with_hint_prefix_extractor=nullptr + level_compaction_dynamic_level_bytes=false + persist_user_defined_timestamps=true + preclude_last_level_data_seconds=0 + inplace_update_support=false + +[TableOptions/BlockBasedTable "default"] + num_file_reads_for_auto_readahead=2 + metadata_cache_options={unpartitioned_pinning=kFallback;partition_pinning=kFallback;top_level_index_pinning=kFallback;} + read_amp_bytes_per_bit=0 + verify_compression=false + format_version=5 + optimize_filters_for_memory=false + partition_filters=false + detect_filter_construct_corruption=false + initial_auto_readahead_size=8192 + max_auto_readahead_size=262144 + enable_index_compression=true + checksum=kXXH3 + index_block_restart_interval=1 + pin_top_level_index_and_filter=true + block_align=false + block_size=4096 + index_type=kBinarySearch + filter_policy=nullptr + metadata_block_size=4096 + no_block_cache=false + index_shortening=kShortenSeparators + whole_key_filtering=true + block_size_deviation=10 + data_block_index_type=kDataBlockBinarySearch + data_block_hash_table_util_ratio=0.750000 + cache_index_and_filter_blocks=true + prepopulate_block_cache=kDisable + block_restart_interval=16 + pin_l0_filter_and_index_blocks_in_cache=true + cache_index_and_filter_blocks_with_high_priority=true + flush_block_policy_factory=FlushBlockBySizePolicyFactory + + +[CFOptions "_timer_state/processing_timer"] + bottommost_file_compaction_delay=0 + memtable_protection_bytes_per_key=0 + compression_per_level=kSnappyCompression + bottommost_compression=kDisableCompressionOption + sample_for_compression=0 + blob_garbage_collection_age_cutoff=0.250000 + blob_compression_type=kNoCompression + prepopulate_blob_cache=kDisable + blob_compaction_readahead_size=0 + level0_stop_writes_trigger=36 + min_blob_size=0 + last_level_temperature=kUnknown + compaction_options_universal={allow_trivial_move=false;stop_style=kCompactionStopStyleTotalSize;min_merge_width=2;compression_size_percent=-1;max_size_amplification_percent=200;incremental=false;max_merge_width=4294967295;size_ratio=1;} + target_file_size_base=67108864 + ignore_max_compaction_bytes_for_input=true + memtable_whole_key_filtering=false + blob_file_starting_level=0 + soft_pending_compaction_bytes_limit=68719476736 + max_write_buffer_number=2 + ttl=2592000 + compaction_options_fifo={file_temperature_age_thresholds=;allow_compaction=false;age_for_warm=0;max_table_files_size=1073741824;} + check_flush_compaction_key_order=true + memtable_huge_page_size=0 + max_successive_merges=0 + inplace_update_num_locks=10000 + enable_blob_garbage_collection=false + arena_block_size=1048576 + bottommost_compression_opts={use_zstd_dict_trainer=true;enabled=false;zstd_max_train_bytes=0;parallel_threads=1;max_compressed_bytes_per_kb=896;checksum=false;max_dict_bytes=0;strategy=0;max_dict_buffer_bytes=0;level=32767;window_bits=-14;} + target_file_size_multiplier=1 + max_bytes_for_level_multiplier_additional=1:1:1:1:1:1:1 + blob_garbage_collection_force_threshold=1.000000 + enable_blob_files=false + level0_slowdown_writes_trigger=20 + compression=kSnappyCompression + level0_file_num_compaction_trigger=4 + block_protection_bytes_per_key=0 + prefix_extractor=nullptr + max_bytes_for_level_multiplier=10.000000 + write_buffer_size=67108864 + disable_auto_compactions=false + max_compaction_bytes=1677721600 + memtable_max_range_deletions=0 + compression_opts={use_zstd_dict_trainer=true;enabled=false;zstd_max_train_bytes=0;parallel_threads=1;max_compressed_bytes_per_kb=896;checksum=false;max_dict_bytes=0;strategy=0;max_dict_buffer_bytes=0;level=32767;window_bits=-14;} + hard_pending_compaction_bytes_limit=274877906944 + blob_file_size=268435456 + periodic_compaction_seconds=2592000 + paranoid_file_checks=false + experimental_mempurge_threshold=0.000000 + memtable_prefix_bloom_size_ratio=0.000000 + max_bytes_for_level_base=268435456 + max_sequential_skip_in_iterations=8 + report_bg_io_stats=false + sst_partitioner_factory=nullptr + compaction_pri=kMinOverlappingRatio + compaction_style=kCompactionStyleLevel + compaction_filter_factory=nullptr + compaction_filter=nullptr + memtable_factory=SkipListFactory + comparator=leveldb.BytewiseComparator + bloom_locality=0 + min_write_buffer_number_to_merge=1 + table_factory=BlockBasedTable + max_write_buffer_size_to_maintain=0 + max_write_buffer_number_to_maintain=0 + optimize_filters_for_hits=false + default_temperature=kUnknown + preserve_internal_time_seconds=0 + force_consistency_checks=true + merge_operator={id=StringAppendTESTOperator;delimiter=,;} + num_levels=7 + level_compaction_dynamic_file_size=true + memtable_insert_with_hint_prefix_extractor=nullptr + level_compaction_dynamic_level_bytes=false + persist_user_defined_timestamps=true + preclude_last_level_data_seconds=0 + inplace_update_support=false + +[TableOptions/BlockBasedTable "_timer_state/processing_timer"] + num_file_reads_for_auto_readahead=2 + metadata_cache_options={unpartitioned_pinning=kFallback;partition_pinning=kFallback;top_level_index_pinning=kFallback;} + read_amp_bytes_per_bit=0 + verify_compression=false + format_version=5 + optimize_filters_for_memory=false + partition_filters=false + detect_filter_construct_corruption=false + initial_auto_readahead_size=8192 + max_auto_readahead_size=262144 + enable_index_compression=true + checksum=kXXH3 + index_block_restart_interval=1 + pin_top_level_index_and_filter=true + block_align=false + block_size=4096 + index_type=kBinarySearch + filter_policy=nullptr + metadata_block_size=4096 + no_block_cache=false + index_shortening=kShortenSeparators + whole_key_filtering=true + block_size_deviation=10 + data_block_index_type=kDataBlockBinarySearch + data_block_hash_table_util_ratio=0.750000 + cache_index_and_filter_blocks=true + prepopulate_block_cache=kDisable + block_restart_interval=16 + pin_l0_filter_and_index_blocks_in_cache=true + cache_index_and_filter_blocks_with_high_priority=true + flush_block_policy_factory=FlushBlockBySizePolicyFactory + + +[CFOptions "_timer_state/event_timer"] + bottommost_file_compaction_delay=0 + memtable_protection_bytes_per_key=0 + compression_per_level=kSnappyCompression + bottommost_compression=kDisableCompressionOption + sample_for_compression=0 + blob_garbage_collection_age_cutoff=0.250000 + blob_compression_type=kNoCompression + prepopulate_blob_cache=kDisable + blob_compaction_readahead_size=0 + level0_stop_writes_trigger=36 + min_blob_size=0 + last_level_temperature=kUnknown + compaction_options_universal={allow_trivial_move=false;stop_style=kCompactionStopStyleTotalSize;min_merge_width=2;compression_size_percent=-1;max_size_amplification_percent=200;incremental=false;max_merge_width=4294967295;size_ratio=1;} + target_file_size_base=67108864 + ignore_max_compaction_bytes_for_input=true + memtable_whole_key_filtering=false + blob_file_starting_level=0 + soft_pending_compaction_bytes_limit=68719476736 + max_write_buffer_number=2 + ttl=2592000 + compaction_options_fifo={file_temperature_age_thresholds=;allow_compaction=false;age_for_warm=0;max_table_files_size=1073741824;} + check_flush_compaction_key_order=true + memtable_huge_page_size=0 + max_successive_merges=0 + inplace_update_num_locks=10000 + enable_blob_garbage_collection=false + arena_block_size=1048576 + bottommost_compression_opts={use_zstd_dict_trainer=true;enabled=false;zstd_max_train_bytes=0;parallel_threads=1;max_compressed_bytes_per_kb=896;checksum=false;max_dict_bytes=0;strategy=0;max_dict_buffer_bytes=0;level=32767;window_bits=-14;} + target_file_size_multiplier=1 + max_bytes_for_level_multiplier_additional=1:1:1:1:1:1:1 + blob_garbage_collection_force_threshold=1.000000 + enable_blob_files=false + level0_slowdown_writes_trigger=20 + compression=kSnappyCompression + level0_file_num_compaction_trigger=4 + block_protection_bytes_per_key=0 + prefix_extractor=nullptr + max_bytes_for_level_multiplier=10.000000 + write_buffer_size=67108864 + disable_auto_compactions=false + max_compaction_bytes=1677721600 + memtable_max_range_deletions=0 + compression_opts={use_zstd_dict_trainer=true;enabled=false;zstd_max_train_bytes=0;parallel_threads=1;max_compressed_bytes_per_kb=896;checksum=false;max_dict_bytes=0;strategy=0;max_dict_buffer_bytes=0;level=32767;window_bits=-14;} + hard_pending_compaction_bytes_limit=274877906944 + blob_file_size=268435456 + periodic_compaction_seconds=2592000 + paranoid_file_checks=false + experimental_mempurge_threshold=0.000000 + memtable_prefix_bloom_size_ratio=0.000000 + max_bytes_for_level_base=268435456 + max_sequential_skip_in_iterations=8 + report_bg_io_stats=false + sst_partitioner_factory=nullptr + compaction_pri=kMinOverlappingRatio + compaction_style=kCompactionStyleLevel + compaction_filter_factory=nullptr + compaction_filter=nullptr + memtable_factory=SkipListFactory + comparator=leveldb.BytewiseComparator + bloom_locality=0 + min_write_buffer_number_to_merge=1 + table_factory=BlockBasedTable + max_write_buffer_size_to_maintain=0 + max_write_buffer_number_to_maintain=0 + optimize_filters_for_hits=false + default_temperature=kUnknown + preserve_internal_time_seconds=0 + force_consistency_checks=true + merge_operator={id=StringAppendTESTOperator;delimiter=,;} + num_levels=7 + level_compaction_dynamic_file_size=true + memtable_insert_with_hint_prefix_extractor=nullptr + level_compaction_dynamic_level_bytes=false + persist_user_defined_timestamps=true + preclude_last_level_data_seconds=0 + inplace_update_support=false + +[TableOptions/BlockBasedTable "_timer_state/event_timer"] + num_file_reads_for_auto_readahead=2 + metadata_cache_options={unpartitioned_pinning=kFallback;partition_pinning=kFallback;top_level_index_pinning=kFallback;} + read_amp_bytes_per_bit=0 + verify_compression=false + format_version=5 + optimize_filters_for_memory=false + partition_filters=false + detect_filter_construct_corruption=false + initial_auto_readahead_size=8192 + max_auto_readahead_size=262144 + enable_index_compression=true + checksum=kXXH3 + index_block_restart_interval=1 + pin_top_level_index_and_filter=true + block_align=false + block_size=4096 + index_type=kBinarySearch + filter_policy=nullptr + metadata_block_size=4096 + no_block_cache=false + index_shortening=kShortenSeparators + whole_key_filtering=true + block_size_deviation=10 + data_block_index_type=kDataBlockBinarySearch + data_block_hash_table_util_ratio=0.750000 + cache_index_and_filter_blocks=true + prepopulate_block_cache=kDisable + block_restart_interval=16 + pin_l0_filter_and_index_blocks_in_cache=true + cache_index_and_filter_blocks_with_high_priority=true + flush_block_policy_factory=FlushBlockBySizePolicyFactory + + +[CFOptions "state-name"] + bottommost_file_compaction_delay=0 + memtable_protection_bytes_per_key=0 + compression_per_level=kSnappyCompression + bottommost_compression=kDisableCompressionOption + sample_for_compression=0 + blob_garbage_collection_age_cutoff=0.250000 + blob_compression_type=kNoCompression + prepopulate_blob_cache=kDisable + blob_compaction_readahead_size=0 + level0_stop_writes_trigger=36 + min_blob_size=0 + last_level_temperature=kUnknown + compaction_options_universal={allow_trivial_move=false;stop_style=kCompactionStopStyleTotalSize;min_merge_width=2;compression_size_percent=-1;max_size_amplification_percent=200;incremental=false;max_merge_width=4294967295;size_ratio=1;} + target_file_size_base=67108864 + ignore_max_compaction_bytes_for_input=true + memtable_whole_key_filtering=false + blob_file_starting_level=0 + soft_pending_compaction_bytes_limit=68719476736 + max_write_buffer_number=2 + ttl=2592000 + compaction_options_fifo={file_temperature_age_thresholds=;allow_compaction=false;age_for_warm=0;max_table_files_size=1073741824;} + check_flush_compaction_key_order=true + memtable_huge_page_size=0 + max_successive_merges=0 + inplace_update_num_locks=10000 + enable_blob_garbage_collection=false + arena_block_size=1048576 + bottommost_compression_opts={use_zstd_dict_trainer=true;enabled=false;zstd_max_train_bytes=0;parallel_threads=1;max_compressed_bytes_per_kb=896;checksum=false;max_dict_bytes=0;strategy=0;max_dict_buffer_bytes=0;level=32767;window_bits=-14;} + target_file_size_multiplier=1 + max_bytes_for_level_multiplier_additional=1:1:1:1:1:1:1 + blob_garbage_collection_force_threshold=1.000000 + enable_blob_files=false + level0_slowdown_writes_trigger=20 + compression=kSnappyCompression + level0_file_num_compaction_trigger=4 + block_protection_bytes_per_key=0 + prefix_extractor=nullptr + max_bytes_for_level_multiplier=10.000000 + write_buffer_size=67108864 + disable_auto_compactions=false + max_compaction_bytes=1677721600 + memtable_max_range_deletions=0 + compression_opts={use_zstd_dict_trainer=true;enabled=false;zstd_max_train_bytes=0;parallel_threads=1;max_compressed_bytes_per_kb=896;checksum=false;max_dict_bytes=0;strategy=0;max_dict_buffer_bytes=0;level=32767;window_bits=-14;} + hard_pending_compaction_bytes_limit=274877906944 + blob_file_size=268435456 + periodic_compaction_seconds=2592000 + paranoid_file_checks=false + experimental_mempurge_threshold=0.000000 + memtable_prefix_bloom_size_ratio=0.000000 + max_bytes_for_level_base=268435456 + max_sequential_skip_in_iterations=8 + report_bg_io_stats=false + sst_partitioner_factory=nullptr + compaction_pri=kMinOverlappingRatio + compaction_style=kCompactionStyleLevel + compaction_filter_factory=nullptr + compaction_filter=nullptr + memtable_factory=SkipListFactory + comparator=leveldb.BytewiseComparator + bloom_locality=0 + min_write_buffer_number_to_merge=1 + table_factory=BlockBasedTable + max_write_buffer_size_to_maintain=0 + max_write_buffer_number_to_maintain=0 + optimize_filters_for_hits=false + default_temperature=kUnknown + preserve_internal_time_seconds=0 + force_consistency_checks=true + merge_operator={id=StringAppendTESTOperator;delimiter=,;} + num_levels=7 + level_compaction_dynamic_file_size=true + memtable_insert_with_hint_prefix_extractor=nullptr + level_compaction_dynamic_level_bytes=false + persist_user_defined_timestamps=true + preclude_last_level_data_seconds=0 + inplace_update_support=false + +[TableOptions/BlockBasedTable "state-name"] + num_file_reads_for_auto_readahead=2 + metadata_cache_options={unpartitioned_pinning=kFallback;partition_pinning=kFallback;top_level_index_pinning=kFallback;} + read_amp_bytes_per_bit=0 + verify_compression=false + format_version=5 + optimize_filters_for_memory=false + partition_filters=false + detect_filter_construct_corruption=false + initial_auto_readahead_size=8192 + max_auto_readahead_size=262144 + enable_index_compression=true + checksum=kXXH3 + index_block_restart_interval=1 + pin_top_level_index_and_filter=true + block_align=false + block_size=4096 + index_type=kBinarySearch + filter_policy=nullptr + metadata_block_size=4096 + no_block_cache=false + index_shortening=kShortenSeparators + whole_key_filtering=true + block_size_deviation=10 + data_block_index_type=kDataBlockBinarySearch + data_block_hash_table_util_ratio=0.750000 + cache_index_and_filter_blocks=true + prepopulate_block_cache=kDisable + block_restart_interval=16 + pin_l0_filter_and_index_blocks_in_cache=true + cache_index_and_filter_blocks_with_high_priority=true + flush_block_policy_factory=FlushBlockBySizePolicyFactory + diff --git a/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/84c0fb0f-7fba-4420-a016-bc24fa634f9b b/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/84c0fb0f-7fba-4420-a016-bc24fa634f9b new file mode 100644 index 0000000000000000000000000000000000000000..d810f56c44d79e795ac1d960cb401589c77b538b GIT binary patch literal 505 zcmZQzU|?ea0wxCM{GxQd#Dc`+j8wg}oXoszASY8VE3qt5ucWddwX`HNr&zD3G_NEx zH&rjBv>+!nIJGDHGms9Y2mF*0x!mn4>?>gFZprULB&0Y(M^Z`Vjy zm-yfi#}L=}kjMa62G%e~pHNqzBol)Gm>D1J8szEd;~C`|1Qw-@^F;g{eO-eC9GzX! i?F+*Q4p;<${i7F_pPAwZ^iwe~+K{3{1&26tpa1|C;-Pr} literal 0 HcmV?d00001 diff --git a/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/8561dd76-162f-4fb5-a4f9-9347202551c5 b/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/8561dd76-162f-4fb5-a4f9-9347202551c5 new file mode 100644 index 00000000000000..aa5bb8ea50905a --- /dev/null +++ b/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/8561dd76-162f-4fb5-a4f9-9347202551c5 @@ -0,0 +1 @@ +MANIFEST-000005 diff --git a/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/935aaf85-d5a7-4f09-af90-969d38c5dd68 b/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/935aaf85-d5a7-4f09-af90-969d38c5dd68 new file mode 100644 index 0000000000000000000000000000000000000000..8511b30b679b7750a89a0c652d83e58a4a6a50ef GIT binary patch literal 260 zcmZS8)^KKEU^I2G?@(Z1WR%KDElbTwNz!wwEJ-cTEKYUK&n-wSN-W7Q>U3aa{KCu= z#lpbI#K6MvM@Q`^8v`RJ12Y>7gWTUAht2S7XJTRIU|~4H$as>GtGFbwBvm&rF*g-t z=!?k_+}S`wS%7A7voNMJaBblbVq|~-W}vAM78W5!Mpo7jpMPFrV`KdYqIek@*%>(4 yL-Vrp^2_sh1nlbLL;F2$)gO(pZr(DXcLqPx1P(@^6OQ~@a)tx!c5W^P7DfP3M?g~m literal 0 HcmV?d00001 diff --git a/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/95906873-6d01-477f-9635-1ad2793ba481 b/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/95906873-6d01-477f-9635-1ad2793ba481 new file mode 100644 index 0000000000000000000000000000000000000000..21f8ecb6def9f30245bfaa142ae1f75e8e758070 GIT binary patch literal 1086 zcmah|&2C#o6rORMdhEK69k*2*3CXGon{Y>Q;@U~0EK+_1i_(@C<{$z4_=4=E{A+HVoY zTCBAm@0@ff!4p69^sn@X_v)loB2`LgwelgtA1tkd(yK#qzwB&!>g9-!G+y{fc#u4Z zkp`}eggFn393p3olB!#u6Sa0?d?$kL;zTUb*JLdu7d$5qZ97v+wB8<^cge z!}{!OI8wnMB;DSArwDVfvpwh!_B%dcXqYSxw)Q)jm=C2&!*GNNd_-RRAcqk~FJ-Q9 zFtKy_U($3u26yE%^)M{>MaUumxP$I~r`o>nKm;5N$7YlS6I59A`r}c**OSR^_d%NU zwq-ZjOLt`gyE}V>y>w@*-y5`U+&Qs6EIA*GGbMfUSfr1vJx!iE%W*qGx0*No`8bxY zkH3C#`1JV6gX7~*U+jF@{o^Q41W9L?a$X(l}Zr=_v$rlRZx@nt@}Q5x6G1Rk@Hp%yHi-*1)5L%~b0=xLT_eD-R2fs@D+B{^cuH z$E>p=e(Zm{Uc2Z&{xw;P2B9>^_uvAzkf{X6}mk*xl#fSC&ri e2LF6p{wO{CN1wH~#|8ElvRd literal 0 HcmV?d00001 diff --git a/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/98257f69-3296-4878-aa9c-2a163d8cb054 b/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/98257f69-3296-4878-aa9c-2a163d8cb054 new file mode 100644 index 0000000000000000000000000000000000000000..667ac8709a9d3de2e034e1259e5746e22c16f82d GIT binary patch literal 1414 zcmeH{K}*9h6vy8-^&kiycJSg&yczKuSY{5xDrK$8yp(5ocF{HoNjA_g?57Y+Go+Rc zZ@q|t1oFuH=a={R2LSfKk0DHyDH&=k7Q~(_Az%GQuoqk*b8niKPE?kerF5bumMwKf zDH(y4cqfxe)OMkq7aGCA$4(GD{Y9`zUyEG8_~Fx^AB34~%_&q}EBOQC2`#Z$$+AT_ z>25njBRI|*Y?E7uj?T4F1z9U(xefPd{zk4_-WzSW|Fb@ZL3_ l^Q%0~qKxO+JmIh#+!!pl-I)Erjc=nHo+i;`<0I(hzAqoB%1i(N literal 0 HcmV?d00001 diff --git a/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/9a6ce57c-e2f8-4997-8db1-d7375ba5c460 b/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/9a6ce57c-e2f8-4997-8db1-d7375ba5c460 new file mode 100644 index 00000000000000..00c77db5b298c5 --- /dev/null +++ b/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/9a6ce57c-e2f8-4997-8db1-d7375ba5c460 @@ -0,0 +1,541 @@ +# This is a RocksDB option file. +# +# For detailed file format spec, please refer to the example file +# in examples/rocksdb_option_file_example.ini +# + +[Version] + rocksdb_version=8.10.0 + options_file_version=1.1 + +[DBOptions] + max_background_flushes=-1 + compaction_readahead_size=2097152 + strict_bytes_per_sync=false + wal_bytes_per_sync=0 + max_open_files=-1 + stats_history_buffer_size=1048576 + max_total_wal_size=0 + stats_persist_period_sec=600 + stats_dump_period_sec=0 + avoid_flush_during_shutdown=true + max_subcompactions=1 + bytes_per_sync=0 + delayed_write_rate=16777216 + max_background_compactions=-1 + max_background_jobs=2 + delete_obsolete_files_period_micros=21600000000 + writable_file_max_buffer_size=1048576 + file_checksum_gen_factory=nullptr + allow_data_in_errors=false + max_bgerror_resume_count=2147483647 + best_efforts_recovery=false + write_dbid_to_manifest=false + atomic_flush=false + manual_wal_flush=false + two_write_queues=false + avoid_flush_during_recovery=false + dump_malloc_stats=false + info_log_level=INFO_LEVEL + write_thread_slow_yield_usec=3 + unordered_write=false + allow_ingest_behind=false + fail_if_options_file_error=true + persist_stats_to_disk=false + WAL_ttl_seconds=0 + bgerror_resume_retry_interval=1000000 + allow_concurrent_memtable_write=true + paranoid_checks=true + WAL_size_limit_MB=0 + lowest_used_cache_tier=kNonVolatileBlockTier + keep_log_file_num=4 + table_cache_numshardbits=6 + max_file_opening_threads=16 + random_access_max_buffer_size=1048576 + log_readahead_size=0 + enable_pipelined_write=false + wal_recovery_mode=kPointInTimeRecovery + db_write_buffer_size=0 + allow_2pc=false + skip_checking_sst_file_sizes_on_db_open=false + skip_stats_update_on_db_open=false + recycle_log_file_num=0 + db_host_id=__hostname__ + track_and_verify_wals_in_manifest=false + use_fsync=false + wal_compression=kNoCompression + compaction_verify_record_count=true + error_if_exists=false + manifest_preallocation_size=4194304 + is_fd_close_on_exec=true + enable_write_thread_adaptive_yield=true + enable_thread_tracking=false + avoid_unnecessary_blocking_io=false + allow_fallocate=true + max_log_file_size=26214400 + advise_random_on_open=true + create_missing_column_families=false + max_write_batch_group_size_bytes=1048576 + use_adaptive_mutex=false + wal_filter=nullptr + create_if_missing=true + enforce_single_del_contracts=true + allow_mmap_writes=false + access_hint_on_compaction_start=NORMAL + verify_sst_unique_id_in_manifest=true + log_file_time_to_roll=0 + use_direct_io_for_flush_and_compaction=false + flush_verify_memtable_count=true + max_manifest_file_size=1073741824 + write_thread_max_yield_usec=100 + use_direct_reads=false + allow_mmap_reads=false + + +[CFOptions "default"] + bottommost_file_compaction_delay=0 + memtable_protection_bytes_per_key=0 + compression_per_level=kSnappyCompression + bottommost_compression=kDisableCompressionOption + sample_for_compression=0 + blob_garbage_collection_age_cutoff=0.250000 + blob_compression_type=kNoCompression + prepopulate_blob_cache=kDisable + blob_compaction_readahead_size=0 + level0_stop_writes_trigger=36 + min_blob_size=0 + last_level_temperature=kUnknown + compaction_options_universal={allow_trivial_move=false;stop_style=kCompactionStopStyleTotalSize;min_merge_width=2;compression_size_percent=-1;max_size_amplification_percent=200;incremental=false;max_merge_width=4294967295;size_ratio=1;} + target_file_size_base=67108864 + ignore_max_compaction_bytes_for_input=true + memtable_whole_key_filtering=false + blob_file_starting_level=0 + soft_pending_compaction_bytes_limit=68719476736 + max_write_buffer_number=2 + ttl=2592000 + compaction_options_fifo={file_temperature_age_thresholds=;allow_compaction=false;age_for_warm=0;max_table_files_size=1073741824;} + check_flush_compaction_key_order=true + memtable_huge_page_size=0 + max_successive_merges=0 + inplace_update_num_locks=10000 + enable_blob_garbage_collection=false + arena_block_size=1048576 + bottommost_compression_opts={use_zstd_dict_trainer=true;enabled=false;zstd_max_train_bytes=0;parallel_threads=1;max_compressed_bytes_per_kb=896;checksum=false;max_dict_bytes=0;strategy=0;max_dict_buffer_bytes=0;level=32767;window_bits=-14;} + target_file_size_multiplier=1 + max_bytes_for_level_multiplier_additional=1:1:1:1:1:1:1 + blob_garbage_collection_force_threshold=1.000000 + enable_blob_files=false + level0_slowdown_writes_trigger=20 + compression=kSnappyCompression + level0_file_num_compaction_trigger=4 + block_protection_bytes_per_key=0 + prefix_extractor=nullptr + max_bytes_for_level_multiplier=10.000000 + write_buffer_size=67108864 + disable_auto_compactions=false + max_compaction_bytes=1677721600 + memtable_max_range_deletions=0 + compression_opts={use_zstd_dict_trainer=true;enabled=false;zstd_max_train_bytes=0;parallel_threads=1;max_compressed_bytes_per_kb=896;checksum=false;max_dict_bytes=0;strategy=0;max_dict_buffer_bytes=0;level=32767;window_bits=-14;} + hard_pending_compaction_bytes_limit=274877906944 + blob_file_size=268435456 + periodic_compaction_seconds=2592000 + paranoid_file_checks=false + experimental_mempurge_threshold=0.000000 + memtable_prefix_bloom_size_ratio=0.000000 + max_bytes_for_level_base=268435456 + max_sequential_skip_in_iterations=8 + report_bg_io_stats=false + sst_partitioner_factory=nullptr + compaction_pri=kMinOverlappingRatio + compaction_style=kCompactionStyleLevel + compaction_filter_factory=nullptr + compaction_filter=nullptr + memtable_factory=SkipListFactory + comparator=leveldb.BytewiseComparator + bloom_locality=0 + min_write_buffer_number_to_merge=1 + table_factory=BlockBasedTable + max_write_buffer_size_to_maintain=0 + max_write_buffer_number_to_maintain=0 + optimize_filters_for_hits=false + default_temperature=kUnknown + preserve_internal_time_seconds=0 + force_consistency_checks=true + merge_operator={id=StringAppendTESTOperator;delimiter=,;} + num_levels=7 + level_compaction_dynamic_file_size=true + memtable_insert_with_hint_prefix_extractor=nullptr + level_compaction_dynamic_level_bytes=false + persist_user_defined_timestamps=true + preclude_last_level_data_seconds=0 + inplace_update_support=false + +[TableOptions/BlockBasedTable "default"] + num_file_reads_for_auto_readahead=2 + metadata_cache_options={unpartitioned_pinning=kFallback;partition_pinning=kFallback;top_level_index_pinning=kFallback;} + read_amp_bytes_per_bit=0 + verify_compression=false + format_version=5 + optimize_filters_for_memory=false + partition_filters=false + detect_filter_construct_corruption=false + initial_auto_readahead_size=8192 + max_auto_readahead_size=262144 + enable_index_compression=true + checksum=kXXH3 + index_block_restart_interval=1 + pin_top_level_index_and_filter=true + block_align=false + block_size=4096 + index_type=kBinarySearch + filter_policy=nullptr + metadata_block_size=4096 + no_block_cache=false + index_shortening=kShortenSeparators + whole_key_filtering=true + block_size_deviation=10 + data_block_index_type=kDataBlockBinarySearch + data_block_hash_table_util_ratio=0.750000 + cache_index_and_filter_blocks=true + prepopulate_block_cache=kDisable + block_restart_interval=16 + pin_l0_filter_and_index_blocks_in_cache=true + cache_index_and_filter_blocks_with_high_priority=true + flush_block_policy_factory=FlushBlockBySizePolicyFactory + + +[CFOptions "_timer_state/processing_timer"] + bottommost_file_compaction_delay=0 + memtable_protection_bytes_per_key=0 + compression_per_level=kSnappyCompression + bottommost_compression=kDisableCompressionOption + sample_for_compression=0 + blob_garbage_collection_age_cutoff=0.250000 + blob_compression_type=kNoCompression + prepopulate_blob_cache=kDisable + blob_compaction_readahead_size=0 + level0_stop_writes_trigger=36 + min_blob_size=0 + last_level_temperature=kUnknown + compaction_options_universal={allow_trivial_move=false;stop_style=kCompactionStopStyleTotalSize;min_merge_width=2;compression_size_percent=-1;max_size_amplification_percent=200;incremental=false;max_merge_width=4294967295;size_ratio=1;} + target_file_size_base=67108864 + ignore_max_compaction_bytes_for_input=true + memtable_whole_key_filtering=false + blob_file_starting_level=0 + soft_pending_compaction_bytes_limit=68719476736 + max_write_buffer_number=2 + ttl=2592000 + compaction_options_fifo={file_temperature_age_thresholds=;allow_compaction=false;age_for_warm=0;max_table_files_size=1073741824;} + check_flush_compaction_key_order=true + memtable_huge_page_size=0 + max_successive_merges=0 + inplace_update_num_locks=10000 + enable_blob_garbage_collection=false + arena_block_size=1048576 + bottommost_compression_opts={use_zstd_dict_trainer=true;enabled=false;zstd_max_train_bytes=0;parallel_threads=1;max_compressed_bytes_per_kb=896;checksum=false;max_dict_bytes=0;strategy=0;max_dict_buffer_bytes=0;level=32767;window_bits=-14;} + target_file_size_multiplier=1 + max_bytes_for_level_multiplier_additional=1:1:1:1:1:1:1 + blob_garbage_collection_force_threshold=1.000000 + enable_blob_files=false + level0_slowdown_writes_trigger=20 + compression=kSnappyCompression + level0_file_num_compaction_trigger=4 + block_protection_bytes_per_key=0 + prefix_extractor=nullptr + max_bytes_for_level_multiplier=10.000000 + write_buffer_size=67108864 + disable_auto_compactions=false + max_compaction_bytes=1677721600 + memtable_max_range_deletions=0 + compression_opts={use_zstd_dict_trainer=true;enabled=false;zstd_max_train_bytes=0;parallel_threads=1;max_compressed_bytes_per_kb=896;checksum=false;max_dict_bytes=0;strategy=0;max_dict_buffer_bytes=0;level=32767;window_bits=-14;} + hard_pending_compaction_bytes_limit=274877906944 + blob_file_size=268435456 + periodic_compaction_seconds=2592000 + paranoid_file_checks=false + experimental_mempurge_threshold=0.000000 + memtable_prefix_bloom_size_ratio=0.000000 + max_bytes_for_level_base=268435456 + max_sequential_skip_in_iterations=8 + report_bg_io_stats=false + sst_partitioner_factory=nullptr + compaction_pri=kMinOverlappingRatio + compaction_style=kCompactionStyleLevel + compaction_filter_factory=nullptr + compaction_filter=nullptr + memtable_factory=SkipListFactory + comparator=leveldb.BytewiseComparator + bloom_locality=0 + min_write_buffer_number_to_merge=1 + table_factory=BlockBasedTable + max_write_buffer_size_to_maintain=0 + max_write_buffer_number_to_maintain=0 + optimize_filters_for_hits=false + default_temperature=kUnknown + preserve_internal_time_seconds=0 + force_consistency_checks=true + merge_operator={id=StringAppendTESTOperator;delimiter=,;} + num_levels=7 + level_compaction_dynamic_file_size=true + memtable_insert_with_hint_prefix_extractor=nullptr + level_compaction_dynamic_level_bytes=false + persist_user_defined_timestamps=true + preclude_last_level_data_seconds=0 + inplace_update_support=false + +[TableOptions/BlockBasedTable "_timer_state/processing_timer"] + num_file_reads_for_auto_readahead=2 + metadata_cache_options={unpartitioned_pinning=kFallback;partition_pinning=kFallback;top_level_index_pinning=kFallback;} + read_amp_bytes_per_bit=0 + verify_compression=false + format_version=5 + optimize_filters_for_memory=false + partition_filters=false + detect_filter_construct_corruption=false + initial_auto_readahead_size=8192 + max_auto_readahead_size=262144 + enable_index_compression=true + checksum=kXXH3 + index_block_restart_interval=1 + pin_top_level_index_and_filter=true + block_align=false + block_size=4096 + index_type=kBinarySearch + filter_policy=nullptr + metadata_block_size=4096 + no_block_cache=false + index_shortening=kShortenSeparators + whole_key_filtering=true + block_size_deviation=10 + data_block_index_type=kDataBlockBinarySearch + data_block_hash_table_util_ratio=0.750000 + cache_index_and_filter_blocks=true + prepopulate_block_cache=kDisable + block_restart_interval=16 + pin_l0_filter_and_index_blocks_in_cache=true + cache_index_and_filter_blocks_with_high_priority=true + flush_block_policy_factory=FlushBlockBySizePolicyFactory + + +[CFOptions "_timer_state/event_timer"] + bottommost_file_compaction_delay=0 + memtable_protection_bytes_per_key=0 + compression_per_level=kSnappyCompression + bottommost_compression=kDisableCompressionOption + sample_for_compression=0 + blob_garbage_collection_age_cutoff=0.250000 + blob_compression_type=kNoCompression + prepopulate_blob_cache=kDisable + blob_compaction_readahead_size=0 + level0_stop_writes_trigger=36 + min_blob_size=0 + last_level_temperature=kUnknown + compaction_options_universal={allow_trivial_move=false;stop_style=kCompactionStopStyleTotalSize;min_merge_width=2;compression_size_percent=-1;max_size_amplification_percent=200;incremental=false;max_merge_width=4294967295;size_ratio=1;} + target_file_size_base=67108864 + ignore_max_compaction_bytes_for_input=true + memtable_whole_key_filtering=false + blob_file_starting_level=0 + soft_pending_compaction_bytes_limit=68719476736 + max_write_buffer_number=2 + ttl=2592000 + compaction_options_fifo={file_temperature_age_thresholds=;allow_compaction=false;age_for_warm=0;max_table_files_size=1073741824;} + check_flush_compaction_key_order=true + memtable_huge_page_size=0 + max_successive_merges=0 + inplace_update_num_locks=10000 + enable_blob_garbage_collection=false + arena_block_size=1048576 + bottommost_compression_opts={use_zstd_dict_trainer=true;enabled=false;zstd_max_train_bytes=0;parallel_threads=1;max_compressed_bytes_per_kb=896;checksum=false;max_dict_bytes=0;strategy=0;max_dict_buffer_bytes=0;level=32767;window_bits=-14;} + target_file_size_multiplier=1 + max_bytes_for_level_multiplier_additional=1:1:1:1:1:1:1 + blob_garbage_collection_force_threshold=1.000000 + enable_blob_files=false + level0_slowdown_writes_trigger=20 + compression=kSnappyCompression + level0_file_num_compaction_trigger=4 + block_protection_bytes_per_key=0 + prefix_extractor=nullptr + max_bytes_for_level_multiplier=10.000000 + write_buffer_size=67108864 + disable_auto_compactions=false + max_compaction_bytes=1677721600 + memtable_max_range_deletions=0 + compression_opts={use_zstd_dict_trainer=true;enabled=false;zstd_max_train_bytes=0;parallel_threads=1;max_compressed_bytes_per_kb=896;checksum=false;max_dict_bytes=0;strategy=0;max_dict_buffer_bytes=0;level=32767;window_bits=-14;} + hard_pending_compaction_bytes_limit=274877906944 + blob_file_size=268435456 + periodic_compaction_seconds=2592000 + paranoid_file_checks=false + experimental_mempurge_threshold=0.000000 + memtable_prefix_bloom_size_ratio=0.000000 + max_bytes_for_level_base=268435456 + max_sequential_skip_in_iterations=8 + report_bg_io_stats=false + sst_partitioner_factory=nullptr + compaction_pri=kMinOverlappingRatio + compaction_style=kCompactionStyleLevel + compaction_filter_factory=nullptr + compaction_filter=nullptr + memtable_factory=SkipListFactory + comparator=leveldb.BytewiseComparator + bloom_locality=0 + min_write_buffer_number_to_merge=1 + table_factory=BlockBasedTable + max_write_buffer_size_to_maintain=0 + max_write_buffer_number_to_maintain=0 + optimize_filters_for_hits=false + default_temperature=kUnknown + preserve_internal_time_seconds=0 + force_consistency_checks=true + merge_operator={id=StringAppendTESTOperator;delimiter=,;} + num_levels=7 + level_compaction_dynamic_file_size=true + memtable_insert_with_hint_prefix_extractor=nullptr + level_compaction_dynamic_level_bytes=false + persist_user_defined_timestamps=true + preclude_last_level_data_seconds=0 + inplace_update_support=false + +[TableOptions/BlockBasedTable "_timer_state/event_timer"] + num_file_reads_for_auto_readahead=2 + metadata_cache_options={unpartitioned_pinning=kFallback;partition_pinning=kFallback;top_level_index_pinning=kFallback;} + read_amp_bytes_per_bit=0 + verify_compression=false + format_version=5 + optimize_filters_for_memory=false + partition_filters=false + detect_filter_construct_corruption=false + initial_auto_readahead_size=8192 + max_auto_readahead_size=262144 + enable_index_compression=true + checksum=kXXH3 + index_block_restart_interval=1 + pin_top_level_index_and_filter=true + block_align=false + block_size=4096 + index_type=kBinarySearch + filter_policy=nullptr + metadata_block_size=4096 + no_block_cache=false + index_shortening=kShortenSeparators + whole_key_filtering=true + block_size_deviation=10 + data_block_index_type=kDataBlockBinarySearch + data_block_hash_table_util_ratio=0.750000 + cache_index_and_filter_blocks=true + prepopulate_block_cache=kDisable + block_restart_interval=16 + pin_l0_filter_and_index_blocks_in_cache=true + cache_index_and_filter_blocks_with_high_priority=true + flush_block_policy_factory=FlushBlockBySizePolicyFactory + + +[CFOptions "state-name"] + bottommost_file_compaction_delay=0 + memtable_protection_bytes_per_key=0 + compression_per_level=kSnappyCompression + bottommost_compression=kDisableCompressionOption + sample_for_compression=0 + blob_garbage_collection_age_cutoff=0.250000 + blob_compression_type=kNoCompression + prepopulate_blob_cache=kDisable + blob_compaction_readahead_size=0 + level0_stop_writes_trigger=36 + min_blob_size=0 + last_level_temperature=kUnknown + compaction_options_universal={allow_trivial_move=false;stop_style=kCompactionStopStyleTotalSize;min_merge_width=2;compression_size_percent=-1;max_size_amplification_percent=200;incremental=false;max_merge_width=4294967295;size_ratio=1;} + target_file_size_base=67108864 + ignore_max_compaction_bytes_for_input=true + memtable_whole_key_filtering=false + blob_file_starting_level=0 + soft_pending_compaction_bytes_limit=68719476736 + max_write_buffer_number=2 + ttl=2592000 + compaction_options_fifo={file_temperature_age_thresholds=;allow_compaction=false;age_for_warm=0;max_table_files_size=1073741824;} + check_flush_compaction_key_order=true + memtable_huge_page_size=0 + max_successive_merges=0 + inplace_update_num_locks=10000 + enable_blob_garbage_collection=false + arena_block_size=1048576 + bottommost_compression_opts={use_zstd_dict_trainer=true;enabled=false;zstd_max_train_bytes=0;parallel_threads=1;max_compressed_bytes_per_kb=896;checksum=false;max_dict_bytes=0;strategy=0;max_dict_buffer_bytes=0;level=32767;window_bits=-14;} + target_file_size_multiplier=1 + max_bytes_for_level_multiplier_additional=1:1:1:1:1:1:1 + blob_garbage_collection_force_threshold=1.000000 + enable_blob_files=false + level0_slowdown_writes_trigger=20 + compression=kSnappyCompression + level0_file_num_compaction_trigger=4 + block_protection_bytes_per_key=0 + prefix_extractor=nullptr + max_bytes_for_level_multiplier=10.000000 + write_buffer_size=67108864 + disable_auto_compactions=false + max_compaction_bytes=1677721600 + memtable_max_range_deletions=0 + compression_opts={use_zstd_dict_trainer=true;enabled=false;zstd_max_train_bytes=0;parallel_threads=1;max_compressed_bytes_per_kb=896;checksum=false;max_dict_bytes=0;strategy=0;max_dict_buffer_bytes=0;level=32767;window_bits=-14;} + hard_pending_compaction_bytes_limit=274877906944 + blob_file_size=268435456 + periodic_compaction_seconds=2592000 + paranoid_file_checks=false + experimental_mempurge_threshold=0.000000 + memtable_prefix_bloom_size_ratio=0.000000 + max_bytes_for_level_base=268435456 + max_sequential_skip_in_iterations=8 + report_bg_io_stats=false + sst_partitioner_factory=nullptr + compaction_pri=kMinOverlappingRatio + compaction_style=kCompactionStyleLevel + compaction_filter_factory=nullptr + compaction_filter=nullptr + memtable_factory=SkipListFactory + comparator=leveldb.BytewiseComparator + bloom_locality=0 + min_write_buffer_number_to_merge=1 + table_factory=BlockBasedTable + max_write_buffer_size_to_maintain=0 + max_write_buffer_number_to_maintain=0 + optimize_filters_for_hits=false + default_temperature=kUnknown + preserve_internal_time_seconds=0 + force_consistency_checks=true + merge_operator={id=StringAppendTESTOperator;delimiter=,;} + num_levels=7 + level_compaction_dynamic_file_size=true + memtable_insert_with_hint_prefix_extractor=nullptr + level_compaction_dynamic_level_bytes=false + persist_user_defined_timestamps=true + preclude_last_level_data_seconds=0 + inplace_update_support=false + +[TableOptions/BlockBasedTable "state-name"] + num_file_reads_for_auto_readahead=2 + metadata_cache_options={unpartitioned_pinning=kFallback;partition_pinning=kFallback;top_level_index_pinning=kFallback;} + read_amp_bytes_per_bit=0 + verify_compression=false + format_version=5 + optimize_filters_for_memory=false + partition_filters=false + detect_filter_construct_corruption=false + initial_auto_readahead_size=8192 + max_auto_readahead_size=262144 + enable_index_compression=true + checksum=kXXH3 + index_block_restart_interval=1 + pin_top_level_index_and_filter=true + block_align=false + block_size=4096 + index_type=kBinarySearch + filter_policy=nullptr + metadata_block_size=4096 + no_block_cache=false + index_shortening=kShortenSeparators + whole_key_filtering=true + block_size_deviation=10 + data_block_index_type=kDataBlockBinarySearch + data_block_hash_table_util_ratio=0.750000 + cache_index_and_filter_blocks=true + prepopulate_block_cache=kDisable + block_restart_interval=16 + pin_l0_filter_and_index_blocks_in_cache=true + cache_index_and_filter_blocks_with_high_priority=true + flush_block_policy_factory=FlushBlockBySizePolicyFactory + diff --git a/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/_metadata b/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/_metadata new file mode 100644 index 0000000000000000000000000000000000000000..85a00a82d815e4328a9ecaf575341ac1f8e51546 GIT binary patch literal 8218 zcmchcU8tqkS;zMzr)kp9SR&dgB;sfhSu^YVqm9xK6HN0-W)f>b>iW!#nK?7gIa3lZ z3M%M@xe~$NC_+n7Xa&8|3(<>06@oW@V9_fPl%g$Ykyt_TxAuPb%sw-FCKbUAGw(V3 zyz5=hdOrTo|Np#C{q!qhwOZZBzxlamb6MTL`p$D#u3xMDBab|O{pk40jvJ_~PL!n=kdlKm1ew{)K%0i(h#7%^&<=_|-q=A*c9vFdsI5n4eSgw^OV4 z9IYQKj*jzjzi|_P`lERhpFiJRR{yYE|LeZhX=!?j#W|sa)51pWMU*ZIH$u(Lwi-v= z+9%%dT-~Z5%UKAuKxPZe(%Cp-u&-3Uii5O|KnHm zi;we!Y4Z9I_wvK`AggyT&%S4MIy4(hlU11Dy0E%x5v$5VtCFRZ#$`X2rOR^nHO^yg zDn3^u47UlZd=uF=BUFej%h6*EVYA7pZ!Mc0tlszh3+JDD{<(942TPfFjA>4$5S19l zD|R1MZ~uU6(#LBSeHc<%hPJoFxN#MJIAmWRr^8bneh=#omTX0d$r;OhO)KK9&GPd;(( z{KjO*`h-jJh)y(@gRny;kw=mu`P59Tt~I}nZrmD3WX$D@PY4v@UwIQimSB zEN1b~`m)X5-4LbXj2d=eaWcZXz-Gf5k+YSx_tvZLES^iZA^KMgl`b3OZRL!St!ql6 z)OE^vRuQ|{n2{t& zB2%2oDW)FN*6Eb=>EVL0mRR+PM}#-K-8Do;CzTCJ z=8VB#EE35Q>DWRWzA4huW!J-@zf zjiB81{Bo0i>}wzT-FJWE``-95dFidc_~6IB#1n6z=o(6wbM3}|C~`{TgsdbeibugQ zT}4;b+l)tyRm-v^{!hL{{JR{L(ntc}pev{uvmlEI4Zr)+sJ3ORqEiwo0nW3D;(!#27>@w5HH%GbMSS{1yxU{v>)UHO=oj z)lwuzs{+CRiqSVGdac^G6soUjWA?}Xd38GG22g3hJvg#7>c%=p?uY380If#ZZnj>u zIO;^5*%W<{LyBDdLnLXSy>Il_H~`jrOWaQFJowm+J)iqvjzriq*MTuDs)!f zv{(xXw=wh`zqGkRCpPWIE$wD_dd+N7AR4Z&nS`%7i%Alo4Rv-XNr%!b z>sbe-jU05ZjiGl;jIK#1ux$3nIQyd#MHwedE7_5CEtzc%zkEw#)S>W*2PWFA2)s_` zDO&j2bc%yE7?*<|yn0Jw5CiFBFv2$pZU=HQd3IH~(U)<*joV#+bWdVr@T$WeI4ziC z)qpqEE(MTb0`EcjcjT+Ig^VTf4U+MvjrnBO?pw&hD|m3pjYStg23Dq{GI|w;@KOM297l zxRs>^rj|>=dx5jl6tdLYrH}4OjFcgV4o=)PY|W-bM`%Tf7SIRSfCWo{PbS9D-n#+! z=?ze{@CK22kkHk;=s+4hwmf$)WrHS`qJk1JC)Udi(4k6Ni8QEDquD_W=Tb|Ro+BHa z!|FogExri8D#7OHQ*KKda(VB$i-)g%~HWlAHh#cKRNN;O|^OQ>l=x<^YyJ(n0LSRrN=(~PhY<9L!bYXU;D|wdndR4 zKUnc?i%I>rzyFEv=;BA7`o+(^=kVkI`R4cT+P70JC)zVD+@R1XQ?PqeH9116C4@kZ z9N`Ny`KBuucdo@`@t(?%VWKd>AKr;#Xs|&7Ws|axZM(TE4Q@uFQzA%Ad6DqYk&K^kD_udvd`?*4(1sPYrkC_PDJD@OUQ)_JN5B+ZnFNgD zlU0(@-rAzKoMwO88lQK_OMABCENkk+O&{m z_}HCuBW`!Y!#l~jqxTz<3>pHkMTna%(_)P@Y{T_1A|0nrC+##!H^pSMRYLfO2%``p zxR%Hg&RD7jU%in(90}x#cW!7KaBYa>-_|m<$6kIGbE( z%#mzs&{XXWte~QTCH$}~J!?PR9J5Xw*;sR@3TvZTdnk?WrNR9qNxc)IKDw@k`AGs8 zuyS&k$#pXoP>qYI=k?nn8Z_#2?8 zNnn$K0&cXlxI9Txj}k(}$iQtUTU!)ei%B`)$pH-tIB>4S=p-5kSZG;WO}dtCZS5D6 zOtt8qOu`)0ohXnxrC3_O(oDu$LFsKZ>|QK$OkAAFRmeO^3*!qgl+m8+1su%G1l*E1 zt9@d!IHUz*KniP8!#p$$Voun|33Q5KtU>RdpD89scL+#$4K9I*)=Z5|>J6!bF=$4b zZn=B2=G5kLqFbTFs%A_hAlg&qGz@mtGsD4_+)^uPPFb&TvDA?h}*n_67$hB9h4lMzb@s zG_a{lGR(EIX3}hak{T*HN+5Tr?g=OXOv?;Kg;Eq;r}N(!_3W>1`W1saI)w{!gc>Q; zWapH@Bn3-txP7VasTl@+Goall{TbEePU8ZUsOddL^M18%?vmk92ov`+*nc-MsTo``B0#?fJF|mvd`8%EhJ>b^>OU`?`D9|i^i3clj5Ovj z2e2TanC)nfLaa18y%mG|6NBa;88Oky$w+nsA~OXnDh$ejToyQ4f=prv7gb9cinJyx!HScpaJD*I92DOb4S^`AnG8Nzz4X#{))O&wfV?N9E5j;wOZYc-<_$`r8!{sX zxm6$2*8jyzMRoC;LOuQKUwP|WUw`fBv+9+9WBF_(lK^Zx%HEfX^Y81Mxc=$I>G%%VLGOCdeiC0l-%X@xcS-xDp`1RF0j;^iZm20n@ z$yal|(9euZsN^%(uJcy(azDd2%RACDH)rNAT$_{hcMvLsOD?! z@qAeOrAxhia`oQjt0(it_3!WB{(kZB;?ae9$M&0Z*UQm$WckgwI8;vA*yEME-IRLe zT0h%g>-GBa#VdzrZ#?M98_PcW%<5o{CXQDhc;;vFr}NoM`S6vq=Z>%OdYZpIboI*7 z@y#GSR_Ak$S3iFHR{Ku9Yxn6F_B;t+eCFE9+~$O7_n8}ZpV?#gHl;qWTD^8{^}cEP znQ8i&Cl0S)-u>g%U3aa{KCu= z#lpbI#K6MvM@Q`^8v`RJ12Y>7gWTUAht2S7XJTRIU|~4H$as>GtGFbwBvm&rF*g-t z=#hPGa@jybS%7A7voNJIaP8p`Vq$;+Mn(t=F2o3O02nYbv9f;n{PPkU8-(IzWMpUH zU=Pj9&dV>);}I~aj}PtlxK)3{SiXYoDw`TV(*zDipc7P;dhr`KwPtPGxN>!o8U+=bT1%J@0VVG2>Rcy zotF%4OZX5k-h6rDV{q`F{=sqYlzYDWwDKmH88$lEw7fwZ5(U~|7C3dRA%P0Tp-Wva z1CN;=Cz*j%bZIK210z&(cDh138ya0Vq4!%Ih2tdAvfWZNWi26lRB$pmd`Pht#7?xp z#MUtfCo;?p)?%c-dNiDFWy~8{gO0FpPVZPsh26%3v|3dx%X*dYF^P5N zP+>b*vhKtU;p|c^nqREuVV34jo~oZ(tXhYmq1juSU97fPH|8R7aRU=rueoa-kG&eb zg!-)q<%hxl2DQ@^yBJ{G7UCSAhs*& zW4tz>CiPn5Og*YC!0eeM;%J^fJ+XIcLt8h%oM&5t+uCK8oYi`>cGYN#3uAI(e826F zW8ixE=B?$c>njWE>lbg$U5~EZIDPF>xiF#?^~3-A?dSX5VUcj=7`5UqM8!P>BsknV zuF(eJz7gCo&?K+?Pt=}};No*oFj^+vK7vY6O}7yg_Y!Sd%+W0{emy~Wfb=Qk*&!^& zDH)%Fl!u8=e5^c4wwP=q(=6p6u^v!~=Dox#N|EsB!Yh#=iO_1+d+m%eo>|R|V>=Zf zAwfZbL;)2wKL8CMfM}5T1mFWeAR#*LtQ|)bh}~jm&)jpL=Xz6K|9y|VdXW8)_c~AC z(UR{Is}&2 zK?lY%3m0RI4aT6S4xI5P>oL>JDlOmu1ZK6~w$S7TE~}%PY-&h5l9HQ}#c@0DKO=#P zEdr*ADXV4>a%)zL<++tY;%0UB(&ED6O2Jrk4Yl@aX{AtStsvqR8-y6ZIONdSC~z=Z zae0h`bj^tVCN-*6tfI$l7zh%6;xcgndbPY#Nav?DFpCvZEQUuQEw}BZrMU%sS+Nv` zv&FeNU`1A%UoI}Ph0-!B&zBg3vEkEu%Ge&~3OnGDDQ>XJx>Eban_5vE7!zZoCrzgv zJ=2Z5J8L($Z_ICRU)!0zUA}&2>DF2&(&v&~7}QKS4SYa_ZoQ zVwbcFL2?7c1wNlUMGlx~pwbMDKwv%~D=LDB_&I_ysR30nXeJ}$<@-;gEHBMm=zFCtEqA|^E_iLFjJF}UY($>Ym0z>9T8Faxf4U?&>p3rFhYRwL+_X#j|YG2;R}Q&Kv@Efc5D?I~LAvgstWE zW*%l^X>oOBb-igFhKAl~BU*2!eArGz$F*ZjU_J86x}@!4^b+bE2jx3Y{w4LhT`=c9 zeGBcJpNGr?fZ1rRH%pD12Drn)Fly6dk4F>4-W1> zUwYhn_;l^jcC|RE6>}nm??3;1xfqma!X0N;yn=<&B?=N8E*W=bNiZ{s>jc)xD?erZ z@T^M##VzL~Qm)eB34=*cJ$Fb-Q&gLjJ9Z4luZILz=!ssu6oh3sCF4`j>IC(PuUD_q zV=ntBE6Wm)SP!UIEjUV=B<7cYYfW*y}5egCtS@@fD6 zF9_1?(V-Yj-B4V{!pIyT5K-NdgwpT QB-(#}{`KbL=C`+h0VP#QssI20 literal 0 HcmV?d00001 diff --git a/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/aafbb7c7-566f-4d29-bb41-d12b72dbcbb1 b/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/aafbb7c7-566f-4d29-bb41-d12b72dbcbb1 new file mode 100644 index 00000000000000..aa5bb8ea50905a --- /dev/null +++ b/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/aafbb7c7-566f-4d29-bb41-d12b72dbcbb1 @@ -0,0 +1 @@ +MANIFEST-000005 diff --git a/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/af3112be-ef01-4097-b74e-b07eb0ec5323 b/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/af3112be-ef01-4097-b74e-b07eb0ec5323 new file mode 100644 index 0000000000000000000000000000000000000000..274f614f68f8dff5c2bb13689d7681a489b22192 GIT binary patch literal 1084 zcmah|Piq@T6rYjpXr;)qWHli+1VrnLAv;*HEjt(=oVF=2WeujR7K#kEwJnoV7IvBaz4v>6e{-WjmZBL_p`=tP z*GP%d`RX<)o>KVI@c!}p^U?JhX`cJtASJRgwf_D7sOsWZ!V&>{> zRr3s-=N{s4sz%FM&Mo)GDmVd!CET8P7)b|Tn{!L8e93}y(&&B7^L)~ZexW^+dj#AF z>ocQXUwXG2cQ$s~MVQ_7n_JzjowoBB8U~ZywVigx$2}nv-|J%n7m%mUi(Y`yOX>?8 zbm&}sN*bmq*bASbgI>WeLKXqQ?sj(CmDY*{?r|^-n~?&vmws|{vzu;qx*Ku2&PBYD zCf&GytJ{e;VeMAZ5oq4nZq8pjGR{vq-|!PDTzroww~aZDA6Ub1J6tszU%1n8OkM9i zIox}2aDVgQ;LhRt51sEHZ$G?SFV7jxyv*R=w;x|#iYioa&zX}?VYPCZf&!0A#+^A5 zEzaROfh9%dXRJ4YbvdHA<$^@2bviy}Fa>(xk4R;n8k=#?PQZrskmw3M)k~0qbPT6t zLke1-r6KW`^{e!Rt0BtDF#!te0i75Df<|?kfgJ!dIascRBdwWhD2sg`M7Edbpv9wa z_aEI4X2hcfs)rdXdMZ@wXst|f+ExM{>-1Ehy)%T=7AS@tK#XajkPe9!=8O`k#zMK% zNmW|Z%7N5e1vLZ1G<~p*=t}ua`Y^_QCs+du64pbda&N26QmEWd7^+@DFuNarifWj3 zRKyScFV(7N{fECOYEsXoVt5~{XC_S@_|@~PNk07cRf{anoL|k{7V)vW?|v;$onHLY bdo}yI++JM@&}W`GwEy?#yPsd|y?*vT2i;Jd literal 0 HcmV?d00001 diff --git a/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/afb50700-193c-4af8-9a4d-b9de4c10ce9c b/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/afb50700-193c-4af8-9a4d-b9de4c10ce9c new file mode 100644 index 0000000000000000000000000000000000000000..b7fa4cd558dd3c2e08ae0d3329a4fe9eef1cb1ba GIT binary patch literal 1084 zcmah|%}*Og6yG5RuNPx%oS>9kd_byHv7-f&*aUHaeqBO73Q_`Xv>JP!&4}5V)yx>% zk#dZbYcBaG@(1u|RO+c`dhDTNK9dG;$S2!e66n~)$*JHYlT(^iskvF8NMf}&K&}Fg!$=F z+7-_3#OwFBTZNmQ&5icM_IArUbPa>aPO{y~*f`~)=h7|)upW7B9Zx-sT0-66pnT>0 zzedA;AIy!;&_Y_+7cL72V0PBGTb1Uj0p_qV6pIlYloM{Ukt9jGpKQgvvkCEi-b>=G z2OFKZv)Or=bQ8YS?z9^VcTco+Q=4ztncz0wXT3eGPvd7sQ=ATyjrwhS*^a5|{>$Ut zXGc#T936dky!pfWlNX)mk89;wt*8?j{Q1|XU*^IJ;mk2=#cNor%oC8{aL70_8-z=< zI8LCwBJ+P+&4&c1To?sWjf^iXs01}|CqZR_Xp=EV&%pTc1mPWW$rn!rVJUXW_zp`cC>F3xJnk&Oj&r=6-a zi4g;#nDlH0ieb87qVP`niuy3ddG{~}>M5*-Qs&M?jTxW0n^0uE1TVHfz6z@tbyWEG z^{-Z=tNQ(`9yW+$LQ>oZ+!nIJGDHGms9Y2mF*0x!mn4>?>gFZprULB&0Y(M^Z`Vjy zm-yfi#}L=}kjMa62G%e~pHNqzBol)Gm>D1J8szEd;~C`|1Qw-@^F;g{eO-eC9GzX! i?F+*Q4p;<${i7F_pPAwZ^iwe~+K{3{1&26tpa1|C;-Pr} literal 0 HcmV?d00001 diff --git a/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/c1100c71-5003-4482-bf79-729522742cc8 b/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/c1100c71-5003-4482-bf79-729522742cc8 new file mode 100644 index 0000000000000000000000000000000000000000..0c27c59342175629cc8dccf5bb775a4d7e25b283 GIT binary patch literal 1099 zcmah|&2AG(5bjPKJT}IOF+m|*j25H_;U*@D0fijG&k7;2K!OATp;3Ff#%ZP9J?d`9 zHb*2RxWNN(V()w8F_3r!o&dy3tG!V@P7IuwQ_olR)$dmq=ExZ`O-huMOT_}2szul6 z6q$S!Uv%r{>-Xm>EWLS2&K9gm_MGUjj=~4)a0h~U-ci7$7BFOf zltJJu&e6<5Du*nU%7c}J&3*R zfsLK#9xlQ@Xg@~E(PA&-mV09r!U_wzKJqY-4sMu3OQm?kf^*X7ZOyZ6RFB@$*km37 zH^6GmAnr)-Hkz%~^+q0MW98E2_T}}4^B5YsqmAYDMvo6;Arl{WFo6rmbLT}IVDysu z2M#*SLHtVUrztit;r1QGIX@4X2LQX#T5pusMOBtBm~N%y(xqsSZ+ps*g$i4h=ZRHdkpE-;gUL zlslPJsZOozO3hW!HZV-n0XrMb7Y_~rhPdwpYhXdzy028`ZMilTD)%FXH=rPx-P31L z1+xzF_@VzZmGVLV;g3W$>bX=5&%%0U($s-pIy_YJ?sgT(@#(`u&1@bYySx2&apLsh c#nwNCuf@jF=>Yxan?d`3AOC&%Ve|8=?@bv}+5i9m literal 0 HcmV?d00001 diff --git a/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/c6e8b907-5478-47c5-9312-07b765266a6f b/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/c6e8b907-5478-47c5-9312-07b765266a6f new file mode 100644 index 0000000000000000000000000000000000000000..c4f2c4c98e9ef7b58d9f11f92fa07f2212a6215f GIT binary patch literal 747 zcmZS8)^KKEU^I2G?@(Z1WR%KDElbTwNz!wwEJ-cTEKYUK&n-wSN-W7Q>U3aa{KCu= z#lpbI#K6MvM@Q`^8v`RJ12Y>7gXXK5;hy-lGqEspurQopWIV|z8()%{n_3iKT#{Il zs$Wo)pPX7;oSByn5eC`wkw^BF3qkX^K;|)>WRyTL59oos5`m zBNy0Bx_ODYsUUa69`5Fd7(bU_e*}6BFEdA3?6f<-8!c z^A>}g$K-!VMG@jW0g&^S-*H!|god6V$aw;LI3!`tLxdV5#96py7#WFkjxXFflR?g5 O)}2)20&$KY$T+!nIJGDHGms9Y2mF*0x!mn4>?>gFZprULB&0Y(M^Z`Vjy zm-yfi#}L=}kjMa62G%e~pHNqzBol)Gm>D1J8szEd;~C`|1Qw-@^F;g{eO-eC9GzX! i?F+*Q4p;<${i7F_pPAwZ^iwe~+K{3{1&26tpa1|C;-Pr} literal 0 HcmV?d00001 diff --git a/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/cf1e716c-ed57-40b5-85b2-6cd298f3548c b/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/cf1e716c-ed57-40b5-85b2-6cd298f3548c new file mode 100644 index 0000000000000000000000000000000000000000..8647747ea1fc75c235d2121ddb1c85bbd3370692 GIT binary patch literal 1131 zcmah|OK($06rKrAd~J*qV?YoI$(2BrkUWivNn%1&B|yc7SA#@DRb7qm96O_oXRc<( zvCRsEs&-j^LDy_pA+ckRSRi%7o?pSTT$H_|AOi`JEd}ch|oVD zmtOxzE>n`Dxk9BBogtqK#T=oP=n9=9(?ju#e*0wW4|3*!^?70prf?`}j$iov{`s31 zW$`lEpxN6d~tPUb-m_1 zx`ys(V`;tCX*NZDt#K)-H!q4ty_KwqI;<_XR$IyP(n@o+a_sc3 zaem6V#`mRg^_x7|GG?!S#~OwM;)V{{}sK8q6umSmYvSpNjp(TL*UGZHD5 z>2S#`k4>pX4L?`K3LO~tUG3=5JA!s>AL*NVLQ*@uJJ}S*I0Sfa0 zofrXvMrDdJ=>jt;SgwU5)gz}-7TZ4PZZl0mi+k6%@7)e&#G`qt`#qM`lnL3wJK|a%R!~@$H9SUv9qt F{eR-fUd;di literal 0 HcmV?d00001 diff --git a/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/cf80c6cb-5402-45a0-a85c-c2c55b414cf3 b/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/cf80c6cb-5402-45a0-a85c-c2c55b414cf3 new file mode 100644 index 0000000000000000000000000000000000000000..474e5548fb8365262577cc36f479455568b52886 GIT binary patch literal 747 zcmZS8)^KKEU^I2G?@(Z1WR%KDElbTwNz!wwEJ-cTEKYUK&n-wSN-W7Q>U3aa{KCu= z#lpbI#K6MvM@Q`^8v`RJ12Y>7gXXK5;hy-lGqEspurQopWIV|z8()%{n_3iKT#{Il zs$Wo)pPX7;oSByn5eC`wkw^BF3qkX^K;|)>WRyTL59oos5`m zBNy0Bx_ODYsUUZ(+ac}L3G^=u(3|`$Z0QVquQ?Q%8W)EP^Uq6cY^)za6fYwqI|B!MXkK<+et8~`fMtDrXurp;`k3GMuh}uU zGVwEQ;$Q@Z-RWd;M-FhH^K&ttq(f(CmYGSDcoYOL z9=!M``~iaaAB2M7RsVpBqImP2ZJXlB4I5^k_kG^aXD(I9OfW_Yl;jHe63J0IRa_<6 zlk@-7zwh6@>|ZF6>apJ?k|T2?>*rqwAIaRf(d|7OM=X+fU=gU(6*MnM6nJ}gd8#vkDVJYDxQFK+(GD1 z#b7o`x#3P53HuaI%Az=GhpYFFJ;p|4( zTwJebVKx>nuPm>u*R8|Q&>e0x*6Rr$v|`bAtq2oXk36+5Zh08JggU`N`Of2iNxe=7 z%!yCWLM!8EA+rErHk#}8LT%0fcQ_b^&4?J36K=S=y10x#9yX$AAzWMp9`eT0TDZcO z8*99|)ZiSdQ|EWJbtBF-zAs`M-s0^mTJME-jb^wVE~}L@_HY~{*ISQvHt%lVS=!#d zv9oZ$dHdn&z0GodLM!G(0^ff8IXD#*Xv`gFRy>9I!XyO=4wsBOvm`h@f$Id;&MH4* zefO-%fZ~=j5-FDH;E=&2sIJ>3g(<2{!X4WOm(S12yM znt@@O2uvk7n?I613~=9Vtbut6tDcmpGsSAoSMG)kRWHGt?c*mw3A6UI_`d&{Qt_yN z{}lvP>bQ^$?}KqncRCi_{PEQ!YtKHtA*aWVuV!kp_}Jae*ZGmt+pn!p<6rXi`56!W R=b1qJ?+-tpzuo-u;x9{*Q4;_F literal 0 HcmV?d00001 diff --git a/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/dac0243f-a584-4fbc-a7a7-e64178d45a62 b/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/dac0243f-a584-4fbc-a7a7-e64178d45a62 new file mode 100644 index 00000000000000..00c77db5b298c5 --- /dev/null +++ b/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/dac0243f-a584-4fbc-a7a7-e64178d45a62 @@ -0,0 +1,541 @@ +# This is a RocksDB option file. +# +# For detailed file format spec, please refer to the example file +# in examples/rocksdb_option_file_example.ini +# + +[Version] + rocksdb_version=8.10.0 + options_file_version=1.1 + +[DBOptions] + max_background_flushes=-1 + compaction_readahead_size=2097152 + strict_bytes_per_sync=false + wal_bytes_per_sync=0 + max_open_files=-1 + stats_history_buffer_size=1048576 + max_total_wal_size=0 + stats_persist_period_sec=600 + stats_dump_period_sec=0 + avoid_flush_during_shutdown=true + max_subcompactions=1 + bytes_per_sync=0 + delayed_write_rate=16777216 + max_background_compactions=-1 + max_background_jobs=2 + delete_obsolete_files_period_micros=21600000000 + writable_file_max_buffer_size=1048576 + file_checksum_gen_factory=nullptr + allow_data_in_errors=false + max_bgerror_resume_count=2147483647 + best_efforts_recovery=false + write_dbid_to_manifest=false + atomic_flush=false + manual_wal_flush=false + two_write_queues=false + avoid_flush_during_recovery=false + dump_malloc_stats=false + info_log_level=INFO_LEVEL + write_thread_slow_yield_usec=3 + unordered_write=false + allow_ingest_behind=false + fail_if_options_file_error=true + persist_stats_to_disk=false + WAL_ttl_seconds=0 + bgerror_resume_retry_interval=1000000 + allow_concurrent_memtable_write=true + paranoid_checks=true + WAL_size_limit_MB=0 + lowest_used_cache_tier=kNonVolatileBlockTier + keep_log_file_num=4 + table_cache_numshardbits=6 + max_file_opening_threads=16 + random_access_max_buffer_size=1048576 + log_readahead_size=0 + enable_pipelined_write=false + wal_recovery_mode=kPointInTimeRecovery + db_write_buffer_size=0 + allow_2pc=false + skip_checking_sst_file_sizes_on_db_open=false + skip_stats_update_on_db_open=false + recycle_log_file_num=0 + db_host_id=__hostname__ + track_and_verify_wals_in_manifest=false + use_fsync=false + wal_compression=kNoCompression + compaction_verify_record_count=true + error_if_exists=false + manifest_preallocation_size=4194304 + is_fd_close_on_exec=true + enable_write_thread_adaptive_yield=true + enable_thread_tracking=false + avoid_unnecessary_blocking_io=false + allow_fallocate=true + max_log_file_size=26214400 + advise_random_on_open=true + create_missing_column_families=false + max_write_batch_group_size_bytes=1048576 + use_adaptive_mutex=false + wal_filter=nullptr + create_if_missing=true + enforce_single_del_contracts=true + allow_mmap_writes=false + access_hint_on_compaction_start=NORMAL + verify_sst_unique_id_in_manifest=true + log_file_time_to_roll=0 + use_direct_io_for_flush_and_compaction=false + flush_verify_memtable_count=true + max_manifest_file_size=1073741824 + write_thread_max_yield_usec=100 + use_direct_reads=false + allow_mmap_reads=false + + +[CFOptions "default"] + bottommost_file_compaction_delay=0 + memtable_protection_bytes_per_key=0 + compression_per_level=kSnappyCompression + bottommost_compression=kDisableCompressionOption + sample_for_compression=0 + blob_garbage_collection_age_cutoff=0.250000 + blob_compression_type=kNoCompression + prepopulate_blob_cache=kDisable + blob_compaction_readahead_size=0 + level0_stop_writes_trigger=36 + min_blob_size=0 + last_level_temperature=kUnknown + compaction_options_universal={allow_trivial_move=false;stop_style=kCompactionStopStyleTotalSize;min_merge_width=2;compression_size_percent=-1;max_size_amplification_percent=200;incremental=false;max_merge_width=4294967295;size_ratio=1;} + target_file_size_base=67108864 + ignore_max_compaction_bytes_for_input=true + memtable_whole_key_filtering=false + blob_file_starting_level=0 + soft_pending_compaction_bytes_limit=68719476736 + max_write_buffer_number=2 + ttl=2592000 + compaction_options_fifo={file_temperature_age_thresholds=;allow_compaction=false;age_for_warm=0;max_table_files_size=1073741824;} + check_flush_compaction_key_order=true + memtable_huge_page_size=0 + max_successive_merges=0 + inplace_update_num_locks=10000 + enable_blob_garbage_collection=false + arena_block_size=1048576 + bottommost_compression_opts={use_zstd_dict_trainer=true;enabled=false;zstd_max_train_bytes=0;parallel_threads=1;max_compressed_bytes_per_kb=896;checksum=false;max_dict_bytes=0;strategy=0;max_dict_buffer_bytes=0;level=32767;window_bits=-14;} + target_file_size_multiplier=1 + max_bytes_for_level_multiplier_additional=1:1:1:1:1:1:1 + blob_garbage_collection_force_threshold=1.000000 + enable_blob_files=false + level0_slowdown_writes_trigger=20 + compression=kSnappyCompression + level0_file_num_compaction_trigger=4 + block_protection_bytes_per_key=0 + prefix_extractor=nullptr + max_bytes_for_level_multiplier=10.000000 + write_buffer_size=67108864 + disable_auto_compactions=false + max_compaction_bytes=1677721600 + memtable_max_range_deletions=0 + compression_opts={use_zstd_dict_trainer=true;enabled=false;zstd_max_train_bytes=0;parallel_threads=1;max_compressed_bytes_per_kb=896;checksum=false;max_dict_bytes=0;strategy=0;max_dict_buffer_bytes=0;level=32767;window_bits=-14;} + hard_pending_compaction_bytes_limit=274877906944 + blob_file_size=268435456 + periodic_compaction_seconds=2592000 + paranoid_file_checks=false + experimental_mempurge_threshold=0.000000 + memtable_prefix_bloom_size_ratio=0.000000 + max_bytes_for_level_base=268435456 + max_sequential_skip_in_iterations=8 + report_bg_io_stats=false + sst_partitioner_factory=nullptr + compaction_pri=kMinOverlappingRatio + compaction_style=kCompactionStyleLevel + compaction_filter_factory=nullptr + compaction_filter=nullptr + memtable_factory=SkipListFactory + comparator=leveldb.BytewiseComparator + bloom_locality=0 + min_write_buffer_number_to_merge=1 + table_factory=BlockBasedTable + max_write_buffer_size_to_maintain=0 + max_write_buffer_number_to_maintain=0 + optimize_filters_for_hits=false + default_temperature=kUnknown + preserve_internal_time_seconds=0 + force_consistency_checks=true + merge_operator={id=StringAppendTESTOperator;delimiter=,;} + num_levels=7 + level_compaction_dynamic_file_size=true + memtable_insert_with_hint_prefix_extractor=nullptr + level_compaction_dynamic_level_bytes=false + persist_user_defined_timestamps=true + preclude_last_level_data_seconds=0 + inplace_update_support=false + +[TableOptions/BlockBasedTable "default"] + num_file_reads_for_auto_readahead=2 + metadata_cache_options={unpartitioned_pinning=kFallback;partition_pinning=kFallback;top_level_index_pinning=kFallback;} + read_amp_bytes_per_bit=0 + verify_compression=false + format_version=5 + optimize_filters_for_memory=false + partition_filters=false + detect_filter_construct_corruption=false + initial_auto_readahead_size=8192 + max_auto_readahead_size=262144 + enable_index_compression=true + checksum=kXXH3 + index_block_restart_interval=1 + pin_top_level_index_and_filter=true + block_align=false + block_size=4096 + index_type=kBinarySearch + filter_policy=nullptr + metadata_block_size=4096 + no_block_cache=false + index_shortening=kShortenSeparators + whole_key_filtering=true + block_size_deviation=10 + data_block_index_type=kDataBlockBinarySearch + data_block_hash_table_util_ratio=0.750000 + cache_index_and_filter_blocks=true + prepopulate_block_cache=kDisable + block_restart_interval=16 + pin_l0_filter_and_index_blocks_in_cache=true + cache_index_and_filter_blocks_with_high_priority=true + flush_block_policy_factory=FlushBlockBySizePolicyFactory + + +[CFOptions "_timer_state/processing_timer"] + bottommost_file_compaction_delay=0 + memtable_protection_bytes_per_key=0 + compression_per_level=kSnappyCompression + bottommost_compression=kDisableCompressionOption + sample_for_compression=0 + blob_garbage_collection_age_cutoff=0.250000 + blob_compression_type=kNoCompression + prepopulate_blob_cache=kDisable + blob_compaction_readahead_size=0 + level0_stop_writes_trigger=36 + min_blob_size=0 + last_level_temperature=kUnknown + compaction_options_universal={allow_trivial_move=false;stop_style=kCompactionStopStyleTotalSize;min_merge_width=2;compression_size_percent=-1;max_size_amplification_percent=200;incremental=false;max_merge_width=4294967295;size_ratio=1;} + target_file_size_base=67108864 + ignore_max_compaction_bytes_for_input=true + memtable_whole_key_filtering=false + blob_file_starting_level=0 + soft_pending_compaction_bytes_limit=68719476736 + max_write_buffer_number=2 + ttl=2592000 + compaction_options_fifo={file_temperature_age_thresholds=;allow_compaction=false;age_for_warm=0;max_table_files_size=1073741824;} + check_flush_compaction_key_order=true + memtable_huge_page_size=0 + max_successive_merges=0 + inplace_update_num_locks=10000 + enable_blob_garbage_collection=false + arena_block_size=1048576 + bottommost_compression_opts={use_zstd_dict_trainer=true;enabled=false;zstd_max_train_bytes=0;parallel_threads=1;max_compressed_bytes_per_kb=896;checksum=false;max_dict_bytes=0;strategy=0;max_dict_buffer_bytes=0;level=32767;window_bits=-14;} + target_file_size_multiplier=1 + max_bytes_for_level_multiplier_additional=1:1:1:1:1:1:1 + blob_garbage_collection_force_threshold=1.000000 + enable_blob_files=false + level0_slowdown_writes_trigger=20 + compression=kSnappyCompression + level0_file_num_compaction_trigger=4 + block_protection_bytes_per_key=0 + prefix_extractor=nullptr + max_bytes_for_level_multiplier=10.000000 + write_buffer_size=67108864 + disable_auto_compactions=false + max_compaction_bytes=1677721600 + memtable_max_range_deletions=0 + compression_opts={use_zstd_dict_trainer=true;enabled=false;zstd_max_train_bytes=0;parallel_threads=1;max_compressed_bytes_per_kb=896;checksum=false;max_dict_bytes=0;strategy=0;max_dict_buffer_bytes=0;level=32767;window_bits=-14;} + hard_pending_compaction_bytes_limit=274877906944 + blob_file_size=268435456 + periodic_compaction_seconds=2592000 + paranoid_file_checks=false + experimental_mempurge_threshold=0.000000 + memtable_prefix_bloom_size_ratio=0.000000 + max_bytes_for_level_base=268435456 + max_sequential_skip_in_iterations=8 + report_bg_io_stats=false + sst_partitioner_factory=nullptr + compaction_pri=kMinOverlappingRatio + compaction_style=kCompactionStyleLevel + compaction_filter_factory=nullptr + compaction_filter=nullptr + memtable_factory=SkipListFactory + comparator=leveldb.BytewiseComparator + bloom_locality=0 + min_write_buffer_number_to_merge=1 + table_factory=BlockBasedTable + max_write_buffer_size_to_maintain=0 + max_write_buffer_number_to_maintain=0 + optimize_filters_for_hits=false + default_temperature=kUnknown + preserve_internal_time_seconds=0 + force_consistency_checks=true + merge_operator={id=StringAppendTESTOperator;delimiter=,;} + num_levels=7 + level_compaction_dynamic_file_size=true + memtable_insert_with_hint_prefix_extractor=nullptr + level_compaction_dynamic_level_bytes=false + persist_user_defined_timestamps=true + preclude_last_level_data_seconds=0 + inplace_update_support=false + +[TableOptions/BlockBasedTable "_timer_state/processing_timer"] + num_file_reads_for_auto_readahead=2 + metadata_cache_options={unpartitioned_pinning=kFallback;partition_pinning=kFallback;top_level_index_pinning=kFallback;} + read_amp_bytes_per_bit=0 + verify_compression=false + format_version=5 + optimize_filters_for_memory=false + partition_filters=false + detect_filter_construct_corruption=false + initial_auto_readahead_size=8192 + max_auto_readahead_size=262144 + enable_index_compression=true + checksum=kXXH3 + index_block_restart_interval=1 + pin_top_level_index_and_filter=true + block_align=false + block_size=4096 + index_type=kBinarySearch + filter_policy=nullptr + metadata_block_size=4096 + no_block_cache=false + index_shortening=kShortenSeparators + whole_key_filtering=true + block_size_deviation=10 + data_block_index_type=kDataBlockBinarySearch + data_block_hash_table_util_ratio=0.750000 + cache_index_and_filter_blocks=true + prepopulate_block_cache=kDisable + block_restart_interval=16 + pin_l0_filter_and_index_blocks_in_cache=true + cache_index_and_filter_blocks_with_high_priority=true + flush_block_policy_factory=FlushBlockBySizePolicyFactory + + +[CFOptions "_timer_state/event_timer"] + bottommost_file_compaction_delay=0 + memtable_protection_bytes_per_key=0 + compression_per_level=kSnappyCompression + bottommost_compression=kDisableCompressionOption + sample_for_compression=0 + blob_garbage_collection_age_cutoff=0.250000 + blob_compression_type=kNoCompression + prepopulate_blob_cache=kDisable + blob_compaction_readahead_size=0 + level0_stop_writes_trigger=36 + min_blob_size=0 + last_level_temperature=kUnknown + compaction_options_universal={allow_trivial_move=false;stop_style=kCompactionStopStyleTotalSize;min_merge_width=2;compression_size_percent=-1;max_size_amplification_percent=200;incremental=false;max_merge_width=4294967295;size_ratio=1;} + target_file_size_base=67108864 + ignore_max_compaction_bytes_for_input=true + memtable_whole_key_filtering=false + blob_file_starting_level=0 + soft_pending_compaction_bytes_limit=68719476736 + max_write_buffer_number=2 + ttl=2592000 + compaction_options_fifo={file_temperature_age_thresholds=;allow_compaction=false;age_for_warm=0;max_table_files_size=1073741824;} + check_flush_compaction_key_order=true + memtable_huge_page_size=0 + max_successive_merges=0 + inplace_update_num_locks=10000 + enable_blob_garbage_collection=false + arena_block_size=1048576 + bottommost_compression_opts={use_zstd_dict_trainer=true;enabled=false;zstd_max_train_bytes=0;parallel_threads=1;max_compressed_bytes_per_kb=896;checksum=false;max_dict_bytes=0;strategy=0;max_dict_buffer_bytes=0;level=32767;window_bits=-14;} + target_file_size_multiplier=1 + max_bytes_for_level_multiplier_additional=1:1:1:1:1:1:1 + blob_garbage_collection_force_threshold=1.000000 + enable_blob_files=false + level0_slowdown_writes_trigger=20 + compression=kSnappyCompression + level0_file_num_compaction_trigger=4 + block_protection_bytes_per_key=0 + prefix_extractor=nullptr + max_bytes_for_level_multiplier=10.000000 + write_buffer_size=67108864 + disable_auto_compactions=false + max_compaction_bytes=1677721600 + memtable_max_range_deletions=0 + compression_opts={use_zstd_dict_trainer=true;enabled=false;zstd_max_train_bytes=0;parallel_threads=1;max_compressed_bytes_per_kb=896;checksum=false;max_dict_bytes=0;strategy=0;max_dict_buffer_bytes=0;level=32767;window_bits=-14;} + hard_pending_compaction_bytes_limit=274877906944 + blob_file_size=268435456 + periodic_compaction_seconds=2592000 + paranoid_file_checks=false + experimental_mempurge_threshold=0.000000 + memtable_prefix_bloom_size_ratio=0.000000 + max_bytes_for_level_base=268435456 + max_sequential_skip_in_iterations=8 + report_bg_io_stats=false + sst_partitioner_factory=nullptr + compaction_pri=kMinOverlappingRatio + compaction_style=kCompactionStyleLevel + compaction_filter_factory=nullptr + compaction_filter=nullptr + memtable_factory=SkipListFactory + comparator=leveldb.BytewiseComparator + bloom_locality=0 + min_write_buffer_number_to_merge=1 + table_factory=BlockBasedTable + max_write_buffer_size_to_maintain=0 + max_write_buffer_number_to_maintain=0 + optimize_filters_for_hits=false + default_temperature=kUnknown + preserve_internal_time_seconds=0 + force_consistency_checks=true + merge_operator={id=StringAppendTESTOperator;delimiter=,;} + num_levels=7 + level_compaction_dynamic_file_size=true + memtable_insert_with_hint_prefix_extractor=nullptr + level_compaction_dynamic_level_bytes=false + persist_user_defined_timestamps=true + preclude_last_level_data_seconds=0 + inplace_update_support=false + +[TableOptions/BlockBasedTable "_timer_state/event_timer"] + num_file_reads_for_auto_readahead=2 + metadata_cache_options={unpartitioned_pinning=kFallback;partition_pinning=kFallback;top_level_index_pinning=kFallback;} + read_amp_bytes_per_bit=0 + verify_compression=false + format_version=5 + optimize_filters_for_memory=false + partition_filters=false + detect_filter_construct_corruption=false + initial_auto_readahead_size=8192 + max_auto_readahead_size=262144 + enable_index_compression=true + checksum=kXXH3 + index_block_restart_interval=1 + pin_top_level_index_and_filter=true + block_align=false + block_size=4096 + index_type=kBinarySearch + filter_policy=nullptr + metadata_block_size=4096 + no_block_cache=false + index_shortening=kShortenSeparators + whole_key_filtering=true + block_size_deviation=10 + data_block_index_type=kDataBlockBinarySearch + data_block_hash_table_util_ratio=0.750000 + cache_index_and_filter_blocks=true + prepopulate_block_cache=kDisable + block_restart_interval=16 + pin_l0_filter_and_index_blocks_in_cache=true + cache_index_and_filter_blocks_with_high_priority=true + flush_block_policy_factory=FlushBlockBySizePolicyFactory + + +[CFOptions "state-name"] + bottommost_file_compaction_delay=0 + memtable_protection_bytes_per_key=0 + compression_per_level=kSnappyCompression + bottommost_compression=kDisableCompressionOption + sample_for_compression=0 + blob_garbage_collection_age_cutoff=0.250000 + blob_compression_type=kNoCompression + prepopulate_blob_cache=kDisable + blob_compaction_readahead_size=0 + level0_stop_writes_trigger=36 + min_blob_size=0 + last_level_temperature=kUnknown + compaction_options_universal={allow_trivial_move=false;stop_style=kCompactionStopStyleTotalSize;min_merge_width=2;compression_size_percent=-1;max_size_amplification_percent=200;incremental=false;max_merge_width=4294967295;size_ratio=1;} + target_file_size_base=67108864 + ignore_max_compaction_bytes_for_input=true + memtable_whole_key_filtering=false + blob_file_starting_level=0 + soft_pending_compaction_bytes_limit=68719476736 + max_write_buffer_number=2 + ttl=2592000 + compaction_options_fifo={file_temperature_age_thresholds=;allow_compaction=false;age_for_warm=0;max_table_files_size=1073741824;} + check_flush_compaction_key_order=true + memtable_huge_page_size=0 + max_successive_merges=0 + inplace_update_num_locks=10000 + enable_blob_garbage_collection=false + arena_block_size=1048576 + bottommost_compression_opts={use_zstd_dict_trainer=true;enabled=false;zstd_max_train_bytes=0;parallel_threads=1;max_compressed_bytes_per_kb=896;checksum=false;max_dict_bytes=0;strategy=0;max_dict_buffer_bytes=0;level=32767;window_bits=-14;} + target_file_size_multiplier=1 + max_bytes_for_level_multiplier_additional=1:1:1:1:1:1:1 + blob_garbage_collection_force_threshold=1.000000 + enable_blob_files=false + level0_slowdown_writes_trigger=20 + compression=kSnappyCompression + level0_file_num_compaction_trigger=4 + block_protection_bytes_per_key=0 + prefix_extractor=nullptr + max_bytes_for_level_multiplier=10.000000 + write_buffer_size=67108864 + disable_auto_compactions=false + max_compaction_bytes=1677721600 + memtable_max_range_deletions=0 + compression_opts={use_zstd_dict_trainer=true;enabled=false;zstd_max_train_bytes=0;parallel_threads=1;max_compressed_bytes_per_kb=896;checksum=false;max_dict_bytes=0;strategy=0;max_dict_buffer_bytes=0;level=32767;window_bits=-14;} + hard_pending_compaction_bytes_limit=274877906944 + blob_file_size=268435456 + periodic_compaction_seconds=2592000 + paranoid_file_checks=false + experimental_mempurge_threshold=0.000000 + memtable_prefix_bloom_size_ratio=0.000000 + max_bytes_for_level_base=268435456 + max_sequential_skip_in_iterations=8 + report_bg_io_stats=false + sst_partitioner_factory=nullptr + compaction_pri=kMinOverlappingRatio + compaction_style=kCompactionStyleLevel + compaction_filter_factory=nullptr + compaction_filter=nullptr + memtable_factory=SkipListFactory + comparator=leveldb.BytewiseComparator + bloom_locality=0 + min_write_buffer_number_to_merge=1 + table_factory=BlockBasedTable + max_write_buffer_size_to_maintain=0 + max_write_buffer_number_to_maintain=0 + optimize_filters_for_hits=false + default_temperature=kUnknown + preserve_internal_time_seconds=0 + force_consistency_checks=true + merge_operator={id=StringAppendTESTOperator;delimiter=,;} + num_levels=7 + level_compaction_dynamic_file_size=true + memtable_insert_with_hint_prefix_extractor=nullptr + level_compaction_dynamic_level_bytes=false + persist_user_defined_timestamps=true + preclude_last_level_data_seconds=0 + inplace_update_support=false + +[TableOptions/BlockBasedTable "state-name"] + num_file_reads_for_auto_readahead=2 + metadata_cache_options={unpartitioned_pinning=kFallback;partition_pinning=kFallback;top_level_index_pinning=kFallback;} + read_amp_bytes_per_bit=0 + verify_compression=false + format_version=5 + optimize_filters_for_memory=false + partition_filters=false + detect_filter_construct_corruption=false + initial_auto_readahead_size=8192 + max_auto_readahead_size=262144 + enable_index_compression=true + checksum=kXXH3 + index_block_restart_interval=1 + pin_top_level_index_and_filter=true + block_align=false + block_size=4096 + index_type=kBinarySearch + filter_policy=nullptr + metadata_block_size=4096 + no_block_cache=false + index_shortening=kShortenSeparators + whole_key_filtering=true + block_size_deviation=10 + data_block_index_type=kDataBlockBinarySearch + data_block_hash_table_util_ratio=0.750000 + cache_index_and_filter_blocks=true + prepopulate_block_cache=kDisable + block_restart_interval=16 + pin_l0_filter_and_index_blocks_in_cache=true + cache_index_and_filter_blocks_with_high_priority=true + flush_block_policy_factory=FlushBlockBySizePolicyFactory + diff --git a/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/dd9c1ff3-8b3e-4808-8c94-9010f4d7cb32 b/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/dd9c1ff3-8b3e-4808-8c94-9010f4d7cb32 new file mode 100644 index 0000000000000000000000000000000000000000..17019a4a2ffc9112d0191481b0527788f04aed18 GIT binary patch literal 1123 zcmah|O=}ZD7~Zk1+0>Y}Mnwxk1ih#`?zYudO2PVd^RuE>k!3dXCLKDNS!O0p;z8^SSEoA#i2)CKL^j5 zo+P<}rs&b8kPeJct$4adx@#Iu*P;I#PQppj(6ZB3w8`2+_Nm}x@8|)=+K@WY29sLH z930OvHdu?E2Jm<|-Oia|P8$guATg^meFt4(;jG?zsg$-GPts~du{`hB!Y3rvxkJEq zF=gFNGvVw~l*}#G3pY!%GxI0s7wgucYiRYC;>CKK^-?YxF3m82^~gQzcd>lt76E=G)J~5YM45oJOThrDJIp^4h;5NF*8fUa#kFFR^abQeNP42dXb_`7~ z-nzYfW%crj)zu5PXRjrfZZ2FsS1pZcMSb(Xe*5`xdsrr%IYzCx2T6Gc0SON0j$^bz zxN8h2475>X{wHfkNO154DHyMk-he?RsFqs`$~%cRZRY3(7(bpM+(QNu^6C(lVwa2$ zL8_y~2R>5WOE#G7pwcYmATb|M4b6d*uu4!SEucCF!xXncZDb$HV#RsgE$2BXe*OH) z^~?Sl@o<8uPMa1r6+*V8QX<%GBLJ^eGSF5|C}*=|MB7b!#B&HAN>Ndvs&>0 literal 0 HcmV?d00001 diff --git a/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/e0fc93c9-38c2-4158-870b-7d1526bd43a1 b/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/e0fc93c9-38c2-4158-870b-7d1526bd43a1 new file mode 100644 index 0000000000000000000000000000000000000000..2bceb5cf93a5e692260525014c33466a66d7b4c0 GIT binary patch literal 1145 zcmeH`!AiqG5Qe8wdJ{Z&=*3&VNDhS@N>dfQgfWciYO=e`P73V{_bCK7DH21) zTQ1_jF3hm=@3-@_05FCS5!_oY6gtc|q+UyH-b13*8*Wj_&QUG8^onaEx+1l%T}dgi z#!~NzQ-jWLtOTJmxHz1*g0o))oA#r~EnGc)g!7|zEr0CEZB<$G4dVqpsl=M1Lzwo{ z9#I6>S%b})7Zkd2Y;*Eno8nk*vBMT(1ecHVNv@->?7$$xt8!?-!=c}ZI`@^9mi-)9gTKLP84b`Agl literal 0 HcmV?d00001 diff --git a/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/e287854c-2d28-43a1-b135-3dba557fd931 b/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/e287854c-2d28-43a1-b135-3dba557fd931 new file mode 100644 index 0000000000000000000000000000000000000000..14b19dafd9d68372a391d32af5a0f37e12aa44e5 GIT binary patch literal 1110 zcmah}O>YxN7@kQSylWQ6#sr1*P*;Kjl{}5H$%mpyB&C&lpwJo#LRGECJFlHl#xtv# zacpx(;>vGm5hu=^_zhKi?Wz3*t=g)p)I;A{Cq_Lnr`c!T=ly)%y;CC}ktGsSQi;pg zXo)VzNm8p58dvTTN>|9@P`uHWFVX;`mDKNW(4i0F|D^F?fCVhLV+U!$FI*N5!0xyAnsMX01@5s;42zKh zOO<}s-5T__x?R!QY2VIT-CLsF+Rb)E3wAoY+q+q3bE~^uzqEdAoL_M6@>3~X>mJVz zjX7yOu!iBRxT@E#xOqDkruQB{Ie2h%|Mt<*=TACcx4(R}^VM#(ykay9egEx`e}1|U z#Z++5nUhbU6JMmDz~jhqf{sL&S8%w%vLf>{*6)FJF`_v0fuj31pc^sm7a1nMv*xtKw&=fGN&9!yH(UwjL{$ zdt0e5h0Oho;SMMW&+eOVqXeT)3jd-0!=!RnfA}I%oq8@6!?m!UnZdw;@0>3x`S81+ vpOeeW=Zl)#!ar8m`@Xy|`r^ml%hJE)X6J(dz2}5q#os^t`RvWXuh0Jjae!6a literal 0 HcmV?d00001 diff --git a/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/e562bd54-e2e2-433f-b949-5862c99e14ec b/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/e562bd54-e2e2-433f-b949-5862c99e14ec new file mode 100644 index 0000000000000000000000000000000000000000..667ac8709a9d3de2e034e1259e5746e22c16f82d GIT binary patch literal 1414 zcmeH{K}*9h6vy8-^&kiycJSg&yczKuSY{5xDrK$8yp(5ocF{HoNjA_g?57Y+Go+Rc zZ@q|t1oFuH=a={R2LSfKk0DHyDH&=k7Q~(_Az%GQuoqk*b8niKPE?kerF5bumMwKf zDH(y4cqfxe)OMkq7aGCA$4(GD{Y9`zUyEG8_~Fx^AB34~%_&q}EBOQC2`#Z$$+AT_ z>25njBRI|*Y?E7uj?T4F1z9U(xefPd{zk4_-WzSW|Fb@ZL3_ l^Q%0~qKxO+JmIh#+!!pl-I)Erjc=nHo+i;`<0I(hzAqoB%1i(N literal 0 HcmV?d00001 diff --git a/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/ed34b883-5715-4d7c-b615-2047f373e577 b/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/ed34b883-5715-4d7c-b615-2047f373e577 new file mode 100644 index 0000000000000000000000000000000000000000..528264718dd44578d05316507649fc98612f5639 GIT binary patch literal 1084 zcmah|OK%e~5MGy*Y?hEF4OCDrIaESIU90I6sCp>R6VD<+c_?z$v#C|Dy|SGqLE?zS z6(R8#IPe4b8AzNsbL9XMNQfKbZJWXgA9n3;-ZS4^t_RcMM9?55LK;zpoC>3m1mtXM zA;3cpKji7F*B63l!oTq#e*WMe1n=R+*I=$>bh2xCmv$vyXqQ>w)UmDvDintyb)y`- z&1{|I22wGksgMqgP`!oOCK>E#RNaNq5!?>zB+;^;DVnlO$PpEs%##f4g#?s>2>e_nCI&=-a(Z<4hD`UeB7m4e1F@W{RbL)7=!>A?H5e~{%&i^&)rzw~t zoxX)mVPCi`9DvzqueU1AIRngLV<;9QI4CFFXqBZamsVHSV!oOz#>+`NiP>_u9WSgc zwv%*`EhkI7aq`TLwr*^5jqM3;<6A7bqV;Zk*Jz5I5Y@aoFb~9 z(W0h;wU$)N1iNhn*okV5>=U$efCSYkf^K^dV^}Dt6NFQfT5@D#!Q64DDotWUPbelm zn}K4OE|@4hT|S^b3~}BG=0H7#RbR^7nW!=0Gj}73te4=$_Q|ubictrJe_#JxH9Dx@ zzv^LwI3^^;eK3ydG_~O7$E(RMyn7Q&A3I#l+!X$?x|?syW2Fz@I-g5l%B}es5B=v% PqWss#pD#abetGo=Dilu+ literal 0 HcmV?d00001 diff --git a/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/ee044c64-31e8-4095-a544-d9237a43ba34 b/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/ee044c64-31e8-4095-a544-d9237a43ba34 new file mode 100644 index 0000000000000000000000000000000000000000..b5eca0e986ea549cae5a6259168ae78e3b07c482 GIT binary patch literal 1073 zcmah|Pfrs;6yKqRZc8bp6++OMlIY2FQf#3m$N>~?2nvaUG0n95S|-fSY-XmkG4W(f`~)T%jW^#c|McV}yF2@P|KIz)yLqqRC%iPtj(CKmGZUmV;^86g z*^JKKdYOd#$AkDS_jMv~=QR1zyOY$aePn_bZ3(>47Bdh~%US{`mjMi@9Y)~P=kg@d z(BT8x;lhIEvRj!elK!DW)gu^Q!wY_%w3XvTY0>+}pX zWBb@;>;UxY!b&M!yrY3xYz)O>cmUFJJ8ZB;)~GL4%GJtpr(CPotK~)oU(3t&8ml!H ztF?M!^BknhBgSDOg?Zy55&4cRG zg~!htPd0L?Q6;J6A$2U%AEDjlGW<0+zisJ;@jx+z;YTPF{ z<=Du}1a6=Eylgn-_?eoh0bC3uO!oF?BqDa#V=`*%&kTs#EDA(Y(tg6OPS5F-!|| z#-C1IP#*?3?>6Q@9ff62h{)>9)QHR64k@x;fD@Y+Fa0b=?Z^II{e^7iqJH=1`%}a+ zE-3DUwp4XG2JF0Bvv@UczgxQJ6%v=L8R^(RR`=jd>Pl(i^Up8IPpQ)UjD!AjMp6Fj M?8mG3YhPdg0h;+svH$=8 literal 0 HcmV?d00001 diff --git a/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/ee29cbb0-871b-4c85-86d5-ecc26d97c6c9 b/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/ee29cbb0-871b-4c85-86d5-ecc26d97c6c9 new file mode 100644 index 00000000000000..0e36dbd4cdcd04 --- /dev/null +++ b/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/ee29cbb0-871b-4c85-86d5-ecc26d97c6c9 @@ -0,0 +1,429 @@ +# This is a RocksDB option file. +# +# For detailed file format spec, please refer to the example file +# in examples/rocksdb_option_file_example.ini +# + +[Version] + rocksdb_version=8.10.0 + options_file_version=1.1 + +[DBOptions] + max_background_flushes=-1 + compaction_readahead_size=2097152 + strict_bytes_per_sync=false + wal_bytes_per_sync=0 + max_open_files=-1 + stats_history_buffer_size=1048576 + max_total_wal_size=0 + stats_persist_period_sec=600 + stats_dump_period_sec=0 + avoid_flush_during_shutdown=true + max_subcompactions=1 + bytes_per_sync=0 + delayed_write_rate=16777216 + max_background_compactions=-1 + max_background_jobs=2 + delete_obsolete_files_period_micros=21600000000 + writable_file_max_buffer_size=1048576 + file_checksum_gen_factory=nullptr + allow_data_in_errors=false + max_bgerror_resume_count=2147483647 + best_efforts_recovery=false + write_dbid_to_manifest=false + atomic_flush=false + manual_wal_flush=false + two_write_queues=false + avoid_flush_during_recovery=false + dump_malloc_stats=false + info_log_level=INFO_LEVEL + write_thread_slow_yield_usec=3 + unordered_write=false + allow_ingest_behind=false + fail_if_options_file_error=true + persist_stats_to_disk=false + WAL_ttl_seconds=0 + bgerror_resume_retry_interval=1000000 + allow_concurrent_memtable_write=true + paranoid_checks=true + WAL_size_limit_MB=0 + lowest_used_cache_tier=kNonVolatileBlockTier + keep_log_file_num=4 + table_cache_numshardbits=6 + max_file_opening_threads=16 + random_access_max_buffer_size=1048576 + log_readahead_size=0 + enable_pipelined_write=false + wal_recovery_mode=kPointInTimeRecovery + db_write_buffer_size=0 + allow_2pc=false + skip_checking_sst_file_sizes_on_db_open=false + skip_stats_update_on_db_open=false + recycle_log_file_num=0 + db_host_id=__hostname__ + track_and_verify_wals_in_manifest=false + use_fsync=false + wal_compression=kNoCompression + compaction_verify_record_count=true + error_if_exists=false + manifest_preallocation_size=4194304 + is_fd_close_on_exec=true + enable_write_thread_adaptive_yield=true + enable_thread_tracking=false + avoid_unnecessary_blocking_io=false + allow_fallocate=true + max_log_file_size=26214400 + advise_random_on_open=true + create_missing_column_families=false + max_write_batch_group_size_bytes=1048576 + use_adaptive_mutex=false + wal_filter=nullptr + create_if_missing=true + enforce_single_del_contracts=true + allow_mmap_writes=false + access_hint_on_compaction_start=NORMAL + verify_sst_unique_id_in_manifest=true + log_file_time_to_roll=0 + use_direct_io_for_flush_and_compaction=false + flush_verify_memtable_count=true + max_manifest_file_size=1073741824 + write_thread_max_yield_usec=100 + use_direct_reads=false + allow_mmap_reads=false + + +[CFOptions "default"] + bottommost_file_compaction_delay=0 + memtable_protection_bytes_per_key=0 + compression_per_level=kSnappyCompression + bottommost_compression=kDisableCompressionOption + sample_for_compression=0 + blob_garbage_collection_age_cutoff=0.250000 + blob_compression_type=kNoCompression + prepopulate_blob_cache=kDisable + blob_compaction_readahead_size=0 + level0_stop_writes_trigger=36 + min_blob_size=0 + last_level_temperature=kUnknown + compaction_options_universal={allow_trivial_move=false;stop_style=kCompactionStopStyleTotalSize;min_merge_width=2;compression_size_percent=-1;max_size_amplification_percent=200;incremental=false;max_merge_width=4294967295;size_ratio=1;} + target_file_size_base=67108864 + ignore_max_compaction_bytes_for_input=true + memtable_whole_key_filtering=false + blob_file_starting_level=0 + soft_pending_compaction_bytes_limit=68719476736 + max_write_buffer_number=2 + ttl=2592000 + compaction_options_fifo={file_temperature_age_thresholds=;allow_compaction=false;age_for_warm=0;max_table_files_size=1073741824;} + check_flush_compaction_key_order=true + memtable_huge_page_size=0 + max_successive_merges=0 + inplace_update_num_locks=10000 + enable_blob_garbage_collection=false + arena_block_size=1048576 + bottommost_compression_opts={use_zstd_dict_trainer=true;enabled=false;zstd_max_train_bytes=0;parallel_threads=1;max_compressed_bytes_per_kb=896;checksum=false;max_dict_bytes=0;strategy=0;max_dict_buffer_bytes=0;level=32767;window_bits=-14;} + target_file_size_multiplier=1 + max_bytes_for_level_multiplier_additional=1:1:1:1:1:1:1 + blob_garbage_collection_force_threshold=1.000000 + enable_blob_files=false + level0_slowdown_writes_trigger=20 + compression=kSnappyCompression + level0_file_num_compaction_trigger=4 + block_protection_bytes_per_key=0 + prefix_extractor=nullptr + max_bytes_for_level_multiplier=10.000000 + write_buffer_size=67108864 + disable_auto_compactions=false + max_compaction_bytes=1677721600 + memtable_max_range_deletions=0 + compression_opts={use_zstd_dict_trainer=true;enabled=false;zstd_max_train_bytes=0;parallel_threads=1;max_compressed_bytes_per_kb=896;checksum=false;max_dict_bytes=0;strategy=0;max_dict_buffer_bytes=0;level=32767;window_bits=-14;} + hard_pending_compaction_bytes_limit=274877906944 + blob_file_size=268435456 + periodic_compaction_seconds=2592000 + paranoid_file_checks=false + experimental_mempurge_threshold=0.000000 + memtable_prefix_bloom_size_ratio=0.000000 + max_bytes_for_level_base=268435456 + max_sequential_skip_in_iterations=8 + report_bg_io_stats=false + sst_partitioner_factory=nullptr + compaction_pri=kMinOverlappingRatio + compaction_style=kCompactionStyleLevel + compaction_filter_factory=nullptr + compaction_filter=nullptr + memtable_factory=SkipListFactory + comparator=leveldb.BytewiseComparator + bloom_locality=0 + min_write_buffer_number_to_merge=1 + table_factory=BlockBasedTable + max_write_buffer_size_to_maintain=0 + max_write_buffer_number_to_maintain=0 + optimize_filters_for_hits=false + default_temperature=kUnknown + preserve_internal_time_seconds=0 + force_consistency_checks=true + merge_operator={id=StringAppendTESTOperator;delimiter=,;} + num_levels=7 + level_compaction_dynamic_file_size=true + memtable_insert_with_hint_prefix_extractor=nullptr + level_compaction_dynamic_level_bytes=false + persist_user_defined_timestamps=true + preclude_last_level_data_seconds=0 + inplace_update_support=false + +[TableOptions/BlockBasedTable "default"] + num_file_reads_for_auto_readahead=2 + metadata_cache_options={unpartitioned_pinning=kFallback;partition_pinning=kFallback;top_level_index_pinning=kFallback;} + read_amp_bytes_per_bit=0 + verify_compression=false + format_version=5 + optimize_filters_for_memory=false + partition_filters=false + detect_filter_construct_corruption=false + initial_auto_readahead_size=8192 + max_auto_readahead_size=262144 + enable_index_compression=true + checksum=kXXH3 + index_block_restart_interval=1 + pin_top_level_index_and_filter=true + block_align=false + block_size=4096 + index_type=kBinarySearch + filter_policy=nullptr + metadata_block_size=4096 + no_block_cache=false + index_shortening=kShortenSeparators + whole_key_filtering=true + block_size_deviation=10 + data_block_index_type=kDataBlockBinarySearch + data_block_hash_table_util_ratio=0.750000 + cache_index_and_filter_blocks=true + prepopulate_block_cache=kDisable + block_restart_interval=16 + pin_l0_filter_and_index_blocks_in_cache=true + cache_index_and_filter_blocks_with_high_priority=true + flush_block_policy_factory=FlushBlockBySizePolicyFactory + + +[CFOptions "_timer_state/processing_timer"] + bottommost_file_compaction_delay=0 + memtable_protection_bytes_per_key=0 + compression_per_level=kSnappyCompression + bottommost_compression=kDisableCompressionOption + sample_for_compression=0 + blob_garbage_collection_age_cutoff=0.250000 + blob_compression_type=kNoCompression + prepopulate_blob_cache=kDisable + blob_compaction_readahead_size=0 + level0_stop_writes_trigger=36 + min_blob_size=0 + last_level_temperature=kUnknown + compaction_options_universal={allow_trivial_move=false;stop_style=kCompactionStopStyleTotalSize;min_merge_width=2;compression_size_percent=-1;max_size_amplification_percent=200;incremental=false;max_merge_width=4294967295;size_ratio=1;} + target_file_size_base=67108864 + ignore_max_compaction_bytes_for_input=true + memtable_whole_key_filtering=false + blob_file_starting_level=0 + soft_pending_compaction_bytes_limit=68719476736 + max_write_buffer_number=2 + ttl=2592000 + compaction_options_fifo={file_temperature_age_thresholds=;allow_compaction=false;age_for_warm=0;max_table_files_size=1073741824;} + check_flush_compaction_key_order=true + memtable_huge_page_size=0 + max_successive_merges=0 + inplace_update_num_locks=10000 + enable_blob_garbage_collection=false + arena_block_size=1048576 + bottommost_compression_opts={use_zstd_dict_trainer=true;enabled=false;zstd_max_train_bytes=0;parallel_threads=1;max_compressed_bytes_per_kb=896;checksum=false;max_dict_bytes=0;strategy=0;max_dict_buffer_bytes=0;level=32767;window_bits=-14;} + target_file_size_multiplier=1 + max_bytes_for_level_multiplier_additional=1:1:1:1:1:1:1 + blob_garbage_collection_force_threshold=1.000000 + enable_blob_files=false + level0_slowdown_writes_trigger=20 + compression=kSnappyCompression + level0_file_num_compaction_trigger=4 + block_protection_bytes_per_key=0 + prefix_extractor=nullptr + max_bytes_for_level_multiplier=10.000000 + write_buffer_size=67108864 + disable_auto_compactions=false + max_compaction_bytes=1677721600 + memtable_max_range_deletions=0 + compression_opts={use_zstd_dict_trainer=true;enabled=false;zstd_max_train_bytes=0;parallel_threads=1;max_compressed_bytes_per_kb=896;checksum=false;max_dict_bytes=0;strategy=0;max_dict_buffer_bytes=0;level=32767;window_bits=-14;} + hard_pending_compaction_bytes_limit=274877906944 + blob_file_size=268435456 + periodic_compaction_seconds=2592000 + paranoid_file_checks=false + experimental_mempurge_threshold=0.000000 + memtable_prefix_bloom_size_ratio=0.000000 + max_bytes_for_level_base=268435456 + max_sequential_skip_in_iterations=8 + report_bg_io_stats=false + sst_partitioner_factory=nullptr + compaction_pri=kMinOverlappingRatio + compaction_style=kCompactionStyleLevel + compaction_filter_factory=nullptr + compaction_filter=nullptr + memtable_factory=SkipListFactory + comparator=leveldb.BytewiseComparator + bloom_locality=0 + min_write_buffer_number_to_merge=1 + table_factory=BlockBasedTable + max_write_buffer_size_to_maintain=0 + max_write_buffer_number_to_maintain=0 + optimize_filters_for_hits=false + default_temperature=kUnknown + preserve_internal_time_seconds=0 + force_consistency_checks=true + merge_operator={id=StringAppendTESTOperator;delimiter=,;} + num_levels=7 + level_compaction_dynamic_file_size=true + memtable_insert_with_hint_prefix_extractor=nullptr + level_compaction_dynamic_level_bytes=false + persist_user_defined_timestamps=true + preclude_last_level_data_seconds=0 + inplace_update_support=false + +[TableOptions/BlockBasedTable "_timer_state/processing_timer"] + num_file_reads_for_auto_readahead=2 + metadata_cache_options={unpartitioned_pinning=kFallback;partition_pinning=kFallback;top_level_index_pinning=kFallback;} + read_amp_bytes_per_bit=0 + verify_compression=false + format_version=5 + optimize_filters_for_memory=false + partition_filters=false + detect_filter_construct_corruption=false + initial_auto_readahead_size=8192 + max_auto_readahead_size=262144 + enable_index_compression=true + checksum=kXXH3 + index_block_restart_interval=1 + pin_top_level_index_and_filter=true + block_align=false + block_size=4096 + index_type=kBinarySearch + filter_policy=nullptr + metadata_block_size=4096 + no_block_cache=false + index_shortening=kShortenSeparators + whole_key_filtering=true + block_size_deviation=10 + data_block_index_type=kDataBlockBinarySearch + data_block_hash_table_util_ratio=0.750000 + cache_index_and_filter_blocks=true + prepopulate_block_cache=kDisable + block_restart_interval=16 + pin_l0_filter_and_index_blocks_in_cache=true + cache_index_and_filter_blocks_with_high_priority=true + flush_block_policy_factory=FlushBlockBySizePolicyFactory + + +[CFOptions "_timer_state/event_timer"] + bottommost_file_compaction_delay=0 + memtable_protection_bytes_per_key=0 + compression_per_level=kSnappyCompression + bottommost_compression=kDisableCompressionOption + sample_for_compression=0 + blob_garbage_collection_age_cutoff=0.250000 + blob_compression_type=kNoCompression + prepopulate_blob_cache=kDisable + blob_compaction_readahead_size=0 + level0_stop_writes_trigger=36 + min_blob_size=0 + last_level_temperature=kUnknown + compaction_options_universal={allow_trivial_move=false;stop_style=kCompactionStopStyleTotalSize;min_merge_width=2;compression_size_percent=-1;max_size_amplification_percent=200;incremental=false;max_merge_width=4294967295;size_ratio=1;} + target_file_size_base=67108864 + ignore_max_compaction_bytes_for_input=true + memtable_whole_key_filtering=false + blob_file_starting_level=0 + soft_pending_compaction_bytes_limit=68719476736 + max_write_buffer_number=2 + ttl=2592000 + compaction_options_fifo={file_temperature_age_thresholds=;allow_compaction=false;age_for_warm=0;max_table_files_size=1073741824;} + check_flush_compaction_key_order=true + memtable_huge_page_size=0 + max_successive_merges=0 + inplace_update_num_locks=10000 + enable_blob_garbage_collection=false + arena_block_size=1048576 + bottommost_compression_opts={use_zstd_dict_trainer=true;enabled=false;zstd_max_train_bytes=0;parallel_threads=1;max_compressed_bytes_per_kb=896;checksum=false;max_dict_bytes=0;strategy=0;max_dict_buffer_bytes=0;level=32767;window_bits=-14;} + target_file_size_multiplier=1 + max_bytes_for_level_multiplier_additional=1:1:1:1:1:1:1 + blob_garbage_collection_force_threshold=1.000000 + enable_blob_files=false + level0_slowdown_writes_trigger=20 + compression=kSnappyCompression + level0_file_num_compaction_trigger=4 + block_protection_bytes_per_key=0 + prefix_extractor=nullptr + max_bytes_for_level_multiplier=10.000000 + write_buffer_size=67108864 + disable_auto_compactions=false + max_compaction_bytes=1677721600 + memtable_max_range_deletions=0 + compression_opts={use_zstd_dict_trainer=true;enabled=false;zstd_max_train_bytes=0;parallel_threads=1;max_compressed_bytes_per_kb=896;checksum=false;max_dict_bytes=0;strategy=0;max_dict_buffer_bytes=0;level=32767;window_bits=-14;} + hard_pending_compaction_bytes_limit=274877906944 + blob_file_size=268435456 + periodic_compaction_seconds=2592000 + paranoid_file_checks=false + experimental_mempurge_threshold=0.000000 + memtable_prefix_bloom_size_ratio=0.000000 + max_bytes_for_level_base=268435456 + max_sequential_skip_in_iterations=8 + report_bg_io_stats=false + sst_partitioner_factory=nullptr + compaction_pri=kMinOverlappingRatio + compaction_style=kCompactionStyleLevel + compaction_filter_factory=nullptr + compaction_filter=nullptr + memtable_factory=SkipListFactory + comparator=leveldb.BytewiseComparator + bloom_locality=0 + min_write_buffer_number_to_merge=1 + table_factory=BlockBasedTable + max_write_buffer_size_to_maintain=0 + max_write_buffer_number_to_maintain=0 + optimize_filters_for_hits=false + default_temperature=kUnknown + preserve_internal_time_seconds=0 + force_consistency_checks=true + merge_operator={id=StringAppendTESTOperator;delimiter=,;} + num_levels=7 + level_compaction_dynamic_file_size=true + memtable_insert_with_hint_prefix_extractor=nullptr + level_compaction_dynamic_level_bytes=false + persist_user_defined_timestamps=true + preclude_last_level_data_seconds=0 + inplace_update_support=false + +[TableOptions/BlockBasedTable "_timer_state/event_timer"] + num_file_reads_for_auto_readahead=2 + metadata_cache_options={unpartitioned_pinning=kFallback;partition_pinning=kFallback;top_level_index_pinning=kFallback;} + read_amp_bytes_per_bit=0 + verify_compression=false + format_version=5 + optimize_filters_for_memory=false + partition_filters=false + detect_filter_construct_corruption=false + initial_auto_readahead_size=8192 + max_auto_readahead_size=262144 + enable_index_compression=true + checksum=kXXH3 + index_block_restart_interval=1 + pin_top_level_index_and_filter=true + block_align=false + block_size=4096 + index_type=kBinarySearch + filter_policy=nullptr + metadata_block_size=4096 + no_block_cache=false + index_shortening=kShortenSeparators + whole_key_filtering=true + block_size_deviation=10 + data_block_index_type=kDataBlockBinarySearch + data_block_hash_table_util_ratio=0.750000 + cache_index_and_filter_blocks=true + prepopulate_block_cache=kDisable + block_restart_interval=16 + pin_l0_filter_and_index_blocks_in_cache=true + cache_index_and_filter_blocks_with_high_priority=true + flush_block_policy_factory=FlushBlockBySizePolicyFactory + diff --git a/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/f0e14849-57ed-4e18-86a9-7055c7ce842a b/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/f0e14849-57ed-4e18-86a9-7055c7ce842a new file mode 100644 index 0000000000000000000000000000000000000000..c3eaa30eeda694c20ec60237e867124f78f1fd78 GIT binary patch literal 1076 zcmah|&1(}u6yGte*`zUT8ZD(Bj1Vuv4vCF!r4*@OxBAtBR*^8-c}a)P&a5+&Ch;zK z^`Q8VhzI`&!J8ia3j_u6=9_Iz_2j_rzWu%L_kMF>Ay^DaP$FR=Aho%*AU_5FCjQx4 zTiyxEUi1g?bN-wEf4TYYbI_bII@!0pM|%k|hfVc~}Uqp1{68n9MqwXIl|P3qw*($$$mz>cs!J?i#^vl~&nv);(VY^+|2 zuf*#O>o7D7CL68wM#{!rE)v)6VFK%s=hpGAhtW!?V;q$4od4@I?DxSO+YBvqbN@VK z9stZnd%aPrHw`d{gQ3`r;GmpvlQmfF$BbQyIy~+~omMM}7?0zKT}?W1yVvGPE3Tbd z-qY4ieQvS?!ELm~lIvRUNB4}TxE&^I3#aYjIHsmsj~;K{+r4{vclY+=)d%f657+MB zt`=vtqE4jn?fb7!C&Loq%rR=kb7+?42uN_aWZanz!o^u!C(tCX{BN(hkl>bcr=VOV z<3kTBK@HqqP&!4lNtvSuVElT5@C-TRi>HFH6sKf-3R0aRKJnS=5;=riGk3K{!9FB}X>q%$-iER3}CZgksXO87QXdfhmV)ibvFk zG44CT8mOnR8cLZtQ?8xxmAeT=)=The`{Zd@!K|Y^zVCmrQa1?ykKlPK};@czb^4OR>>h^3Z?IEb4!L{PE)b=GT|M E0dAB`4gdfE literal 0 HcmV?d00001 diff --git a/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/f2665fcd-edaa-4615-ace5-2c6585d452f3 b/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/f2665fcd-edaa-4615-ace5-2c6585d452f3 new file mode 100644 index 00000000000000..aa5bb8ea50905a --- /dev/null +++ b/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/f2665fcd-edaa-4615-ace5-2c6585d452f3 @@ -0,0 +1 @@ +MANIFEST-000005 diff --git a/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/f593321c-a39c-43de-b237-d8d3b33f2000 b/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/f593321c-a39c-43de-b237-d8d3b33f2000 new file mode 100644 index 00000000000000..00c77db5b298c5 --- /dev/null +++ b/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/f593321c-a39c-43de-b237-d8d3b33f2000 @@ -0,0 +1,541 @@ +# This is a RocksDB option file. +# +# For detailed file format spec, please refer to the example file +# in examples/rocksdb_option_file_example.ini +# + +[Version] + rocksdb_version=8.10.0 + options_file_version=1.1 + +[DBOptions] + max_background_flushes=-1 + compaction_readahead_size=2097152 + strict_bytes_per_sync=false + wal_bytes_per_sync=0 + max_open_files=-1 + stats_history_buffer_size=1048576 + max_total_wal_size=0 + stats_persist_period_sec=600 + stats_dump_period_sec=0 + avoid_flush_during_shutdown=true + max_subcompactions=1 + bytes_per_sync=0 + delayed_write_rate=16777216 + max_background_compactions=-1 + max_background_jobs=2 + delete_obsolete_files_period_micros=21600000000 + writable_file_max_buffer_size=1048576 + file_checksum_gen_factory=nullptr + allow_data_in_errors=false + max_bgerror_resume_count=2147483647 + best_efforts_recovery=false + write_dbid_to_manifest=false + atomic_flush=false + manual_wal_flush=false + two_write_queues=false + avoid_flush_during_recovery=false + dump_malloc_stats=false + info_log_level=INFO_LEVEL + write_thread_slow_yield_usec=3 + unordered_write=false + allow_ingest_behind=false + fail_if_options_file_error=true + persist_stats_to_disk=false + WAL_ttl_seconds=0 + bgerror_resume_retry_interval=1000000 + allow_concurrent_memtable_write=true + paranoid_checks=true + WAL_size_limit_MB=0 + lowest_used_cache_tier=kNonVolatileBlockTier + keep_log_file_num=4 + table_cache_numshardbits=6 + max_file_opening_threads=16 + random_access_max_buffer_size=1048576 + log_readahead_size=0 + enable_pipelined_write=false + wal_recovery_mode=kPointInTimeRecovery + db_write_buffer_size=0 + allow_2pc=false + skip_checking_sst_file_sizes_on_db_open=false + skip_stats_update_on_db_open=false + recycle_log_file_num=0 + db_host_id=__hostname__ + track_and_verify_wals_in_manifest=false + use_fsync=false + wal_compression=kNoCompression + compaction_verify_record_count=true + error_if_exists=false + manifest_preallocation_size=4194304 + is_fd_close_on_exec=true + enable_write_thread_adaptive_yield=true + enable_thread_tracking=false + avoid_unnecessary_blocking_io=false + allow_fallocate=true + max_log_file_size=26214400 + advise_random_on_open=true + create_missing_column_families=false + max_write_batch_group_size_bytes=1048576 + use_adaptive_mutex=false + wal_filter=nullptr + create_if_missing=true + enforce_single_del_contracts=true + allow_mmap_writes=false + access_hint_on_compaction_start=NORMAL + verify_sst_unique_id_in_manifest=true + log_file_time_to_roll=0 + use_direct_io_for_flush_and_compaction=false + flush_verify_memtable_count=true + max_manifest_file_size=1073741824 + write_thread_max_yield_usec=100 + use_direct_reads=false + allow_mmap_reads=false + + +[CFOptions "default"] + bottommost_file_compaction_delay=0 + memtable_protection_bytes_per_key=0 + compression_per_level=kSnappyCompression + bottommost_compression=kDisableCompressionOption + sample_for_compression=0 + blob_garbage_collection_age_cutoff=0.250000 + blob_compression_type=kNoCompression + prepopulate_blob_cache=kDisable + blob_compaction_readahead_size=0 + level0_stop_writes_trigger=36 + min_blob_size=0 + last_level_temperature=kUnknown + compaction_options_universal={allow_trivial_move=false;stop_style=kCompactionStopStyleTotalSize;min_merge_width=2;compression_size_percent=-1;max_size_amplification_percent=200;incremental=false;max_merge_width=4294967295;size_ratio=1;} + target_file_size_base=67108864 + ignore_max_compaction_bytes_for_input=true + memtable_whole_key_filtering=false + blob_file_starting_level=0 + soft_pending_compaction_bytes_limit=68719476736 + max_write_buffer_number=2 + ttl=2592000 + compaction_options_fifo={file_temperature_age_thresholds=;allow_compaction=false;age_for_warm=0;max_table_files_size=1073741824;} + check_flush_compaction_key_order=true + memtable_huge_page_size=0 + max_successive_merges=0 + inplace_update_num_locks=10000 + enable_blob_garbage_collection=false + arena_block_size=1048576 + bottommost_compression_opts={use_zstd_dict_trainer=true;enabled=false;zstd_max_train_bytes=0;parallel_threads=1;max_compressed_bytes_per_kb=896;checksum=false;max_dict_bytes=0;strategy=0;max_dict_buffer_bytes=0;level=32767;window_bits=-14;} + target_file_size_multiplier=1 + max_bytes_for_level_multiplier_additional=1:1:1:1:1:1:1 + blob_garbage_collection_force_threshold=1.000000 + enable_blob_files=false + level0_slowdown_writes_trigger=20 + compression=kSnappyCompression + level0_file_num_compaction_trigger=4 + block_protection_bytes_per_key=0 + prefix_extractor=nullptr + max_bytes_for_level_multiplier=10.000000 + write_buffer_size=67108864 + disable_auto_compactions=false + max_compaction_bytes=1677721600 + memtable_max_range_deletions=0 + compression_opts={use_zstd_dict_trainer=true;enabled=false;zstd_max_train_bytes=0;parallel_threads=1;max_compressed_bytes_per_kb=896;checksum=false;max_dict_bytes=0;strategy=0;max_dict_buffer_bytes=0;level=32767;window_bits=-14;} + hard_pending_compaction_bytes_limit=274877906944 + blob_file_size=268435456 + periodic_compaction_seconds=2592000 + paranoid_file_checks=false + experimental_mempurge_threshold=0.000000 + memtable_prefix_bloom_size_ratio=0.000000 + max_bytes_for_level_base=268435456 + max_sequential_skip_in_iterations=8 + report_bg_io_stats=false + sst_partitioner_factory=nullptr + compaction_pri=kMinOverlappingRatio + compaction_style=kCompactionStyleLevel + compaction_filter_factory=nullptr + compaction_filter=nullptr + memtable_factory=SkipListFactory + comparator=leveldb.BytewiseComparator + bloom_locality=0 + min_write_buffer_number_to_merge=1 + table_factory=BlockBasedTable + max_write_buffer_size_to_maintain=0 + max_write_buffer_number_to_maintain=0 + optimize_filters_for_hits=false + default_temperature=kUnknown + preserve_internal_time_seconds=0 + force_consistency_checks=true + merge_operator={id=StringAppendTESTOperator;delimiter=,;} + num_levels=7 + level_compaction_dynamic_file_size=true + memtable_insert_with_hint_prefix_extractor=nullptr + level_compaction_dynamic_level_bytes=false + persist_user_defined_timestamps=true + preclude_last_level_data_seconds=0 + inplace_update_support=false + +[TableOptions/BlockBasedTable "default"] + num_file_reads_for_auto_readahead=2 + metadata_cache_options={unpartitioned_pinning=kFallback;partition_pinning=kFallback;top_level_index_pinning=kFallback;} + read_amp_bytes_per_bit=0 + verify_compression=false + format_version=5 + optimize_filters_for_memory=false + partition_filters=false + detect_filter_construct_corruption=false + initial_auto_readahead_size=8192 + max_auto_readahead_size=262144 + enable_index_compression=true + checksum=kXXH3 + index_block_restart_interval=1 + pin_top_level_index_and_filter=true + block_align=false + block_size=4096 + index_type=kBinarySearch + filter_policy=nullptr + metadata_block_size=4096 + no_block_cache=false + index_shortening=kShortenSeparators + whole_key_filtering=true + block_size_deviation=10 + data_block_index_type=kDataBlockBinarySearch + data_block_hash_table_util_ratio=0.750000 + cache_index_and_filter_blocks=true + prepopulate_block_cache=kDisable + block_restart_interval=16 + pin_l0_filter_and_index_blocks_in_cache=true + cache_index_and_filter_blocks_with_high_priority=true + flush_block_policy_factory=FlushBlockBySizePolicyFactory + + +[CFOptions "_timer_state/processing_timer"] + bottommost_file_compaction_delay=0 + memtable_protection_bytes_per_key=0 + compression_per_level=kSnappyCompression + bottommost_compression=kDisableCompressionOption + sample_for_compression=0 + blob_garbage_collection_age_cutoff=0.250000 + blob_compression_type=kNoCompression + prepopulate_blob_cache=kDisable + blob_compaction_readahead_size=0 + level0_stop_writes_trigger=36 + min_blob_size=0 + last_level_temperature=kUnknown + compaction_options_universal={allow_trivial_move=false;stop_style=kCompactionStopStyleTotalSize;min_merge_width=2;compression_size_percent=-1;max_size_amplification_percent=200;incremental=false;max_merge_width=4294967295;size_ratio=1;} + target_file_size_base=67108864 + ignore_max_compaction_bytes_for_input=true + memtable_whole_key_filtering=false + blob_file_starting_level=0 + soft_pending_compaction_bytes_limit=68719476736 + max_write_buffer_number=2 + ttl=2592000 + compaction_options_fifo={file_temperature_age_thresholds=;allow_compaction=false;age_for_warm=0;max_table_files_size=1073741824;} + check_flush_compaction_key_order=true + memtable_huge_page_size=0 + max_successive_merges=0 + inplace_update_num_locks=10000 + enable_blob_garbage_collection=false + arena_block_size=1048576 + bottommost_compression_opts={use_zstd_dict_trainer=true;enabled=false;zstd_max_train_bytes=0;parallel_threads=1;max_compressed_bytes_per_kb=896;checksum=false;max_dict_bytes=0;strategy=0;max_dict_buffer_bytes=0;level=32767;window_bits=-14;} + target_file_size_multiplier=1 + max_bytes_for_level_multiplier_additional=1:1:1:1:1:1:1 + blob_garbage_collection_force_threshold=1.000000 + enable_blob_files=false + level0_slowdown_writes_trigger=20 + compression=kSnappyCompression + level0_file_num_compaction_trigger=4 + block_protection_bytes_per_key=0 + prefix_extractor=nullptr + max_bytes_for_level_multiplier=10.000000 + write_buffer_size=67108864 + disable_auto_compactions=false + max_compaction_bytes=1677721600 + memtable_max_range_deletions=0 + compression_opts={use_zstd_dict_trainer=true;enabled=false;zstd_max_train_bytes=0;parallel_threads=1;max_compressed_bytes_per_kb=896;checksum=false;max_dict_bytes=0;strategy=0;max_dict_buffer_bytes=0;level=32767;window_bits=-14;} + hard_pending_compaction_bytes_limit=274877906944 + blob_file_size=268435456 + periodic_compaction_seconds=2592000 + paranoid_file_checks=false + experimental_mempurge_threshold=0.000000 + memtable_prefix_bloom_size_ratio=0.000000 + max_bytes_for_level_base=268435456 + max_sequential_skip_in_iterations=8 + report_bg_io_stats=false + sst_partitioner_factory=nullptr + compaction_pri=kMinOverlappingRatio + compaction_style=kCompactionStyleLevel + compaction_filter_factory=nullptr + compaction_filter=nullptr + memtable_factory=SkipListFactory + comparator=leveldb.BytewiseComparator + bloom_locality=0 + min_write_buffer_number_to_merge=1 + table_factory=BlockBasedTable + max_write_buffer_size_to_maintain=0 + max_write_buffer_number_to_maintain=0 + optimize_filters_for_hits=false + default_temperature=kUnknown + preserve_internal_time_seconds=0 + force_consistency_checks=true + merge_operator={id=StringAppendTESTOperator;delimiter=,;} + num_levels=7 + level_compaction_dynamic_file_size=true + memtable_insert_with_hint_prefix_extractor=nullptr + level_compaction_dynamic_level_bytes=false + persist_user_defined_timestamps=true + preclude_last_level_data_seconds=0 + inplace_update_support=false + +[TableOptions/BlockBasedTable "_timer_state/processing_timer"] + num_file_reads_for_auto_readahead=2 + metadata_cache_options={unpartitioned_pinning=kFallback;partition_pinning=kFallback;top_level_index_pinning=kFallback;} + read_amp_bytes_per_bit=0 + verify_compression=false + format_version=5 + optimize_filters_for_memory=false + partition_filters=false + detect_filter_construct_corruption=false + initial_auto_readahead_size=8192 + max_auto_readahead_size=262144 + enable_index_compression=true + checksum=kXXH3 + index_block_restart_interval=1 + pin_top_level_index_and_filter=true + block_align=false + block_size=4096 + index_type=kBinarySearch + filter_policy=nullptr + metadata_block_size=4096 + no_block_cache=false + index_shortening=kShortenSeparators + whole_key_filtering=true + block_size_deviation=10 + data_block_index_type=kDataBlockBinarySearch + data_block_hash_table_util_ratio=0.750000 + cache_index_and_filter_blocks=true + prepopulate_block_cache=kDisable + block_restart_interval=16 + pin_l0_filter_and_index_blocks_in_cache=true + cache_index_and_filter_blocks_with_high_priority=true + flush_block_policy_factory=FlushBlockBySizePolicyFactory + + +[CFOptions "_timer_state/event_timer"] + bottommost_file_compaction_delay=0 + memtable_protection_bytes_per_key=0 + compression_per_level=kSnappyCompression + bottommost_compression=kDisableCompressionOption + sample_for_compression=0 + blob_garbage_collection_age_cutoff=0.250000 + blob_compression_type=kNoCompression + prepopulate_blob_cache=kDisable + blob_compaction_readahead_size=0 + level0_stop_writes_trigger=36 + min_blob_size=0 + last_level_temperature=kUnknown + compaction_options_universal={allow_trivial_move=false;stop_style=kCompactionStopStyleTotalSize;min_merge_width=2;compression_size_percent=-1;max_size_amplification_percent=200;incremental=false;max_merge_width=4294967295;size_ratio=1;} + target_file_size_base=67108864 + ignore_max_compaction_bytes_for_input=true + memtable_whole_key_filtering=false + blob_file_starting_level=0 + soft_pending_compaction_bytes_limit=68719476736 + max_write_buffer_number=2 + ttl=2592000 + compaction_options_fifo={file_temperature_age_thresholds=;allow_compaction=false;age_for_warm=0;max_table_files_size=1073741824;} + check_flush_compaction_key_order=true + memtable_huge_page_size=0 + max_successive_merges=0 + inplace_update_num_locks=10000 + enable_blob_garbage_collection=false + arena_block_size=1048576 + bottommost_compression_opts={use_zstd_dict_trainer=true;enabled=false;zstd_max_train_bytes=0;parallel_threads=1;max_compressed_bytes_per_kb=896;checksum=false;max_dict_bytes=0;strategy=0;max_dict_buffer_bytes=0;level=32767;window_bits=-14;} + target_file_size_multiplier=1 + max_bytes_for_level_multiplier_additional=1:1:1:1:1:1:1 + blob_garbage_collection_force_threshold=1.000000 + enable_blob_files=false + level0_slowdown_writes_trigger=20 + compression=kSnappyCompression + level0_file_num_compaction_trigger=4 + block_protection_bytes_per_key=0 + prefix_extractor=nullptr + max_bytes_for_level_multiplier=10.000000 + write_buffer_size=67108864 + disable_auto_compactions=false + max_compaction_bytes=1677721600 + memtable_max_range_deletions=0 + compression_opts={use_zstd_dict_trainer=true;enabled=false;zstd_max_train_bytes=0;parallel_threads=1;max_compressed_bytes_per_kb=896;checksum=false;max_dict_bytes=0;strategy=0;max_dict_buffer_bytes=0;level=32767;window_bits=-14;} + hard_pending_compaction_bytes_limit=274877906944 + blob_file_size=268435456 + periodic_compaction_seconds=2592000 + paranoid_file_checks=false + experimental_mempurge_threshold=0.000000 + memtable_prefix_bloom_size_ratio=0.000000 + max_bytes_for_level_base=268435456 + max_sequential_skip_in_iterations=8 + report_bg_io_stats=false + sst_partitioner_factory=nullptr + compaction_pri=kMinOverlappingRatio + compaction_style=kCompactionStyleLevel + compaction_filter_factory=nullptr + compaction_filter=nullptr + memtable_factory=SkipListFactory + comparator=leveldb.BytewiseComparator + bloom_locality=0 + min_write_buffer_number_to_merge=1 + table_factory=BlockBasedTable + max_write_buffer_size_to_maintain=0 + max_write_buffer_number_to_maintain=0 + optimize_filters_for_hits=false + default_temperature=kUnknown + preserve_internal_time_seconds=0 + force_consistency_checks=true + merge_operator={id=StringAppendTESTOperator;delimiter=,;} + num_levels=7 + level_compaction_dynamic_file_size=true + memtable_insert_with_hint_prefix_extractor=nullptr + level_compaction_dynamic_level_bytes=false + persist_user_defined_timestamps=true + preclude_last_level_data_seconds=0 + inplace_update_support=false + +[TableOptions/BlockBasedTable "_timer_state/event_timer"] + num_file_reads_for_auto_readahead=2 + metadata_cache_options={unpartitioned_pinning=kFallback;partition_pinning=kFallback;top_level_index_pinning=kFallback;} + read_amp_bytes_per_bit=0 + verify_compression=false + format_version=5 + optimize_filters_for_memory=false + partition_filters=false + detect_filter_construct_corruption=false + initial_auto_readahead_size=8192 + max_auto_readahead_size=262144 + enable_index_compression=true + checksum=kXXH3 + index_block_restart_interval=1 + pin_top_level_index_and_filter=true + block_align=false + block_size=4096 + index_type=kBinarySearch + filter_policy=nullptr + metadata_block_size=4096 + no_block_cache=false + index_shortening=kShortenSeparators + whole_key_filtering=true + block_size_deviation=10 + data_block_index_type=kDataBlockBinarySearch + data_block_hash_table_util_ratio=0.750000 + cache_index_and_filter_blocks=true + prepopulate_block_cache=kDisable + block_restart_interval=16 + pin_l0_filter_and_index_blocks_in_cache=true + cache_index_and_filter_blocks_with_high_priority=true + flush_block_policy_factory=FlushBlockBySizePolicyFactory + + +[CFOptions "state-name"] + bottommost_file_compaction_delay=0 + memtable_protection_bytes_per_key=0 + compression_per_level=kSnappyCompression + bottommost_compression=kDisableCompressionOption + sample_for_compression=0 + blob_garbage_collection_age_cutoff=0.250000 + blob_compression_type=kNoCompression + prepopulate_blob_cache=kDisable + blob_compaction_readahead_size=0 + level0_stop_writes_trigger=36 + min_blob_size=0 + last_level_temperature=kUnknown + compaction_options_universal={allow_trivial_move=false;stop_style=kCompactionStopStyleTotalSize;min_merge_width=2;compression_size_percent=-1;max_size_amplification_percent=200;incremental=false;max_merge_width=4294967295;size_ratio=1;} + target_file_size_base=67108864 + ignore_max_compaction_bytes_for_input=true + memtable_whole_key_filtering=false + blob_file_starting_level=0 + soft_pending_compaction_bytes_limit=68719476736 + max_write_buffer_number=2 + ttl=2592000 + compaction_options_fifo={file_temperature_age_thresholds=;allow_compaction=false;age_for_warm=0;max_table_files_size=1073741824;} + check_flush_compaction_key_order=true + memtable_huge_page_size=0 + max_successive_merges=0 + inplace_update_num_locks=10000 + enable_blob_garbage_collection=false + arena_block_size=1048576 + bottommost_compression_opts={use_zstd_dict_trainer=true;enabled=false;zstd_max_train_bytes=0;parallel_threads=1;max_compressed_bytes_per_kb=896;checksum=false;max_dict_bytes=0;strategy=0;max_dict_buffer_bytes=0;level=32767;window_bits=-14;} + target_file_size_multiplier=1 + max_bytes_for_level_multiplier_additional=1:1:1:1:1:1:1 + blob_garbage_collection_force_threshold=1.000000 + enable_blob_files=false + level0_slowdown_writes_trigger=20 + compression=kSnappyCompression + level0_file_num_compaction_trigger=4 + block_protection_bytes_per_key=0 + prefix_extractor=nullptr + max_bytes_for_level_multiplier=10.000000 + write_buffer_size=67108864 + disable_auto_compactions=false + max_compaction_bytes=1677721600 + memtable_max_range_deletions=0 + compression_opts={use_zstd_dict_trainer=true;enabled=false;zstd_max_train_bytes=0;parallel_threads=1;max_compressed_bytes_per_kb=896;checksum=false;max_dict_bytes=0;strategy=0;max_dict_buffer_bytes=0;level=32767;window_bits=-14;} + hard_pending_compaction_bytes_limit=274877906944 + blob_file_size=268435456 + periodic_compaction_seconds=2592000 + paranoid_file_checks=false + experimental_mempurge_threshold=0.000000 + memtable_prefix_bloom_size_ratio=0.000000 + max_bytes_for_level_base=268435456 + max_sequential_skip_in_iterations=8 + report_bg_io_stats=false + sst_partitioner_factory=nullptr + compaction_pri=kMinOverlappingRatio + compaction_style=kCompactionStyleLevel + compaction_filter_factory=nullptr + compaction_filter=nullptr + memtable_factory=SkipListFactory + comparator=leveldb.BytewiseComparator + bloom_locality=0 + min_write_buffer_number_to_merge=1 + table_factory=BlockBasedTable + max_write_buffer_size_to_maintain=0 + max_write_buffer_number_to_maintain=0 + optimize_filters_for_hits=false + default_temperature=kUnknown + preserve_internal_time_seconds=0 + force_consistency_checks=true + merge_operator={id=StringAppendTESTOperator;delimiter=,;} + num_levels=7 + level_compaction_dynamic_file_size=true + memtable_insert_with_hint_prefix_extractor=nullptr + level_compaction_dynamic_level_bytes=false + persist_user_defined_timestamps=true + preclude_last_level_data_seconds=0 + inplace_update_support=false + +[TableOptions/BlockBasedTable "state-name"] + num_file_reads_for_auto_readahead=2 + metadata_cache_options={unpartitioned_pinning=kFallback;partition_pinning=kFallback;top_level_index_pinning=kFallback;} + read_amp_bytes_per_bit=0 + verify_compression=false + format_version=5 + optimize_filters_for_memory=false + partition_filters=false + detect_filter_construct_corruption=false + initial_auto_readahead_size=8192 + max_auto_readahead_size=262144 + enable_index_compression=true + checksum=kXXH3 + index_block_restart_interval=1 + pin_top_level_index_and_filter=true + block_align=false + block_size=4096 + index_type=kBinarySearch + filter_policy=nullptr + metadata_block_size=4096 + no_block_cache=false + index_shortening=kShortenSeparators + whole_key_filtering=true + block_size_deviation=10 + data_block_index_type=kDataBlockBinarySearch + data_block_hash_table_util_ratio=0.750000 + cache_index_and_filter_blocks=true + prepopulate_block_cache=kDisable + block_restart_interval=16 + pin_l0_filter_and_index_blocks_in_cache=true + cache_index_and_filter_blocks_with_high_priority=true + flush_block_policy_factory=FlushBlockBySizePolicyFactory + diff --git a/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/f6c86361-507f-4ca3-8caa-7c7ce9a436d2 b/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/f6c86361-507f-4ca3-8caa-7c7ce9a436d2 new file mode 100644 index 0000000000000000000000000000000000000000..70c34f06f2e2471f8307d10afc761de439023d34 GIT binary patch literal 1099 zcmah|&2Cdi6rM>OeC-$~#ssBdV^k_ds2=P%#Hm6S2~b#&LJ1NLRdqGjbL@;Vp1GPC z$2RH;f!bx^8Cb)T$3W^M@C2Y%LfvuZIx+34cQyAr=R3dO`F4?9B9s&;DHifMGFyqR z(-|`TD86WE{@2^zl*m{Aa$AaOUk9hm{`&phJ#sl`P3Opoge3|eEa46W^E^?&q!ut@ zew;$!tSr*hLRXGhS1J!y>Rw}|N{5FAU5{Y=1#U)*v}4quuUVJ(r5ZCSW-jEGHSa_0 zWgl$pJoj)FjzRkgQjAvmDYx7ks}NRL(C*m7P&&9_PA#SU84J!yqxUsW({VL=L1UA8 z1l$m-HN!ZO-fh>L>sz%f%yw(7z0uyPIgg>CH{Nb+)%tuC3)%5;f(cweo;WY!0Hc@G zUvSW24&uM0LAQ$yOt}LGamLR=W&yx%H@9kq>SYVuXnc2#Z`2!W zo9+5KthMT!%~qqnA)2kVq}^_Hc~UvMd}y4Xa&GctDO`PzcXo|As^7PU;jXxAy18Y8_xbuueie);QFqi_}^M|BxmKxjVo*jb?>mkt+ov0@W zLpp|2vLOX6=V(ZLrF?-Nb2UJbIVM11J)k>AfS^&CqC$GWObV83;Yf9M8D+8WgXDJ7 z6tsAFYyaWBU`9MzpnA|}Sx=dU9WCW4PTNYrXPHjq8lNDfv_LUz59*i}GUAzI3x90H7R-yN)h1!?PnQmMDa%1o%-j~U*8f?#$( z{}Poj>oAKS`oB~vp7bC7NK~PoOU3XktY@a%b>LS|50(7!?6;TX-0bP0rZ$U@-Q9VW gpE|vL`ru9OW4^X}F+l(G&7u9%yT6~m-Fg4}XLmeO?f?J) literal 0 HcmV?d00001 diff --git a/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/f723fcb2-45bd-4b08-a2a9-d6a50c867e4d b/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/f723fcb2-45bd-4b08-a2a9-d6a50c867e4d new file mode 100644 index 0000000000000000000000000000000000000000..c99a8b47d4ae4fdefb8911eb917e4836021b19f6 GIT binary patch literal 1110 zcmah}&u<$=6rM?(de_}Lc1@}@T#Qr>RPxl0oy1iXiKGR=p|s#ikXF@d?0I%Z8PBX{ z#LjQ)U+}BV}gj~O16bRjj>MR)L?=Rjy|A^cuSTi_vqR;vY zFRafU2nZ>g5=0>OA*w3(i3M1yYK(#u>NV8>xnCdiSt{hf zr+p0I0`k;(kp>v8q<)8k4t)^+B~6AyEMUoS2jwK{qnPNam{EJ`u^+hfB$?b zimBk9Gbf)yJHAXofya^K1RaU4uHkTj4f4#-S-%C=<%r_Ua}p_)>1@GZ3iQaIkoXEU zcFa9H0~^Leq7AxGPY{N547+4Q2wE=C5cp>K8a?A`f+BNFfWmx04~zgoqcTN>jDVR8 zEZ4%3+Uh3CqUVF;4zmojc=$>0;r;N8c(hLSWX$rKat%A06e)JwN^mPlnJ(m-o+Bh# zr|5PB4GaspbV#(mW|RPIc}REJsklb197)Yp&^9m((+9gAZ4}QJ0cJSw0p`GhwDm-( z%-d3RC1mdB40k|5cy^DULa`Mxg vD!ICPv8b8N{bO~#?~6;L&tLa`DEw2bx8D!Y|D5ov`0Ldl&wf1o<=cM&8Fy6R literal 0 HcmV?d00001 diff --git a/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/f80c5516-caec-4cdf-b6f6-2ebdc70048ce b/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint-native/f80c5516-caec-4cdf-b6f6-2ebdc70048ce new file mode 100644 index 0000000000000000000000000000000000000000..0354c08367e34a92f6da54be3241b99346e7d24a GIT binary patch literal 260 zcmZS8)^KKEU^I2G?@(Z1WR%KDElbTwNz!wwEJ-cTEKYUK&n-wSN-W7Q>U3aa{KCu= z#lpbI#K6MvM@Q`^8v`RJ12Y>7gWTUAht2S7XJTRIU|~4H$as>GtGFbwBvm&rF*g-t zsO|!}pV>e|S%7A7voNMJaBbueVrGB7xYP(hfJ= z_j3mTPXG@vjs6sBe2ZiV;U>4q${m-vE@h>3u6eZ*N=xy+*P`53n{vfrrgnwUzk%QH zW*>R6=au48UU%@oq#l_1Ay-#7(`KV{4>`!?e3$>U^B#iWPb_Hq; BT5|vZ literal 0 HcmV?d00001 diff --git a/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint/154ce638-772d-46d3-a024-281019dd952f b/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint/154ce638-772d-46d3-a024-281019dd952f new file mode 100644 index 0000000000000000000000000000000000000000..3e4b43753dbe30fd9507477cebfce39d0a004b42 GIT binary patch literal 1521 zcmeHH!Ab)$5Y2W~q$nu#U=Q9zycqEhTxt%*Dob}&>Sc*#Y@@r$lB5Ma*)Q>5{29MO zYLd2Wmlkh(5eJfx$;{;C4KE0xEo7{QT0#ym&1ruK_$g)l#cUXUrelirYYrpLQibJ+ zYnB0yM|lbnNJdlk1~TF_S3{vqAs_92ZMcHRzZA6Tvm)oHasO@NJvYL&Ien33f-k{% zqzZ6H@Ie9LsJty9^3h>pVar5ms^Kh`q7O3Y%>}2(B56pxg|+Ny6vFTejr`r zt)Yt*U`k7%nW^D;5;;h!g;Y4U7ZtclKo-;#PyW-qSJTadQZHc)T>rPRO8HdN#=6tu zDW@4Y+!nIJGDHGms9Y2mF*0x!mn4>?>gFZprULB&0Y(M^Z`Vjy zm-yfi#}L=}kjMa62G%e~pHNqzBol)Gm>D1J8szEd;~C`|1Qw-@^F;g{eO-eC9GzX! z?F+*Q4p;<${i7F_pPAwZ^iwe~+K{3{1&26Fpnw8_s}V#30W*l;01-gI{Qo}y6wRa% literal 0 HcmV?d00001 diff --git a/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint/1b156e31-3761-4b44-b4e0-de8d66daafb9 b/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint/1b156e31-3761-4b44-b4e0-de8d66daafb9 new file mode 100644 index 0000000000000000000000000000000000000000..7dd2ab6466d0b0ac1a39b3a4c6b9bc523007e0f3 GIT binary patch literal 1620 zcmeHH!AiqG5Z$CIQWPxoU=H5In=Af-q3)qHN@$`|FJUcf8%=h@?zW&O?T`2`{)}HC zb$6T4q%GcZ5eKrvOlID`%v17*4W;1cb*piC+m1D9*%~Nd?pZ`(IlI@Z=Xj-M#=h2kpCWRd1Qc-`F!`Y07Ac z#sd}vdW?>i6ppK5g;4_>MVdB`gv64ZWtbIP~f|rwI4w}_vr~Z_8YK1 z-uFIx`8-ygGs_FS{Ec3^wuRTHW19p3&D^g#XSPyM#nA1o0;Al!TMAkQM!B~ru;%k0 DtUA;G literal 0 HcmV?d00001 diff --git a/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint/1fb1db0e-a888-4276-8b9d-2b866f7f3f5b b/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint/1fb1db0e-a888-4276-8b9d-2b866f7f3f5b new file mode 100644 index 0000000000000000000000000000000000000000..2bceb5cf93a5e692260525014c33466a66d7b4c0 GIT binary patch literal 1145 zcmeH`!AiqG5Qe8wdJ{Z&=*3&VNDhS@N>dfQgfWciYO=e`P73V{_bCK7DH21) zTQ1_jF3hm=@3-@_05FCS5!_oY6gtc|q+UyH-b13*8*Wj_&QUG8^onaEx+1l%T}dgi z#!~NzQ-jWLtOTJmxHz1*g0o))oA#r~EnGc)g!7|zEr0CEZB<$G4dVqpsl=M1Lzwo{ z9#I6>S%b})7Zkd2Y;*Eno8nk*vBMT(1ecHVNv@->?7$$xt8!?-!=c}ZI`@^9mi-)9gTKLP84b`Agl literal 0 HcmV?d00001 diff --git a/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint/249b04db-dcd1-4cd7-a86c-2d8c8c07b508 b/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint/249b04db-dcd1-4cd7-a86c-2d8c8c07b508 new file mode 100644 index 0000000000000000000000000000000000000000..d1759b63def095914ac083ec262c82fea01ddb26 GIT binary patch literal 1521 zcmeHH!Ab)$5Y4tKQWO+=um^AA&4_={rRGqqQo5^BFH2m;HoBWENm{5Ur61zI_%nWm z)FkcFE-l{nA`WE3%+5?+=JA3M+Cj!Ds3qh8(~QPLz)uO|FUDc`nT{#elMF_hB?`+C z*DM7bjVNDhS@N>dfQgfWciYO=e`P73V{_bCK7DH21) zTQ1_jF3hm=@3-@_05FCS5!_oY6gtc|q+UyH-b13*8*Wj_&QUG8^onaEx+1l%T}dgi z#!~NzQ-jWLtOTJmxHz1*g0o))oA#r~EnGc)g!7|zEr0CEZB<$G4dVqpsl=M1Lzwo{ z9#I6>S%b})7Zkd2Y;*Eno8nk*vBMT(1ecHVNv@->?7$$xt8!?-!=c}ZI`@^9mi-)9gTKLP84b`Agl literal 0 HcmV?d00001 diff --git a/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint/651cc0dc-210b-47e4-82ef-b6597840cdfc b/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint/651cc0dc-210b-47e4-82ef-b6597840cdfc new file mode 100644 index 0000000000000000000000000000000000000000..3ca8fe8552489a7a4f7f0a49c7b265c7db018ddc GIT binary patch literal 535 zcmZQzU|?ea0wxCM{GxQd#Dc`+j8wg}oXoszASY8VE3qt5ucWddwX`HNr&zD3G_NEx zH&rjBv>+!nIJGDHGms9Y2mF*0x!mn4>?>gFZprULB&0Y(M^Z`Vjy zm-yfi#}L=}kjMa62G%e~pHNqzBol)Gm>D1J8szEd;~C`|1Qw-@^F;g{eO-eC9GzX! z?F+*Q4p;<${i7F_pPAwZ^iwe~+K{3{1&26Fpnw8_s}V#30W*l;01-gI{Qo}y6wRa% literal 0 HcmV?d00001 diff --git a/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint/7e01a7dd-0775-4b68-bb05-1656ca68db63 b/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint/7e01a7dd-0775-4b68-bb05-1656ca68db63 new file mode 100644 index 0000000000000000000000000000000000000000..966ef8e59b646540067755e3a0a2ae467e27cca1 GIT binary patch literal 282 zcmZ9Ev1-FG5QZ-;>C~ZJIs^(1WUb!8C4vZ&I7o7bE=F;$wumhm=`y5GUnSr`G927} z-~S%~JONDLIr?L$@gtHUgflr$R_wUUbs;OIbIq%zP+E%5Qj20+ZHgs_X}L}NCH(T0 zuS;GjE=9f;-&`j80NRI!nZeX8vfs|SLpm(0ecyY>=rrJwY!}(yL}ZGBb&bMcO=tfw zEbf7FW{9n)^!X9sb%g=5J!U__G~UJe+X#A}#7Ji&Jt1W`=6y8OVlt61(zW&v${$w; literal 0 HcmV?d00001 diff --git a/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint/986d29ea-a289-4d70-8955-a4955ba26596 b/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint/986d29ea-a289-4d70-8955-a4955ba26596 new file mode 100644 index 0000000000000000000000000000000000000000..899ac0d71705586ade38b3f97d5f9b3d061b21d7 GIT binary patch literal 561 zcmZQzU|?ea0wxCM{GxQd#Dc`+j8wg}oXoszASY8VE3qt5ucWddwX`HNr&zD3G_NEx zH&rjBv>+!nIJGDHGms9Y2mF*0x!mn4>?>gFZprULB&0Y(M^Z`Vjy zm-yfi#}L=}kjMa62G%e~pHNqzBol)Gm>D1J8szEd;~C`|1Qw-@^F;g{eO-eC9GzX! z?F+*Q4p;<${i7F_pPAwZ^iwe~+K{3{1&26Fpnw8_iwQ)+00)c#q`8`)98kP4z+@Qz G{|5kngQOt< literal 0 HcmV?d00001 diff --git a/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint/_metadata b/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint/_metadata new file mode 100644 index 0000000000000000000000000000000000000000..72f8a60c95da15bad8da09cad9ac61dbcc7c555e GIT binary patch literal 2955 zcmcguO^6&t6t3ND){RLthDb~lvf^qGshO_s>gwu5!DUTw&E^MZg&2@nf4w_qre~b# z3A-KwD(JzSL@*acNC*gtpcg%e9s*GaUi`tJM-Sp50S&T7P<++hGt--$U>3oGnd+)~ z@2l_q)T^3)ehwpqM&W1MaMqzQba$oEX(_X7e5%t<8ujsPh_+148+EMNsK!Y(p35fP z9gjTs`&lu2?(B|B4{ZzH{0u;b;5TBy?1ybbb~J=Gv{P8zPDEmQLa_9y6@vCv)}f#B z{;yFq5g3PvKx^y-fsd(V982l=m@uCy!MK*p%fyGa=W5+3I*P)QF{P6!spkFYYKZzNSw z7`QnMDS}$IX|qfV)KjLKdPMl4#*ynQOamgY^mvGgt0~jO(NyY8yU6sOq*^z%#iME1 zqE78-qiI?qX|&M9GPlmAVyRz2>R>M9PX4m}gY{SMKly}HTl#w2(L0SSw8+wR8ZEU<$jME3O>a%Hb=SZmd+}W4p$miDOYW5YW-fBd7LU zc;)+dwtoBQyVs_dKx1$OioE(^ST@`9!Lr$&5rx?sS$ON0&QBiy`NI6eXFh-H*&l6S z{s$JfTm#%6K017t!H-S9dU`|r)Ss8`EAlHGq%2QujuwwA^NCW9hR6^{!pSlebJs*z zGCvGBb(D@&=9}Wl>et+XH6Y|nyP*+SxNu0R4jjxw-^YT&zZ5QDvmEr+Yk*{s;{oJQ zKs}0S=yJ%@NC0QyFwRxr8-FF!|5gLYzL!rfKJfm|#rnj@JIC)my&pCh9DAD;wiRoD z??}ZZlh~nwErmX}MNweIbSN}~6)*SgDr$fr%JIBFU>+%OgEj_-A_}qRxsEVU7>v#f z%PMLBk;G@lBiIWV99Kyxmee>{8?G7L4x)DxtfB@O6Gl-8)ErL+P_3woxdXS2mPQ!j z3lo_EOjmJ*lj=20_Pu>^>H3w0_9-&=Tkd}wp(JG#9~y&t z>x4pS3Z+|dFoP;VAdfvrW}yl4n{>6UL`zSJSeaVQ=p$%jKDAd=)A60% zaW$^C=dDC{rqYq^4ph@VOr_IqnpoSZ(Wn8>CHPp^iB(MiF+GFs=yRK0Y?=hQGhjwJ zGozfEQO?aM_eINV#(@-Fpwmj>|erqpJH7Fy^IOTA>N zm-fV+dU3ItpmkG|2M!*Xo|>G2?;aLx3~u=M6znNj?+>)1xZR8B1X`D%5!i6gKW*c4 A?f?J) literal 0 HcmV?d00001 diff --git a/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint/a1c0337a-8fc4-4dee-9af9-3320ae772edb b/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint/a1c0337a-8fc4-4dee-9af9-3320ae772edb new file mode 100644 index 0000000000000000000000000000000000000000..7190d92c836c07c409a4189f51a232e0eaa2ffd1 GIT binary patch literal 1521 zcmeHH!Ab)$5KX%(QWO+=um^AA&4_>CQgbM-Qo5^BFH0-a(Ek@SqW zjxN`LDJ_AfriSB5WFV;)QsKy6w8T{cvY=-965ECjQohiQNK&jwo{{%;AUY~1Fm`N-;l8Dx7R*`YVNZPw2F6B`zZE4 i!#N*bX|)}06?0dkbYy>BYjraY7a^+!nIJGDHGms9Y2mF*0x!mn4>?>gFZprULB&0Y(M^Z`Vjy zm-yfi#}L=}kjMa62G%e~pHNqzBol)Gm>D1J8szEd;~C`|1Qw-@^F;g{eO-eC9GzX! z?F+*Q4p;<${i7F_pPAwZ^iwe~+K{3{1&26Fpnw8_iwQ)+00)c#q`8`)98kP4z+@Qz G{|5kngQOt< literal 0 HcmV?d00001 diff --git a/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint/b601976c-7434-4928-8cfa-47a0688c75e5 b/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint/b601976c-7434-4928-8cfa-47a0688c75e5 new file mode 100644 index 0000000000000000000000000000000000000000..7bdcb98af9b49139ab5bc65bb28c427d1206ffaa GIT binary patch literal 535 zcmZQzU|?ea0wxCM{GxQd#Dc`+j8wg}oXoszASY8VE3qt5ucWddwX`HNr&zD3G_NEx zH&rjBv>+!nIJGDHGms9Y2mF*0x!mn4>?>gFZprULB&0Y(M^Z`Vjy zm-yfi#}L=}kjMa62G%e~pHNqzBol)Gm>D1J8szEd;~C`|1Qw-@^F;g{eO-eC9GzX! z?F+*Q4p;<${i7F_pPAwZ^iwe~+K{3{1&26Fpnw8_s~JQB0TYPe01-gI^#4Bq6zZf9 literal 0 HcmV?d00001 diff --git a/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint/d21dd724-7b5c-48a7-8cb4-1ac66ecdbd01 b/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint/d21dd724-7b5c-48a7-8cb4-1ac66ecdbd01 new file mode 100644 index 0000000000000000000000000000000000000000..0eb542e15445cc509457c86bdcd2692b9178b962 GIT binary patch literal 1620 zcmeHH!AiqG5Z$CIQWPxoU=H5In=Af-q3)qrH8fGFm#~(#jV8NccU#bt_DB2|f5xwn zy1PwC(iU&Ihy&SSCNpneW_SSrYyo99=rBHlIK{&;fsb)SpH&dSCp^VazNBO#qgX&b zp)yJc3?^wze8M9fN3VqY6sKa$qylPy-LDM;c=QXPZeM_$g7)3Fs<+JJt?e1IBw@5f z;{gi-dyI|>3WwFO!l(fbLQR{8LSjiyQqG1%h=`6BX+v8b$}F&V>-KI?=%aqu?RD=_ zUuA7@wn9uuPH>_y%$!(CIF^hH80d=%UKJwwXo^q%({rz9oBNerk}09`e~op@r=B%7 zjTVn7PKZ&S(cT3bp!3iV+yI5az(ZiusL@Dpy)f$`*S>Nuk?*;kl^;Pp_vr~Z_8YK1 z-giE)vw18#XO+!nIJGDHGms9Y2mF*0x!mn4>?>gFZprULB&0Y(M^Z`Vjy zm-yfi#}L=}kjMa62G%e~pHNqzBol)Gm>D1J8szEd;~C`|1Qw-@^F;g{eO-eC9GzX! z?F+*Q4p;<${i7F_pPAwZ^iwe~+K{3{1&26Fpnw8_s~JQB0TYPe01-gI^#4Bq6zZf9 literal 0 HcmV?d00001 diff --git a/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint/ee9ff9f9-03b7-4642-809c-dbeae15aefeb b/flink-tests/src/test/resources/new-stateful-udf-migration-itcase-flink2.3-rocksdb-savepoint/ee9ff9f9-03b7-4642-809c-dbeae15aefeb new file mode 100644 index 0000000000000000000000000000000000000000..b9b674eadd0cc1be955b46816568332b685bf49d GIT binary patch literal 1521 zcmeHH!Ab)$5Y4tKQWO+=um^AAMU40dE;WbZDy6$B^|HieY@@r$lB9)tQu-nOi$CL6 zNKMj~c4_gp7jYm7naoUH-tdAD+Cs)Es3~L*)0`%Kz)vaTFJ{B=GaXW_M>z~MOBI#_ zu2}{+8ssU2AQ?^BE69-3T=j)Eg{o-xYr_>h{-vNzpB6bs_4{uV@43-lo0Etv6MPBA zBUOL{!Fvk`N5yRcQ57A=7PgF)rW($2DH2eM@!r(!V4KO9hxYFL;FiQ8>9qWy^*}nt zTR|5qz?7CiGgHIyByx~c3#o8qFIwO#0GU&>c=Dg-y_{|y6nY6m;QGIfWy+_VHrAXL zPdUxNDbH!|igd|k97cXb;;7puXw#|DNpQU|%K=xv@vlkP_M0moK{@wX1{&ix}_{!0w$9mEicg1 literal 0 HcmV?d00001 diff --git a/flink-tests/src/test/resources/operatorstate/complexKeyed-flink2.3/_metadata b/flink-tests/src/test/resources/operatorstate/complexKeyed-flink2.3/_metadata new file mode 100644 index 0000000000000000000000000000000000000000..5fee184c1b84dc39947526c3b24af0c870cd1098 GIT binary patch literal 14598 zcmeHOO^hSO6)t;byyKvS6g7-I0wjKyn&Zv@sq_cwhcQn!Ra2+3P!*~P zRizdeoLZ)(G0RmwO;VuQw;s9%aJj)V4jtvn)$d zbn8Uu2S+)Z@Pj*0KdLLMnrbs@E3Qp7!;)bBFo&ADkc2Fm!u3wZ_oZf)Lry=@3mw*b z+7I0D`IwZRPl-b1p|{?k@Bb1p{h+P zmEWF_8KV4)Oz{W{V52?57B&+GwNzQ6nhe&OaYs<*dA6Z=p2=*Tkn(Rqigd*&lGQmQ z$_9S*hhRFZ$qNH9O#EIvv8$copeLp#HDg0he~P10BoEx6L9AX)8R&^ymLJaumJwy7n!=HH`RscAT%)~NU!7YjFU)l$yHs8XeRrMpMGULy%mAp^0 zyLN^FyLPb2;DB4$@?;CP@L<;^byDY$H;24Asafslxgq!uK)D-d-#=hS_A_o%!VUh*HGv;>vgLxVQYSvhbU~#1FzLU zrmGte>El=yd|Zm@PzPe=sp4rI4qb3hbFt-PuO1aTF_Z9EQydX%&W}5e{sxTCuM9#z zNUEz7ax=nc&%~dE&KHYh`64;v`Y~sbyUGGCdOhJ@B&T;-k260l-!(4#fgfMSC&rxi z(20kA3cD5<$E!+&eo6<77Grb&l;M z7%Q6dvb~21JRX&=ZGLL`Wcwy*oQQyGtY_lemhJn}pa!r5AU0W;R)3ug(5M zfkV|BCnQdY3#dpOIM4%94+wgJ3rB?DP!6bP4&~>7pyI+CJFycxRVv@&k;XgocIM5S zZ{Pc7p3B#_F+yktsxGYiK+|aQGH;`qM2S`;w~arN?7!;|fBEMA{U6hNlQ3us>Pv02(G);6~4)mpJus;`!-wXO22S8C;r_4?(F)e@SkZdS^*{)RTG}cXE9GmYEs##2)mFTn=WQ-_R6b~g(QZD@qBLx(e3J51F_g^%1r8&nWns!pj=4u9_H0wQmT+93tFgd`4B?{#?o@nS z?og$agKYt*P!A%F`-Ee|@fdRrW*SP41wPgQKF?NLSuE7ciz``@wwjCGE<$(rD))Z< z=hhE@z3}&Q7oPv{DooQcc(Xgb!*A0;7$@oNKR-~r7oWN?dz(!D{Co1^(Sdq~E~mmT zx$wX}6(*jhHx<~}Gpztqh~&Uml35-2zXe@ql-_1KV2#Lbu3`Gr5+1gF?t^zS3j)`W zm5Ht2b?&Ba?j=C0MCfrMuLF3%5?!A zt}u074|@s@0P35L9oVL83Jv_3_ntv&>ylKu6UH+4%D)TWN9HH>-#&k7`O~r<*<-WE zCMg^4V4N9nsqifaQN499WLIF22#MkFclGRGH|jX5Czj}#L70^Cdp z;`)K|q{+N-fM-OK3W(&)bHH6(peCw3ig~~p9C2pAxkHFFLw=8xoc=nhKb;@T;Y*W zjfRrf(9;K^OFZoKpE>M@QJC!L5r>j$<|kQGOAggkv!tyesYNqE3ofY8n9U;5;E-a< z3Oe7nt@ch^rHE8u8-;E{TIeLCg@c5&&>vbjOg#0R<^6VN2RQ^Fn2!TOmG7wz9D4e# z_kKF}+0})wCeUOBJqb28dD=C_9yUd^VpUN4N@Qu+iV8hNmwMBdD`+a>P1wnN!WrrZJwYBu(%N;YX}5wcfMzL{sg-Z zeQF+|{TQ9srsuWk`BIcMkG^cDXm+KzzOi0jDORA}(*+9y43GFTq5tjri))lm+{Mx5 O-bOdjY>K8}!P5Wy>4Fyk literal 0 HcmV?d00001 From 3e348d9a4878ed2baf3c90d6769796d1f6cf5d1a Mon Sep 17 00:00:00 2001 From: Ramin Gharib Date: Wed, 22 Jul 2026 14:10:26 +0200 Subject: [PATCH 21/32] [hotfix] Fix compilation with jdk11 --- .../runtime/stream/sql/join/LateralSnapshotJoinITCase.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/flink-table/flink-table-planner/src/test/java/org/apache/flink/table/planner/runtime/stream/sql/join/LateralSnapshotJoinITCase.java b/flink-table/flink-table-planner/src/test/java/org/apache/flink/table/planner/runtime/stream/sql/join/LateralSnapshotJoinITCase.java index 4972d4cb28c84e..58632e44326543 100644 --- a/flink-table/flink-table-planner/src/test/java/org/apache/flink/table/planner/runtime/stream/sql/join/LateralSnapshotJoinITCase.java +++ b/flink-table/flink-table-planner/src/test/java/org/apache/flink/table/planner/runtime/stream/sql/join/LateralSnapshotJoinITCase.java @@ -153,7 +153,7 @@ void testProbesObserveProgressiveBuildVersions() { final List probes = IntStream.range(0, probeCount) .mapToObj(i -> Row.of("k", i, ts(String.format("00:00:%02d", i)))) - .toList(); + .collect(Collectors.toList()); createProbe(probes, 200L); // last probe at ~1400 ms, well past the last post-flip update createUpsertBuild( Arrays.asList( From 1a45ad8ba3c40f8b390e98e9ced5b433cba2a7c4 Mon Sep 17 00:00:00 2001 From: Yuepeng Pan Date: Wed, 22 Jul 2026 20:19:42 +0800 Subject: [PATCH 22/32] [hotfix][docs] Remove inconsistent parameter descriptions. (#28767) --- docs/content.zh/release-notes/flink-2.3.md | 8 +------- docs/content/release-notes/flink-2.3.md | 8 +------- 2 files changed, 2 insertions(+), 14 deletions(-) diff --git a/docs/content.zh/release-notes/flink-2.3.md b/docs/content.zh/release-notes/flink-2.3.md index 8ddc99dbd9245f..06635d5f6f9ef3 100644 --- a/docs/content.zh/release-notes/flink-2.3.md +++ b/docs/content.zh/release-notes/flink-2.3.md @@ -90,17 +90,11 @@ CREATE FUNCTION my_func AS 'com.example.MyUdf' Flink 2.3 reworks how `SinkUpsertMaterializer` handles the case where a query's upsert key differs from the sink's primary key. Previously this required maintaining the full history of -records and could blow up state. Two changes address this: +records and could blow up state. An enhancement allows you to manage this situation: - A new `ON CONFLICT` clause with `DO NOTHING`, `DO ERROR` and `DO DEDUPLICATE` strategies makes the behavior on key conflict explicit. By default, planning now fails when the upsert and primary keys differ, requiring the user to choose a conflict strategy. -- Watermark-based record compaction is introduced to fix internal changelog disorder. The - trigger and frequency of compaction are controlled by: - - `table.exec.sink.upserts.compaction-mode` (default: `WATERMARK`) — `WATERMARK` or - `CHECKPOINT`. - - `table.exec.sink.upserts.compaction-interval` — optional fallback interval for emitting - watermarks when none arrive naturally. #### Process Table Function enhancements diff --git a/docs/content/release-notes/flink-2.3.md b/docs/content/release-notes/flink-2.3.md index 8ddc99dbd9245f..06635d5f6f9ef3 100644 --- a/docs/content/release-notes/flink-2.3.md +++ b/docs/content/release-notes/flink-2.3.md @@ -90,17 +90,11 @@ CREATE FUNCTION my_func AS 'com.example.MyUdf' Flink 2.3 reworks how `SinkUpsertMaterializer` handles the case where a query's upsert key differs from the sink's primary key. Previously this required maintaining the full history of -records and could blow up state. Two changes address this: +records and could blow up state. An enhancement allows you to manage this situation: - A new `ON CONFLICT` clause with `DO NOTHING`, `DO ERROR` and `DO DEDUPLICATE` strategies makes the behavior on key conflict explicit. By default, planning now fails when the upsert and primary keys differ, requiring the user to choose a conflict strategy. -- Watermark-based record compaction is introduced to fix internal changelog disorder. The - trigger and frequency of compaction are controlled by: - - `table.exec.sink.upserts.compaction-mode` (default: `WATERMARK`) — `WATERMARK` or - `CHECKPOINT`. - - `table.exec.sink.upserts.compaction-interval` — optional fallback interval for emitting - watermarks when none arrive naturally. #### Process Table Function enhancements From aef4bb322d01863432eeb986db0e188ad32ab0fd Mon Sep 17 00:00:00 2001 From: Fabian Hueske Date: Wed, 22 Jul 2026 20:13:38 +0200 Subject: [PATCH 23/32] [FLINK-40219][table] Fix outputType computation of LateralSnapshotJoin (#28803) TimeIndicatorRelDataType.getOriginalType() does not reliably provide the correct nullability. The planner might have changed the nullability on the time indicator type without updating the nested original type. This change fixes the outputType computation to use the same rowtime type conversion as RelTimeIndicatorConverter. Generated-By: Claude Opus 4.8 (1M context) --- .../plan/utils/LateralSnapshotJoinUtil.java | 21 +- .../utils/LateralSnapshotJoinUtilTest.java | 188 ++++++++++++++++++ 2 files changed, 205 insertions(+), 4 deletions(-) create mode 100644 flink-table/flink-table-planner/src/test/java/org/apache/flink/table/planner/plan/utils/LateralSnapshotJoinUtilTest.java diff --git a/flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/plan/utils/LateralSnapshotJoinUtil.java b/flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/plan/utils/LateralSnapshotJoinUtil.java index 95bca1a1384ec6..aa2f8a22cc9f1d 100644 --- a/flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/plan/utils/LateralSnapshotJoinUtil.java +++ b/flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/plan/utils/LateralSnapshotJoinUtil.java @@ -22,8 +22,12 @@ import org.apache.flink.table.functions.BuiltInFunctionDefinition; import org.apache.flink.table.functions.BuiltInFunctionDefinitions; import org.apache.flink.table.functions.FunctionDefinition; +import org.apache.flink.table.planner.calcite.FlinkTypeFactory; import org.apache.flink.table.planner.functions.bridging.BridgingSqlFunction; import org.apache.flink.table.planner.plan.schema.TimeIndicatorRelDataType; +import org.apache.flink.table.types.logical.LocalZonedTimestampType; +import org.apache.flink.table.types.logical.LogicalType; +import org.apache.flink.table.types.logical.TimestampType; import org.apache.calcite.rel.core.JoinRelType; import org.apache.calcite.rel.type.RelDataType; @@ -81,12 +85,21 @@ public static RelDataType deriveRowType( RelDataType rightType, JoinRelType joinType, List systemFieldList) { + final FlinkTypeFactory flinkTypeFactory = (FlinkTypeFactory) typeFactory; final RelDataTypeFactory.Builder materializedRight = typeFactory.builder(); for (RelDataTypeField field : rightType.getFieldList()) { - final RelDataType fieldType = - field.getType() instanceof TimeIndicatorRelDataType - ? ((TimeIndicatorRelDataType) field.getType()).getOriginalType() - : field.getType(); + final RelDataType fieldType; + if (field.getType() instanceof TimeIndicatorRelDataType) { + // Materialize the build-side time attribute to a regular timestamp, following the + // same convention as RelTimeIndicatorConverter + final LogicalType materialized = + FlinkTypeFactory.isTimestampLtzIndicatorType(field.getType()) + ? new LocalZonedTimestampType(field.getType().isNullable(), 3) + : new TimestampType(field.getType().isNullable(), 3); + fieldType = flinkTypeFactory.createFieldTypeFromLogicalType(materialized); + } else { + fieldType = field.getType(); + } materializedRight.add(field.getName(), fieldType); } return SqlValidatorUtil.deriveJoinRowType( diff --git a/flink-table/flink-table-planner/src/test/java/org/apache/flink/table/planner/plan/utils/LateralSnapshotJoinUtilTest.java b/flink-table/flink-table-planner/src/test/java/org/apache/flink/table/planner/plan/utils/LateralSnapshotJoinUtilTest.java new file mode 100644 index 00000000000000..fb1dd9649180bc --- /dev/null +++ b/flink-table/flink-table-planner/src/test/java/org/apache/flink/table/planner/plan/utils/LateralSnapshotJoinUtilTest.java @@ -0,0 +1,188 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.flink.table.planner.plan.utils; + +import org.apache.flink.table.planner.calcite.FlinkTypeFactory; +import org.apache.flink.table.planner.calcite.FlinkTypeSystem; +import org.apache.flink.table.planner.plan.schema.TimeIndicatorRelDataType; + +import org.apache.calcite.rel.core.JoinRelType; +import org.apache.calcite.rel.type.RelDataType; +import org.apache.calcite.rel.type.RelDataTypeField; +import org.apache.calcite.sql.type.BasicSqlType; +import org.apache.calcite.sql.type.SqlTypeName; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.CsvSource; +import org.junit.jupiter.params.provider.ValueSource; + +import java.util.Collections; +import java.util.List; + +import static org.assertj.core.api.Assertions.assertThat; + +/** Tests for {@link LateralSnapshotJoinUtil}. */ +class LateralSnapshotJoinUtilTest { + + private FlinkTypeFactory typeFactory; + + @BeforeEach + void setup() { + typeFactory = + new FlinkTypeFactory( + Thread.currentThread().getContextClassLoader(), FlinkTypeSystem.INSTANCE); + } + + @ParameterizedTest(name = "nullableCols={0}, leftOuter={1}") + @CsvSource({"true, true", "true, false", "false, true", "false, false"}) + void testDeriveRowType(boolean nullableCols, boolean leftOuter) { + // Probe (left) side: a scalar column and a rowtime attribute (both forwarded unchanged -- + // left time attributes are not materialized). + final TimeIndicatorRelDataType leftRowtime = rowtime(nullableCols); + final RelDataType leftType = + typeFactory + .builder() + .add("pk", varchar(nullableCols)) + .add("pts", leftRowtime) + .build(); + + // Build (right) side: a scalar column and a rowtime attribute whose originalType has the + // same nullability as the indicator. + final TimeIndicatorRelDataType buildRowtime = rowtime(nullableCols); + final RelDataType rightType = + typeFactory + .builder() + .add("bk", varchar(nullableCols)) + .add("bts", buildRowtime) + .build(); + + final RelDataType rowType = + LateralSnapshotJoinUtil.deriveRowType( + typeFactory, + leftType, + rightType, + leftOuter ? JoinRelType.LEFT : JoinRelType.INNER, + Collections.emptyList()); + + final List fields = rowType.getFieldList(); + assertThat(fields) + .extracting(RelDataTypeField::getName) + .containsExactly("pk", "pts", "bk", "bts"); + + // Left fields are forwarded unchanged (left is never the null-padded side of INNER/LEFT). + assertThat(fields.get(0).getType()) + .as("left scalar forwarded unchanged") + .isEqualTo(leftType.getFieldList().get(0).getType()); + assertThat(fields.get(1).getType()) + .as("left time attribute forwarded unchanged (still a time indicator)") + .isInstanceOf(TimeIndicatorRelDataType.class) + .isEqualTo(leftRowtime); + + // Build-side scalar: base type preserved; nullable iff the column is nullable or it is + // null-padded by a LEFT join. + assertThat(fields.get(2).getType().getSqlTypeName()).isEqualTo(SqlTypeName.VARCHAR); + assertThat(fields.get(2).getType().isNullable()) + .as("build-side scalar nullability") + .isEqualTo(nullableCols || leftOuter); + + // Build-side time attribute: materialized to a regular timestamp (no longer an indicator); + // nullable iff the column is nullable or it is null-padded by a LEFT join. + assertThat(fields.get(3).getType()) + .as("build-side time attribute is materialized") + .isNotInstanceOf(TimeIndicatorRelDataType.class); + assertThat(fields.get(3).getType().getSqlTypeName()).isEqualTo(SqlTypeName.TIMESTAMP); + assertThat(fields.get(3).getType().isNullable()) + .as("materialized build-side rowtime nullability") + .isEqualTo(nullableCols || leftOuter); + } + + /** + * Regression guard for the case where a build-side time attribute's {@code originalType} + * nullability does NOT match the indicator's. {@code + * FlinkTypeFactory#createTypeWithNullability} can widen a NOT NULL rowtime to nullable by + * flipping only the indicator, leaving {@code originalType} inconsistent. {@link + * LateralSnapshotJoinUtil#deriveRowType} must materialize using the indicator's nullability, + * not {@code originalType}'s. + */ + @ParameterizedTest(name = "nullableTimeCol={0}") + @ValueSource(booleans = {true, false}) + void testDeriveRowTypeIgnoresStaleOriginalTypeNullability(boolean nullableTimeCol) { + // originalType is deliberately the opposite nullability of the indicator. + final TimeIndicatorRelDataType buildRowtime = rowtime(nullableTimeCol, !nullableTimeCol); + assertThat(buildRowtime.isNullable()).isEqualTo(nullableTimeCol); + assertThat(buildRowtime.getOriginalType().isNullable()).isEqualTo(!nullableTimeCol); + + final RelDataType leftType = + typeFactory + .builder() + .add("pk", typeFactory.createSqlType(SqlTypeName.VARCHAR)) + .build(); + final RelDataType rightType = + typeFactory + .builder() + .add("bk", typeFactory.createSqlType(SqlTypeName.VARCHAR)) + .add("bts", buildRowtime) + .build(); + + final RelDataType rowType = + LateralSnapshotJoinUtil.deriveRowType( + typeFactory, + leftType, + rightType, + JoinRelType.INNER, + Collections.emptyList()); + + final RelDataTypeField bts = rowType.getField("bts", true, false); + assertThat(bts).isNotNull(); + assertThat(bts.getType()) + .as("build-side time attribute is materialized") + .isNotInstanceOf(TimeIndicatorRelDataType.class); + // Nullability must follow the indicator, not the (opposite) originalType. + assertThat(bts.getType().isNullable()) + .as("materialized rowtime uses indicator nullability, not originalType") + .isEqualTo(nullableTimeCol); + } + + private RelDataType varchar(boolean nullable) { + return typeFactory.createTypeWithNullability( + typeFactory.createSqlType(SqlTypeName.VARCHAR), nullable); + } + + private TimeIndicatorRelDataType rowtime(boolean nullable) { + return rowtime(nullable, nullable); + } + + /** + * Builds an event-time {@link TimeIndicatorRelDataType} whose indicator and underlying {@code + * originalType} nullabilities can be set independently. + */ + private TimeIndicatorRelDataType rowtime( + boolean indicatorNullable, boolean originalTypeNullable) { + final BasicSqlType originalType = + (BasicSqlType) + typeFactory.createTypeWithNullability( + typeFactory.createSqlType(SqlTypeName.TIMESTAMP, 3), + originalTypeNullable); + return new TimeIndicatorRelDataType( + typeFactory.getTypeSystem(), + originalType, + indicatorNullable, + /* isEventTime= */ true); + } +} From ff3aadfa6ddd222c5360f3a4c0880e557c53ffd3 Mon Sep 17 00:00:00 2001 From: Yuepeng Pan Date: Thu, 23 Jul 2026 12:45:24 +0800 Subject: [PATCH 24/32] [FLINK-40220][Connector/JDBC] Update the branch name of JDBC connector docs. (#28804) --- docs/setup_docs.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/setup_docs.sh b/docs/setup_docs.sh index 3abe2c3d3365cc..5d463ceab0bb50 100755 --- a/docs/setup_docs.sh +++ b/docs/setup_docs.sh @@ -55,7 +55,7 @@ if [ "$SKIP_INTEGRATE_CONNECTOR_DOCS" = false ]; then integrate_connector_docs aws v6.0 integrate_connector_docs cassandra v3.2 integrate_connector_docs pulsar v4.1 - integrate_connector_docs jdbc v4.0 + integrate_connector_docs jdbc v4.1.0 integrate_connector_docs rabbitmq v3.0 integrate_connector_docs gcp-pubsub v3.1 integrate_connector_docs mongodb v2.0 From 43a902ad128824d0e4f696ee96cd8c29e5416e2e Mon Sep 17 00:00:00 2001 From: Dale Lane Date: Thu, 23 Jul 2026 10:31:03 +0100 Subject: [PATCH 25/32] [FLINK-40166][table] SQL query parsing fails if current catalog unreachable (#28775) If the current catalog is unreachable, any SQL query fails to parse - even queries that make fully-qualified accesses to catalogs that are reachable. This is because we make a call to databaseExists in the current catalog as part of parsing the statement. This commit wraps this in a try..catch so it doesn't block the remainder of the parsing. Signed-off-by: Dale Lane --- .../flink/table/catalog/CatalogManager.java | 16 ++++- .../table/catalog/CatalogManagerTest.java | 37 ++++++++++ .../catalog/BrokenCurrentCatalogTest.java | 71 +++++++++++++++++++ 3 files changed, 123 insertions(+), 1 deletion(-) create mode 100644 flink-table/flink-table-planner/src/test/java/org/apache/flink/table/planner/catalog/BrokenCurrentCatalogTest.java diff --git a/flink-table/flink-table-api-java/src/main/java/org/apache/flink/table/catalog/CatalogManager.java b/flink-table/flink-table-api-java/src/main/java/org/apache/flink/table/catalog/CatalogManager.java index ca31e17ebf4e48..fa9db8cb50dbda 100644 --- a/flink-table/flink-table-api-java/src/main/java/org/apache/flink/table/catalog/CatalogManager.java +++ b/flink-table/flink-table-api-java/src/main/java/org/apache/flink/table/catalog/CatalogManager.java @@ -1114,7 +1114,21 @@ private boolean temporaryDatabaseExists(String catalogName, String databaseName) } private boolean permanentDatabaseExists(String catalogName, String databaseName) { - return getCatalog(catalogName).map(c -> c.databaseExists(databaseName)).orElse(false); + return getCatalog(catalogName) + .map( + c -> { + try { + return c.databaseExists(databaseName); + } catch (CatalogException e) { + LOG.warn( + "Unable to check whether database '{}' exists in catalog '{}'.", + databaseName, + catalogName, + e); + return false; + } + }) + .orElse(false); } /** diff --git a/flink-table/flink-table-api-java/src/test/java/org/apache/flink/table/catalog/CatalogManagerTest.java b/flink-table/flink-table-api-java/src/test/java/org/apache/flink/table/catalog/CatalogManagerTest.java index 907d03dfcf8d1a..51774ffb6f6b17 100644 --- a/flink-table/flink-table-api-java/src/test/java/org/apache/flink/table/catalog/CatalogManagerTest.java +++ b/flink-table/flink-table-api-java/src/test/java/org/apache/flink/table/catalog/CatalogManagerTest.java @@ -245,6 +245,43 @@ void testTableModificationListener() throws Exception { assertThat(dropTemporaryEvent.identifier().getObjectName()).isEqualTo("table2"); } + @Test + void testSchemaExistsSwallowsCatalogExceptionFromDatabaseExists() { + CatalogManager catalogManager = + CatalogManagerMocks.preparedCatalogManager() + .defaultCatalog("broken", new UnreachableCatalog("broken")) + .classLoader(CatalogManagerTest.class.getClassLoader()) + .config(new Configuration()) + .catalogStoreHolder( + CatalogStoreHolder.newBuilder() + .classloader(CatalogManagerTest.class.getClassLoader()) + .catalogStore(new GenericInMemoryCatalogStore()) + .config(new Configuration()) + .build()) + .build(); + assertThat(catalogManager.schemaExists("broken", "default")).isFalse(); + } + + /** + * A catalog whose {@link #databaseExists(String)} always fails, simulating a connectivity + * problem with an unreachable destination. + */ + private static class UnreachableCatalog extends GenericInMemoryCatalog { + UnreachableCatalog(String name) { + super(name, "default"); + } + + @Override + public boolean databaseExists(String databaseName) { + throw new CatalogException( + "Failed to connect to database '" + + databaseName + + "' of catalog '" + + getName() + + "'."); + } + } + @Test public void testDropCurrentDatabase() throws Exception { CatalogManager catalogManager = createCatalogManager(null); diff --git a/flink-table/flink-table-planner/src/test/java/org/apache/flink/table/planner/catalog/BrokenCurrentCatalogTest.java b/flink-table/flink-table-planner/src/test/java/org/apache/flink/table/planner/catalog/BrokenCurrentCatalogTest.java new file mode 100644 index 00000000000000..8641f761b2dede --- /dev/null +++ b/flink-table/flink-table-planner/src/test/java/org/apache/flink/table/planner/catalog/BrokenCurrentCatalogTest.java @@ -0,0 +1,71 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.flink.table.planner.catalog; + +import org.apache.flink.table.api.EnvironmentSettings; +import org.apache.flink.table.api.Table; +import org.apache.flink.table.api.TableEnvironment; +import org.apache.flink.table.catalog.GenericInMemoryCatalog; +import org.apache.flink.table.catalog.exceptions.CatalogException; + +import org.junit.jupiter.api.Test; + +import static org.assertj.core.api.Assertions.assertThat; + +/** + * Tests that a fully-qualified query against a healthy catalog can still be resolved even when the + * current catalog is unreachable. + */ +class BrokenCurrentCatalogTest { + + @Test + void testFullyQualifiedQueryWhileCurrentCatalogIsBroken() throws Exception { + TableEnvironment tEnv = + TableEnvironment.create( + EnvironmentSettings.newInstance().inStreamingMode().build()); + + tEnv.registerCatalog("healthy", new GenericInMemoryCatalog("healthy", "default")); + tEnv.useCatalog("healthy"); + tEnv.executeSql( + "CREATE VIEW `healthy`.`default`.`v` AS SELECT * FROM (VALUES (1), (2), (3)) AS t(id)"); + + tEnv.registerCatalog("broken", new UnreachableCatalog("broken")); + tEnv.useCatalog("broken"); + + Table table = tEnv.sqlQuery("SELECT * FROM `healthy`.`default`.`v`"); + + assertThat(table.getResolvedSchema().getColumnNames()).containsExactly("id"); + } + + private static class UnreachableCatalog extends GenericInMemoryCatalog { + UnreachableCatalog(String name) { + super(name, "default"); + } + + @Override + public boolean databaseExists(String databaseName) { + throw new CatalogException( + "Failed to connect to database '" + + databaseName + + "' of catalog '" + + getName() + + "'."); + } + } +} From 11c6b478ac35faf42c2cb11a7342e996044911ce Mon Sep 17 00:00:00 2001 From: Liu Liu Date: Tue, 28 Apr 2026 13:59:33 +0800 Subject: [PATCH 26/32] [FLINK-39532][python] Fix race condition in Python AsyncScalarFunctionOperation This closes #28036. --- .../fn_execution/table/async_function/operations.py | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/flink-python/pyflink/fn_execution/table/async_function/operations.py b/flink-python/pyflink/fn_execution/table/async_function/operations.py index 5d536c4749663b..da325ab9aa3bd2 100644 --- a/flink-python/pyflink/fn_execution/table/async_function/operations.py +++ b/flink-python/pyflink/fn_execution/table/async_function/operations.py @@ -60,6 +60,11 @@ def __init__(self, serialized_fn): operation_utils.extract_user_defined_function( serialized_fn.udfs[0], one_arg_optimization=False) + # Mirror PythonScalarFunctionOperator.createInputCoderInfoDescriptor: + # Java picks FlattenRowCoder unless some UDF takes a row as input. + self._input_is_flatten_row = not any( + udf.takes_row_as_input for udf in serialized_fn.udfs) + # Create the eval function self._eval_func = eval('lambda value: %s' % scalar_function, variable_dict) @@ -140,6 +145,12 @@ def process_element(self, value): """ self._raise_exception_if_exists() + # The Cython FlattenRowCoderImpl returns a reused list whose slots are + # overwritten by the next decode, so we must snapshot the row before + # the async closure can capture it. + if self._input_is_flatten_row: + value = list(value) + entry = self._queue.put(None, 0, 0, value) async def execute_async(rh): From 96a45c1234dd4592852b9a93f86b4a36b40bf23a Mon Sep 17 00:00:00 2001 From: Ramin Gharib Date: Wed, 22 Jul 2026 18:00:43 +0200 Subject: [PATCH 27/32] [FLINK-40217][core] Reject non-finite numbers in `VARIANT` JSON conversion PARSE_JSON accepted JSON numbers outside the double range, such as 1e400, and silently stored them as +/-Infinity. Variant.toJson() then emitted bare Infinity/-Infinity tokens, which are invalid JSON and cannot be parsed back by PARSE_JSON, so the round trip was broken. parseFloatingPoint now rejects a non-finite result from getDoubleValue() with a clear parse error. PARSE_JSON surfaces the failure and TRY_PARSE_JSON returns NULL, so a parsed Variant can never hold a non-finite value. As a defensive safeguard for the builder API, which can still inject non-finite values, toJson() now throws for non-finite DOUBLE and FLOAT values instead of emitting invalid tokens. --- .../flink/types/variant/BinaryVariant.java | 25 ++++++++++++++++--- .../variant/BinaryVariantInternalBuilder.java | 15 +++++++++-- .../BinaryVariantInternalBuilderTest.java | 11 ++++++++ .../types/variant/BinaryVariantTest.java | 18 +++++++++++++ 4 files changed, 63 insertions(+), 6 deletions(-) diff --git a/flink-core/src/main/java/org/apache/flink/types/variant/BinaryVariant.java b/flink-core/src/main/java/org/apache/flink/types/variant/BinaryVariant.java index ce5664d34e3f29..c5dd0bf3efe683 100644 --- a/flink-core/src/main/java/org/apache/flink/types/variant/BinaryVariant.java +++ b/flink-core/src/main/java/org/apache/flink/types/variant/BinaryVariant.java @@ -356,8 +356,16 @@ private static void toJsonImpl( sb.append(escapeJson(BinaryVariantUtil.getString(value, pos))); break; case DOUBLE: - sb.append(BinaryVariantUtil.getDouble(value, pos)); - break; + { + final double d = BinaryVariantUtil.getDouble(value, pos); + if (Double.isInfinite(d) || Double.isNaN(d)) { + throw new VariantTypeException( + String.format( + "Non-finite value %s cannot be serialized to JSON.", d)); + } + sb.append(d); + break; + } case DECIMAL: sb.append(BinaryVariantUtil.getDecimal(value, pos).toPlainString()); break; @@ -382,8 +390,17 @@ private static void toJsonImpl( .atZone(ZoneOffset.UTC))); break; case FLOAT: - sb.append(BinaryVariantUtil.getFloat(value, pos)); - break; + { + final float f = BinaryVariantUtil.getFloat(value, pos); + if (Float.isInfinite(f) || Float.isNaN(f)) { + throw new VariantTypeException( + String.format( + "Non-finite value %s cannot be serialized to JSON.", + (double) f)); + } + sb.append(f); + break; + } case BYTES: appendQuoted( sb, diff --git a/flink-core/src/main/java/org/apache/flink/types/variant/BinaryVariantInternalBuilder.java b/flink-core/src/main/java/org/apache/flink/types/variant/BinaryVariantInternalBuilder.java index 928c267f3658c9..1674d166266f78 100644 --- a/flink-core/src/main/java/org/apache/flink/types/variant/BinaryVariantInternalBuilder.java +++ b/flink-core/src/main/java/org/apache/flink/types/variant/BinaryVariantInternalBuilder.java @@ -91,6 +91,7 @@ public class BinaryVariantInternalBuilder { new VariantTypeException("VARIANT_SIZE_LIMIT"); public static final VariantTypeException VARIANT_DUPLICATE_KEY_EXCEPTION = new VariantTypeException("VARIANT_DUPLICATE_KEY"); + private static final JsonFactory JSON_FACTORY = new JsonFactory(); public BinaryVariantInternalBuilder(boolean allowDuplicateKeys) { this.allowDuplicateKeys = allowDuplicateKeys; @@ -103,7 +104,7 @@ public BinaryVariantInternalBuilder(boolean allowDuplicateKeys) { */ public static BinaryVariant parseJson(String json, boolean allowDuplicateKeys) throws IOException { - try (JsonParser parser = new JsonFactory().createParser(json)) { + try (JsonParser parser = JSON_FACTORY.createParser(json)) { parser.nextToken(); return parseJson(parser, allowDuplicateKeys); } @@ -622,7 +623,17 @@ private int getIntegerSize(int value) { private void parseFloatingPoint(JsonParser parser) throws IOException { if (!tryParseDecimal(parser.getText())) { - appendDouble(parser.getDoubleValue()); + final double d = parser.getDoubleValue(); + // Jackson coerces out-of-range numbers like 1e400 to +/-Infinity. Reject them instead + // of storing a non-finite double that toJson() could not render as valid JSON. + if (Double.isInfinite(d) || Double.isNaN(d)) { + throw new JsonParseException( + parser, + String.format( + "Numeric value '%s' is out of the range of double precision and cannot be stored as a Variant.", + parser.getText())); + } + appendDouble(d); } } diff --git a/flink-core/src/test/java/org/apache/flink/types/variant/BinaryVariantInternalBuilderTest.java b/flink-core/src/test/java/org/apache/flink/types/variant/BinaryVariantInternalBuilderTest.java index 924e538f40ad60..cec12149ceb5f8 100644 --- a/flink-core/src/test/java/org/apache/flink/types/variant/BinaryVariantInternalBuilderTest.java +++ b/flink-core/src/test/java/org/apache/flink/types/variant/BinaryVariantInternalBuilderTest.java @@ -19,6 +19,8 @@ package org.apache.flink.types.variant; import org.junit.jupiter.api.Test; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.ValueSource; import java.io.IOException; import java.math.BigDecimal; @@ -120,6 +122,15 @@ void testParseJsonObject() throws IOException { assertThat(variant.getField("k2").getDecimal()).isEqualTo(BigDecimal.valueOf(1.5)); } + @ParameterizedTest + @ValueSource(strings = {"NaN", "Infinity", "-Infinity", "1e400", "-1e400"}) + void testParseJsonRejectsNonFiniteNumbers(final String nonFiniteNumber) { + // NaN and the infinities are not valid JSON; 1e400 is valid JSON but overflows the double + // range. Both must be rejected so PARSE_JSON errors and TRY_PARSE_JSON returns NULL. + assertThatThrownBy(() -> BinaryVariantInternalBuilder.parseJson(nonFiniteNumber, false)) + .isInstanceOf(IOException.class); + } + @Test void testAppendFloat() { BinaryVariantInternalBuilder builder = new BinaryVariantInternalBuilder(false); diff --git a/flink-core/src/test/java/org/apache/flink/types/variant/BinaryVariantTest.java b/flink-core/src/test/java/org/apache/flink/types/variant/BinaryVariantTest.java index 83896ec53e1419..77235e968eebce 100644 --- a/flink-core/src/test/java/org/apache/flink/types/variant/BinaryVariantTest.java +++ b/flink-core/src/test/java/org/apache/flink/types/variant/BinaryVariantTest.java @@ -20,6 +20,8 @@ import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.ValueSource; import java.math.BigDecimal; import java.time.Instant; @@ -236,6 +238,22 @@ void testToJsonNested() { .isEqualTo("{" + "\"list\":[\"hello\",1]," + "\"object\":{\"ff\":10.0,\"ss\":1}}"); } + @ParameterizedTest + @ValueSource(doubles = {Double.POSITIVE_INFINITY, Double.NEGATIVE_INFINITY, Double.NaN}) + void testToJsonRejectsNonFiniteDouble(final double nonFinite) { + assertThatThrownBy(() -> builder.of(nonFinite).toJson()) + .isInstanceOf(VariantTypeException.class) + .hasMessageContaining("cannot be serialized to JSON"); + } + + @ParameterizedTest + @ValueSource(floats = {Float.POSITIVE_INFINITY, Float.NEGATIVE_INFINITY, Float.NaN}) + void testToJsonRejectsNonFiniteFloat(final float nonFinite) { + assertThatThrownBy(() -> builder.of(nonFinite).toJson()) + .isInstanceOf(VariantTypeException.class) + .hasMessageContaining("cannot be serialized to JSON"); + } + @Test void testVariantException() { assertThatThrownBy(() -> new BinaryVariant(new byte[0], new byte[0])) From c43754cdc4f7f70b64f79bc64b42b03b0359fc70 Mon Sep 17 00:00:00 2001 From: Ramin Gharib Date: Thu, 23 Jul 2026 12:59:58 +0200 Subject: [PATCH 28/32] [FLINK-40217][table] Add `PARSE_JSON` and `TRY_PARSE_JSON` IT cases Cover the end-to-end SQL wiring for PARSE_JSON and TRY_PARSE_JSON: a JSON_STRING round trip, NULL handling, and the out-of-range number behavior. An overflowing number such as 1e400 makes PARSE_JSON fail with a TableRuntimeException, while TRY_PARSE_JSON returns NULL. The parsing semantics themselves stay covered by BinaryVariantInternalBuilderTest. This closes #28808. --- .../functions/JsonFunctionsITCase.java | 40 +++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/flink-table/flink-table-planner/src/test/java/org/apache/flink/table/planner/functions/JsonFunctionsITCase.java b/flink-table/flink-table-planner/src/test/java/org/apache/flink/table/planner/functions/JsonFunctionsITCase.java index 40defdf485df63..fb18458fec6006 100644 --- a/flink-table/flink-table-planner/src/test/java/org/apache/flink/table/planner/functions/JsonFunctionsITCase.java +++ b/flink-table/flink-table-planner/src/test/java/org/apache/flink/table/planner/functions/JsonFunctionsITCase.java @@ -87,6 +87,7 @@ Stream getTestSetSpecs() { testCases.addAll(isJsonSpec()); testCases.addAll(jsonQuerySpec()); testCases.addAll(jsonStringSpec()); + testCases.addAll(parseJsonSpec()); testCases.addAll(jsonObjectSpec()); testCases.addAll(jsonSpec()); testCases.addAll(jsonArraySpec()); @@ -760,6 +761,45 @@ private static List jsonStringSpec() { STRING().notNull())); } + private static List parseJsonSpec() { + // The bulk of parsing behavior is covered by BinaryVariantInternalBuilderTest. + return List.of( + TestSetSpec.forFunction(BuiltInFunctionDefinitions.PARSE_JSON) + .onFieldsWithData("{\"a\":1,\"b\":[2,3]}", "1e400") + .andDataTypes(STRING().notNull(), STRING().notNull()) + .testResult( + jsonString(call("PARSE_JSON", $("f0"))), + "JSON_STRING(PARSE_JSON(f0))", + "{\"a\":1,\"b\":[2,3]}", + STRING().notNull()) + .testResult( + jsonString(call("PARSE_JSON", nullOf(STRING()))), + "JSON_STRING(PARSE_JSON(CAST(NULL AS STRING)))", + null, + STRING().nullable()) + .testSqlRuntimeError( + "PARSE_JSON(f1)", + TableRuntimeException.class, + "Failed to parse json string") + .testTableApiRuntimeError( + call("PARSE_JSON", $("f1")), + TableRuntimeException.class, + "Failed to parse json string"), + TestSetSpec.forFunction(BuiltInFunctionDefinitions.TRY_PARSE_JSON) + .onFieldsWithData("{\"a\":1}", "1e400") + .andDataTypes(STRING().notNull(), STRING().notNull()) + .testResult( + jsonString(call("TRY_PARSE_JSON", $("f0"))), + "JSON_STRING(TRY_PARSE_JSON(f0))", + "{\"a\":1}", + STRING()) + .testResult( + jsonString(call("TRY_PARSE_JSON", $("f1"))), + "JSON_STRING(TRY_PARSE_JSON(f1))", + null, + STRING())); + } + private static List jsonSpec() { return List.of( TestSetSpec.forFunction(BuiltInFunctionDefinitions.JSON_OBJECT) From 4e995125ff9dcafc8c91d6119ea3dd9436522fa1 Mon Sep 17 00:00:00 2001 From: Sergey Nuyanzin Date: Fri, 24 Jul 2026 07:36:26 +0200 Subject: [PATCH 29/32] [FLINK-40228][ci] Bump frontend-maven-plugin to 2.0.1 --- flink-runtime-web/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/flink-runtime-web/pom.xml b/flink-runtime-web/pom.xml index 94709b108797d5..966a7462e2e100 100644 --- a/flink-runtime-web/pom.xml +++ b/flink-runtime-web/pom.xml @@ -265,7 +265,7 @@ under the License. com.github.eirslett frontend-maven-plugin - 1.15.1 + 2.0.1 install node and npm From f9485ff173b940c5ddf606d8ca1a92a18bb23ff3 Mon Sep 17 00:00:00 2001 From: Purushottam Sinha Date: Fri, 24 Jul 2026 12:03:44 +0530 Subject: [PATCH 30/32] [FLINK-39770][tests][JUnit5 migration] Module: flink-state-processing-api --- .../state/api/SavepointDeepCopyTest.java | 57 +++++------ .../state/api/SavepointReaderITTestBase.java | 82 ++++++++-------- .../api/SavepointReaderKeyedStateITCase.java | 27 +++--- .../api/SavepointWindowReaderITCase.java | 95 ++++++++----------- .../state/api/SavepointWriterITCase.java | 31 +++--- .../api/SavepointWriterWindowITCase.java | 59 ++++++------ .../api/StateBootstrapTransformationTest.java | 57 ++++++----- .../input/BroadcastStateInputFormatTest.java | 14 +-- .../api/input/BufferingCollectorTest.java | 20 ++-- .../api/input/KeyedStateInputFormatTest.java | 41 ++++---- .../api/input/ListStateInputFormatTest.java | 20 ++-- .../api/input/MultiStateKeyIteratorTest.java | 27 +++--- .../StreamOperatorContextBuilderTest.java | 13 ++- .../api/input/UnionStateInputFormatTest.java | 20 ++-- .../state/api/input/WindowReaderTest.java | 33 ++++--- .../KeyedStateBootstrapOperatorTest.java | 32 +++---- .../api/output/SavepointOutputFormatTest.java | 48 +++++----- .../state/api/output/SnapshotUtilsTest.java | 25 ++--- .../api/runtime/OperatorIDGeneratorTest.java | 11 ++- .../state/api/utils/SavepointTestBase.java | 31 +++--- 20 files changed, 352 insertions(+), 391 deletions(-) diff --git a/flink-libraries/flink-state-processing-api/src/test/java/org/apache/flink/state/api/SavepointDeepCopyTest.java b/flink-libraries/flink-state-processing-api/src/test/java/org/apache/flink/state/api/SavepointDeepCopyTest.java index 144aeb9d1c6dab..ab9119ad56a4a0 100644 --- a/flink-libraries/flink-state-processing-api/src/test/java/org/apache/flink/state/api/SavepointDeepCopyTest.java +++ b/flink-libraries/flink-state-processing-api/src/test/java/org/apache/flink/state/api/SavepointDeepCopyTest.java @@ -32,15 +32,16 @@ import org.apache.flink.state.rocksdb.EmbeddedRocksDBStateBackend; import org.apache.flink.streaming.api.datastream.DataStream; import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment; -import org.apache.flink.test.util.AbstractTestBaseJUnit4; +import org.apache.flink.test.util.AbstractTestBase; +import org.apache.flink.testutils.junit.extensions.parameterized.Parameter; +import org.apache.flink.testutils.junit.extensions.parameterized.ParameterizedTestExtension; +import org.apache.flink.testutils.junit.extensions.parameterized.Parameters; import org.apache.flink.util.AbstractID; import org.apache.flink.util.Collector; import org.apache.commons.lang3.RandomStringUtils; -import org.junit.Assert; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.junit.runners.Parameterized; +import org.junit.jupiter.api.TestTemplate; +import org.junit.jupiter.api.extension.ExtendWith; import java.io.File; import java.io.IOException; @@ -54,26 +55,20 @@ import java.util.stream.Stream; import static org.apache.flink.configuration.CheckpointingOptions.FS_SMALL_FILE_THRESHOLD; -import static org.hamcrest.Matchers.everyItem; -import static org.hamcrest.Matchers.isIn; -import static org.junit.Assert.assertThat; +import static org.assertj.core.api.Assertions.assertThat; /** Test the savepoint deep copy. */ -@RunWith(value = Parameterized.class) -public class SavepointDeepCopyTest extends AbstractTestBaseJUnit4 { +@ExtendWith(ParameterizedTestExtension.class) +class SavepointDeepCopyTest extends AbstractTestBase { private static final MemorySize FILE_STATE_SIZE_THRESHOLD = new MemorySize(1); private static final String TEXT = "The quick brown fox jumps over the lazy dog"; private static final String RANDOM_VALUE = RandomStringUtils.randomAlphanumeric(120); - private final StateBackend backend; + @Parameter public StateBackend backend; - public SavepointDeepCopyTest(StateBackend backend) throws Exception { - this.backend = backend; - } - - @Parameterized.Parameters(name = "State Backend: {0}") + @Parameters(name = "State Backend: {0}") public static Collection data() { return Arrays.asList(new HashMapStateBackend(), new EmbeddedRocksDBStateBackend()); } @@ -132,8 +127,8 @@ public void readKey(String key, Context ctx, Collector> o * * @throws Exception throw exceptions when anything goes wrong */ - @Test - public void testSavepointDeepCopy() throws Exception { + @TestTemplate + void testSavepointDeepCopy() throws Exception { StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment(); env.setParallelism(1); @@ -156,9 +151,9 @@ public void testSavepointDeepCopy() throws Exception { Set stateFiles1 = getFileNamesInDirectory(Paths.get(savepointPath1)); - Assert.assertTrue( - "Failed to bootstrap savepoint1 with additional state files", - stateFiles1.size() > 1); + assertThat(stateFiles1) + .as("Failed to bootstrap savepoint1 with additional state files") + .hasSizeGreaterThan(1); // create savepoint2 from savepoint1 created above File savepointUrl2 = createAndRegisterTempFile(new AbstractID().toHexString()); @@ -175,14 +170,13 @@ public void testSavepointDeepCopy() throws Exception { Set stateFiles2 = getFileNamesInDirectory(Paths.get(savepointPath1)); - Assert.assertTrue( - "Failed to create savepoint2 from savepoint1 with additional state files", - stateFiles2.size() > 1); + assertThat(stateFiles2) + .as("Failed to create savepoint2 from savepoint1 with additional state files") + .hasSizeGreaterThan(1); - assertThat( - "At least one state file in savepoint1 are not in savepoint2", - stateFiles1, - everyItem(isIn(stateFiles2))); + assertThat(stateFiles1) + .as("At least one state file in savepoint1 are not in savepoint2") + .isSubsetOf(stateFiles2); // Try to fromExistingSavepoint savepoint2 and read the state of "Operator1" (which has not // been @@ -197,10 +191,9 @@ public void testSavepointDeepCopy() throws Exception { .size(); long expectedKeyNum = Arrays.stream(TEXT.split(" ")).distinct().count(); - Assert.assertEquals( - "Unexpected number of keys in the state of Operator1", - expectedKeyNum, - actuallyKeyNum); + assertThat(actuallyKeyNum) + .as("Unexpected number of keys in the state of Operator1") + .isEqualTo(expectedKeyNum); } private static Set getFileNamesInDirectory(Path path) throws IOException { diff --git a/flink-libraries/flink-state-processing-api/src/test/java/org/apache/flink/state/api/SavepointReaderITTestBase.java b/flink-libraries/flink-state-processing-api/src/test/java/org/apache/flink/state/api/SavepointReaderITTestBase.java index 809dc201be0815..7e694a864356d4 100644 --- a/flink-libraries/flink-state-processing-api/src/test/java/org/apache/flink/state/api/SavepointReaderITTestBase.java +++ b/flink-libraries/flink-state-processing-api/src/test/java/org/apache/flink/state/api/SavepointReaderITTestBase.java @@ -30,7 +30,7 @@ import org.apache.flink.api.connector.source.SplitEnumerator; import org.apache.flink.api.connector.source.SplitEnumeratorContext; import org.apache.flink.api.java.tuple.Tuple2; -import org.apache.flink.client.program.ClusterClient; +import org.apache.flink.client.program.rest.RestClusterClient; import org.apache.flink.core.execution.SavepointFormatType; import org.apache.flink.core.io.InputStatus; import org.apache.flink.runtime.jobgraph.JobGraph; @@ -43,7 +43,8 @@ import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment; import org.apache.flink.streaming.api.functions.co.BroadcastProcessFunction; import org.apache.flink.streaming.api.functions.sink.v2.DiscardingSink; -import org.apache.flink.test.util.AbstractTestBaseJUnit4; +import org.apache.flink.test.junit5.InjectClusterClient; +import org.apache.flink.test.util.AbstractTestBase; import org.apache.flink.test.util.source.AbstractTestSource; import org.apache.flink.test.util.source.SingleSplitEnumerator; import org.apache.flink.test.util.source.TestSourceReader; @@ -51,23 +52,24 @@ import org.apache.flink.util.AbstractID; import org.apache.flink.util.Collector; -import org.junit.Assert; -import org.junit.Test; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; import java.io.IOException; import java.time.Duration; import java.util.ArrayList; import java.util.Arrays; -import java.util.Comparator; import java.util.List; import java.util.concurrent.CompletableFuture; import java.util.concurrent.TimeUnit; import java.util.stream.Collectors; import static org.apache.flink.state.api.utils.SavepointTestBase.waitForAllRunningOrSomeTerminal; +import static org.assertj.core.api.Assertions.assertThat; +import static org.assertj.core.api.Assertions.fail; /** IT case for reading state. */ -public abstract class SavepointReaderITTestBase extends AbstractTestBaseJUnit4 { +abstract class SavepointReaderITTestBase extends AbstractTestBase { static final String UID = "stateful-operator"; static final String LIST_NAME = "list"; @@ -82,6 +84,13 @@ public abstract class SavepointReaderITTestBase extends AbstractTestBaseJUnit4 { private final MapStateDescriptor broadcast; + private RestClusterClient clusterClient; + + @BeforeEach + void setClusterClient(@InjectClusterClient RestClusterClient clusterClient) { + this.clusterClient = clusterClient; + } + SavepointReaderITTestBase( ListStateDescriptor list, ListStateDescriptor union, @@ -93,7 +102,7 @@ public abstract class SavepointReaderITTestBase extends AbstractTestBaseJUnit4 { } @Test - public void testOperatorStateInputFormat() throws Exception { + void testOperatorStateInputFormat() throws Exception { StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment(); env.setParallelism(4); @@ -131,23 +140,19 @@ abstract DataStream> readBroadcastState(SavepointReader private void verifyListState(String path, StreamExecutionEnvironment env) throws Exception { SavepointReader savepoint = SavepointReader.read(env, path, new HashMapStateBackend()); List listResult = JobResultRetriever.collect(readListState(savepoint)); - listResult.sort(Comparator.naturalOrder()); - Assert.assertEquals( - "Unexpected elements read from list state", - SavepointSource.getElements(), - listResult); + assertThat(listResult) + .as("Unexpected elements read from list state") + .containsExactlyInAnyOrderElementsOf(SavepointSource.getElements()); } private void verifyUnionState(String path, StreamExecutionEnvironment env) throws Exception { SavepointReader savepoint = SavepointReader.read(env, path, new HashMapStateBackend()); List unionResult = JobResultRetriever.collect(readUnionState(savepoint)); - unionResult.sort(Comparator.naturalOrder()); - Assert.assertEquals( - "Unexpected elements read from union state", - SavepointSource.getElements(), - unionResult); + assertThat(unionResult) + .as("Unexpected elements read from union state") + .containsExactlyInAnyOrderElementsOf(SavepointSource.getElements()); } private void verifyBroadcastState(String path, StreamExecutionEnvironment env) @@ -156,36 +161,25 @@ private void verifyBroadcastState(String path, StreamExecutionEnvironment env) List> broadcastResult = JobResultRetriever.collect(readBroadcastState(savepoint)); - List broadcastStateKeys = - broadcastResult.stream() - .map(entry -> entry.f0) - .sorted(Comparator.naturalOrder()) - .collect(Collectors.toList()); - - List broadcastStateValues = - broadcastResult.stream() - .map(entry -> entry.f1) - .sorted(Comparator.naturalOrder()) + List expectedValues = + SavepointSource.getElements().stream() + .map(Object::toString) .collect(Collectors.toList()); - Assert.assertEquals( - "Unexpected element in broadcast state keys", - SavepointSource.getElements(), - broadcastStateKeys); + assertThat(broadcastResult) + .extracting(entry -> entry.f0) + .as("Unexpected element in broadcast state keys") + .containsExactlyInAnyOrderElementsOf(SavepointSource.getElements()); - Assert.assertEquals( - "Unexpected element in broadcast state values", - SavepointSource.getElements().stream() - .map(Object::toString) - .sorted() - .collect(Collectors.toList()), - broadcastStateValues); + assertThat(broadcastResult) + .extracting(entry -> entry.f1) + .as("Unexpected element in broadcast state values") + .containsExactlyInAnyOrderElementsOf(expectedValues); } private String takeSavepoint(JobGraph jobGraph) throws Exception { SavepointSource.initializeForTest(); - ClusterClient client = MINI_CLUSTER_RESOURCE.getClusterClient(); JobID jobId = jobGraph.getJobID(); Deadline deadline = Deadline.fromNow(Duration.ofMinutes(5)); @@ -193,9 +187,9 @@ private String takeSavepoint(JobGraph jobGraph) throws Exception { String dirPath = getTempDirPath(new AbstractID().toHexString()); try { - JobID jobID = client.submitJob(jobGraph).get(); + JobID jobID = clusterClient.submitJob(jobGraph).get(); - waitForAllRunningOrSomeTerminal(jobID, MINI_CLUSTER_RESOURCE); + waitForAllRunningOrSomeTerminal(jobID, clusterClient); boolean finished = false; while (deadline.hasTimeLeft()) { if (SavepointSource.isFinished()) { @@ -212,14 +206,14 @@ private String takeSavepoint(JobGraph jobGraph) throws Exception { } if (!finished) { - Assert.fail("Failed to initialize state within deadline"); + fail("Failed to initialize state within deadline"); } CompletableFuture path = - client.triggerSavepoint(jobID, dirPath, SavepointFormatType.CANONICAL); + clusterClient.triggerSavepoint(jobID, dirPath, SavepointFormatType.CANONICAL); return path.get(deadline.timeLeft().toMillis(), TimeUnit.MILLISECONDS); } finally { - client.cancel(jobId).get(); + clusterClient.cancel(jobId).get(); } } diff --git a/flink-libraries/flink-state-processing-api/src/test/java/org/apache/flink/state/api/SavepointReaderKeyedStateITCase.java b/flink-libraries/flink-state-processing-api/src/test/java/org/apache/flink/state/api/SavepointReaderKeyedStateITCase.java index 41dbc4e4b1148c..00746a9285a94f 100644 --- a/flink-libraries/flink-state-processing-api/src/test/java/org/apache/flink/state/api/SavepointReaderKeyedStateITCase.java +++ b/flink-libraries/flink-state-processing-api/src/test/java/org/apache/flink/state/api/SavepointReaderKeyedStateITCase.java @@ -38,8 +38,7 @@ import org.apache.flink.streaming.util.testing.CollectingSink; import org.apache.flink.util.Collector; -import org.junit.Assert; -import org.junit.Test; +import org.junit.jupiter.api.Test; import java.util.Collections; import java.util.HashSet; @@ -52,8 +51,7 @@ import static org.assertj.core.api.Assertions.assertThat; /** IT case for reading state. */ -public abstract class SavepointReaderKeyedStateITCase - extends SavepointTestBase { +abstract class SavepointReaderKeyedStateITCase extends SavepointTestBase { private static final String uid = "stateful-operator"; private static ValueStateDescriptor valueState = @@ -67,7 +65,7 @@ public abstract class SavepointReaderKeyedStateITCase protected abstract Tuple2 getStateBackendTuple(); @Test - public void testUserKeyedStateReader() throws Exception { + void testUserKeyedStateReader() throws Exception { Tuple2 backendTuple = getStateBackendTuple(); StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment(backendTuple.f0); @@ -85,12 +83,13 @@ public void testUserKeyedStateReader() throws Exception { Set expected = new HashSet<>(elements); - Assert.assertEquals( - "Unexpected results from keyed state", expected, new HashSet<>(results)); + assertThat(new HashSet<>(results)) + .as("Unexpected results from keyed state") + .isEqualTo(expected); } @Test - public void testReadKeyedStateWithExactFilter() throws Exception { + void testReadKeyedStateWithExactFilter() throws Exception { Tuple2 backendTuple = getStateBackendTuple(); StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment(backendTuple.f0); @@ -109,7 +108,7 @@ public void testReadKeyedStateWithExactFilter() throws Exception { } @Test - public void testReadKeyedStateWithMultiKeyExactFilter() throws Exception { + void testReadKeyedStateWithMultiKeyExactFilter() throws Exception { Tuple2 backendTuple = getStateBackendTuple(); StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment(backendTuple.f0); @@ -128,7 +127,7 @@ public void testReadKeyedStateWithMultiKeyExactFilter() throws Exception { } @Test - public void testReadKeyedStateWithInclusiveRangeFilter() throws Exception { + void testReadKeyedStateWithInclusiveRangeFilter() throws Exception { Tuple2 backendTuple = getStateBackendTuple(); StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment(backendTuple.f0); @@ -148,7 +147,7 @@ public void testReadKeyedStateWithInclusiveRangeFilter() throws Exception { } @Test - public void testReadKeyedStateWithInclusiveLowerExclusiveUpperRangeFilter() throws Exception { + void testReadKeyedStateWithInclusiveLowerExclusiveUpperRangeFilter() throws Exception { Tuple2 backendTuple = getStateBackendTuple(); StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment(backendTuple.f0); @@ -168,7 +167,7 @@ public void testReadKeyedStateWithInclusiveLowerExclusiveUpperRangeFilter() thro } @Test - public void testReadKeyedStateWithExclusiveLowerInclusiveUpperRangeFilter() throws Exception { + void testReadKeyedStateWithExclusiveLowerInclusiveUpperRangeFilter() throws Exception { Tuple2 backendTuple = getStateBackendTuple(); StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment(backendTuple.f0); @@ -188,7 +187,7 @@ public void testReadKeyedStateWithExclusiveLowerInclusiveUpperRangeFilter() thro } @Test - public void testReadKeyedStateWithExclusiveRangeFilter() throws Exception { + void testReadKeyedStateWithExclusiveRangeFilter() throws Exception { Tuple2 backendTuple = getStateBackendTuple(); StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment(backendTuple.f0); @@ -208,7 +207,7 @@ public void testReadKeyedStateWithExclusiveRangeFilter() throws Exception { } @Test - public void testReadKeyedStateWithEmptyFilter() throws Exception { + void testReadKeyedStateWithEmptyFilter() throws Exception { Tuple2 backendTuple = getStateBackendTuple(); StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment(backendTuple.f0); diff --git a/flink-libraries/flink-state-processing-api/src/test/java/org/apache/flink/state/api/SavepointWindowReaderITCase.java b/flink-libraries/flink-state-processing-api/src/test/java/org/apache/flink/state/api/SavepointWindowReaderITCase.java index 91834123ac6d40..3f535d820a90a6 100644 --- a/flink-libraries/flink-state-processing-api/src/test/java/org/apache/flink/state/api/SavepointWindowReaderITCase.java +++ b/flink-libraries/flink-state-processing-api/src/test/java/org/apache/flink/state/api/SavepointWindowReaderITCase.java @@ -47,16 +47,15 @@ import org.apache.flink.streaming.runtime.operators.windowing.TimestampedValue; import org.apache.flink.util.Collector; -import org.hamcrest.Matchers; -import org.junit.Assert; -import org.junit.Test; +import org.junit.jupiter.api.Test; import java.time.Duration; import java.util.List; +import static org.assertj.core.api.Assertions.assertThat; + /** IT Case for reading window operator state. */ -public abstract class SavepointWindowReaderITCase - extends SavepointTestBase { +abstract class SavepointWindowReaderITCase extends SavepointTestBase { private static final String uid = "stateful-operator"; private static final Integer[] numbers = {1, 2, 3}; @@ -64,7 +63,7 @@ public abstract class SavepointWindowReaderITCase protected abstract Tuple2 getStateBackendTuple(); @Test - public void testReduceWindowStateReader() throws Exception { + void testReduceWindowStateReader() throws Exception { Tuple2 backendTuple = getStateBackendTuple(); StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment(backendTuple.f0); @@ -91,14 +90,13 @@ public void testReduceWindowStateReader() throws Exception { .window(TumblingEventTimeWindows.of(Duration.ofMillis(10))) .reduce(uid, new ReduceSum(), Types.INT, Types.INT)); - Assert.assertThat( - "Unexpected results from keyed state", - results, - Matchers.containsInAnyOrder(numbers)); + assertThat(results) + .as("Unexpected results from keyed state") + .containsExactlyInAnyOrder(numbers); } @Test - public void testReduceEvictorWindowStateReader() throws Exception { + void testReduceEvictorWindowStateReader() throws Exception { Tuple2 backendTuple = getStateBackendTuple(); StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment(backendTuple.f0); @@ -127,14 +125,13 @@ public void testReduceEvictorWindowStateReader() throws Exception { .evictor() .reduce(uid, new ReduceSum(), Types.INT, Types.INT)); - Assert.assertThat( - "Unexpected results from keyed state", - results, - Matchers.containsInAnyOrder(numbers)); + assertThat(results) + .as("Unexpected results from keyed state") + .containsExactlyInAnyOrder(numbers); } @Test - public void testAggregateWindowStateReader() throws Exception { + void testAggregateWindowStateReader() throws Exception { Tuple2 backendTuple = getStateBackendTuple(); StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment(backendTuple.f0); @@ -162,14 +159,13 @@ public void testAggregateWindowStateReader() throws Exception { .aggregate( uid, new AggregateSum(), Types.INT, Types.INT, Types.INT)); - Assert.assertThat( - "Unexpected results from keyed state", - results, - Matchers.containsInAnyOrder(numbers)); + assertThat(results) + .as("Unexpected results from keyed state") + .containsExactlyInAnyOrder(numbers); } @Test - public void testAggregateEvictorWindowStateReader() throws Exception { + void testAggregateEvictorWindowStateReader() throws Exception { Tuple2 backendTuple = getStateBackendTuple(); StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment(backendTuple.f0); @@ -199,14 +195,13 @@ public void testAggregateEvictorWindowStateReader() throws Exception { .aggregate( uid, new AggregateSum(), Types.INT, Types.INT, Types.INT)); - Assert.assertThat( - "Unexpected results from keyed state", - results, - Matchers.containsInAnyOrder(numbers)); + assertThat(results) + .as("Unexpected results from keyed state") + .containsExactlyInAnyOrder(numbers); } @Test - public void testProcessWindowStateReader() throws Exception { + void testProcessWindowStateReader() throws Exception { Tuple2 backendTuple = getStateBackendTuple(); StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment(backendTuple.f0); @@ -238,14 +233,13 @@ public void testProcessWindowStateReader() throws Exception { Types.INT, Types.INT)); - Assert.assertThat( - "Unexpected results from keyed state", - results, - Matchers.containsInAnyOrder(numbers)); + assertThat(results) + .as("Unexpected results from keyed state") + .containsExactlyInAnyOrder(numbers); } @Test - public void testProcessEvictorWindowStateReader() throws Exception { + void testProcessEvictorWindowStateReader() throws Exception { Tuple2 backendTuple = getStateBackendTuple(); StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment(backendTuple.f0); @@ -279,14 +273,13 @@ public void testProcessEvictorWindowStateReader() throws Exception { Types.INT, Types.INT)); - Assert.assertThat( - "Unexpected results from keyed state", - results, - Matchers.containsInAnyOrder(numbers)); + assertThat(results) + .as("Unexpected results from keyed state") + .containsExactlyInAnyOrder(numbers); } @Test - public void testApplyWindowStateReader() throws Exception { + void testApplyWindowStateReader() throws Exception { Tuple2 backendTuple = getStateBackendTuple(); StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment(backendTuple.f0); @@ -318,14 +311,13 @@ public void testApplyWindowStateReader() throws Exception { Types.INT, Types.INT)); - Assert.assertThat( - "Unexpected results from keyed state", - results, - Matchers.containsInAnyOrder(numbers)); + assertThat(results) + .as("Unexpected results from keyed state") + .containsExactlyInAnyOrder(numbers); } @Test - public void testApplyEvictorWindowStateReader() throws Exception { + void testApplyEvictorWindowStateReader() throws Exception { Tuple2 backendTuple = getStateBackendTuple(); StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment(backendTuple.f0); @@ -359,14 +351,13 @@ public void testApplyEvictorWindowStateReader() throws Exception { Types.INT, Types.INT)); - Assert.assertThat( - "Unexpected results from keyed state", - results, - Matchers.containsInAnyOrder(numbers)); + assertThat(results) + .as("Unexpected results from keyed state") + .containsExactlyInAnyOrder(numbers); } @Test - public void testWindowTriggerStateReader() throws Exception { + void testWindowTriggerStateReader() throws Exception { Tuple2 backendTuple = getStateBackendTuple(); StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment(backendTuple.f0); @@ -397,8 +388,7 @@ public void testWindowTriggerStateReader() throws Exception { Types.INT, Types.LONG)); - Assert.assertThat( - "Unexpected results from trigger state", results, Matchers.contains(1L, 1L, 1L)); + assertThat(results).as("Unexpected results from trigger state").containsExactly(1L, 1L, 1L); } private static class NoOpProcessWindowFunction @@ -433,11 +423,10 @@ public void readWindow( Iterable elements, Collector out) throws Exception { - Assert.assertEquals("Unexpected window", new TimeWindow(0, 10), context.window()); - Assert.assertThat( - "Unexpected registered timers", - context.registeredEventTimeTimers(), - Matchers.contains(9L)); + assertThat(context.window()).as("Unexpected window").isEqualTo(new TimeWindow(0, 10)); + assertThat(context.registeredEventTimeTimers()) + .as("Unexpected registered timers") + .containsExactly(9L); out.collect(elements.iterator().next()); } diff --git a/flink-libraries/flink-state-processing-api/src/test/java/org/apache/flink/state/api/SavepointWriterITCase.java b/flink-libraries/flink-state-processing-api/src/test/java/org/apache/flink/state/api/SavepointWriterITCase.java index d7a5586b6024f8..6d9a9052ac2bec 100644 --- a/flink-libraries/flink-state-processing-api/src/test/java/org/apache/flink/state/api/SavepointWriterITCase.java +++ b/flink-libraries/flink-state-processing-api/src/test/java/org/apache/flink/state/api/SavepointWriterITCase.java @@ -47,13 +47,12 @@ import org.apache.flink.streaming.api.functions.co.BroadcastProcessFunction; import org.apache.flink.streaming.api.functions.sink.v2.DiscardingSink; import org.apache.flink.streaming.api.graph.StreamGraph; -import org.apache.flink.test.util.AbstractTestBaseJUnit4; +import org.apache.flink.test.util.AbstractTestBase; import org.apache.flink.util.AbstractID; import org.apache.flink.util.CloseableIterator; import org.apache.flink.util.Collector; -import org.junit.Assert; -import org.junit.Test; +import org.junit.jupiter.api.Test; import java.util.ArrayList; import java.util.Arrays; @@ -64,9 +63,10 @@ import java.util.Set; import static org.assertj.core.api.Assertions.assertThat; +import static org.assertj.core.api.Assertions.within; /** IT test for writing savepoints. */ -public class SavepointWriterITCase extends AbstractTestBaseJUnit4 { +class SavepointWriterITCase extends AbstractTestBase { private static final long CHECKPOINT_ID = 42; @@ -86,25 +86,25 @@ public class SavepointWriterITCase extends AbstractTestBaseJUnit4 { Arrays.asList(new CurrencyRate("USD", 1.0), new CurrencyRate("EUR", 1.3)); @Test - public void testDefaultStateBackend() throws Exception { + void testDefaultStateBackend() throws Exception { testStateBootstrapAndModification(new Configuration(), null); } @Test - public void testHashMapStateBackend() throws Exception { + void testHashMapStateBackend() throws Exception { testStateBootstrapAndModification( new Configuration().set(StateBackendOptions.STATE_BACKEND, "hashmap"), new HashMapStateBackend()); } @Test - public void testEmbeddedRocksDBStateBackend() throws Exception { + void testEmbeddedRocksDBStateBackend() throws Exception { testStateBootstrapAndModification( new Configuration().set(StateBackendOptions.STATE_BACKEND, "rocksdb"), new EmbeddedRocksDBStateBackend()); } - public void testStateBootstrapAndModification(Configuration config, StateBackend backend) + void testStateBootstrapAndModification(Configuration config, StateBackend backend) throws Exception { final String savepointPath = getTempDirPath(new AbstractID().toHexString()); @@ -387,14 +387,11 @@ public void initializeState(FunctionInitializationContext context) throws Except expected.add(3); for (Integer number : state.get()) { - Assert.assertTrue("Duplicate state", expected.contains(number)); + assertThat(expected).as("Duplicate state").contains(number); expected.remove(number); } - Assert.assertTrue( - "Failed to bootstrap all state elements: " - + Arrays.toString(expected.toArray()), - expected.isEmpty()); + assertThat(expected).as("Failed to bootstrap all state elements").isEmpty(); } } @@ -421,11 +418,9 @@ public static class CurrencyValidationFunction @Override public void processElement(CurrencyRate value, ReadOnlyContext ctx, Collector out) throws Exception { - Assert.assertEquals( - "Incorrect currency rate", - value.rate, - ctx.getBroadcastState(descriptor).get(value.currency), - 0.0001); + assertThat(ctx.getBroadcastState(descriptor).get(value.currency)) + .as("Incorrect currency rate") + .isCloseTo(value.rate, within(0.0001)); } @Override diff --git a/flink-libraries/flink-state-processing-api/src/test/java/org/apache/flink/state/api/SavepointWriterWindowITCase.java b/flink-libraries/flink-state-processing-api/src/test/java/org/apache/flink/state/api/SavepointWriterWindowITCase.java index 514f9ac7d3e3d6..8fb998680747bf 100644 --- a/flink-libraries/flink-state-processing-api/src/test/java/org/apache/flink/state/api/SavepointWriterWindowITCase.java +++ b/flink-libraries/flink-state-processing-api/src/test/java/org/apache/flink/state/api/SavepointWriterWindowITCase.java @@ -45,14 +45,16 @@ import org.apache.flink.streaming.api.windowing.assigners.TumblingEventTimeWindows; import org.apache.flink.streaming.api.windowing.evictors.CountEvictor; import org.apache.flink.streaming.api.windowing.windows.TimeWindow; -import org.apache.flink.test.util.AbstractTestBaseJUnit4; +import org.apache.flink.test.util.AbstractTestBase; +import org.apache.flink.testutils.junit.extensions.parameterized.Parameter; +import org.apache.flink.testutils.junit.extensions.parameterized.ParameterizedTestExtension; +import org.apache.flink.testutils.junit.extensions.parameterized.Parameters; import org.apache.flink.util.AbstractID; import org.apache.flink.util.CloseableIterator; import org.apache.flink.util.Collector; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.junit.runners.Parameterized; +import org.junit.jupiter.api.TestTemplate; +import org.junit.jupiter.api.extension.ExtendWith; import java.time.Duration; import java.util.ArrayList; @@ -65,8 +67,8 @@ /** IT Test for writing savepoints to the {@code WindowOperator}. */ @SuppressWarnings("unchecked") -@RunWith(Parameterized.class) -public class SavepointWriterWindowITCase extends AbstractTestBaseJUnit4 { +@ExtendWith(ParameterizedTestExtension.class) +class SavepointWriterWindowITCase extends AbstractTestBase { private static final String UID = "uid"; @@ -113,7 +115,7 @@ public class SavepointWriterWindowITCase extends AbstractTestBaseJUnit4 { new EmbeddedRocksDBStateBackend(), new Configuration().set(StateBackendOptions.STATE_BACKEND, "rocksdb"))); - @Parameterized.Parameters(name = "{0}") + @Parameters(name = "{0}") public static Collection data() { List parameterList = new ArrayList<>(); for (Tuple3 stateBackend : STATE_BACKENDS) { @@ -133,29 +135,24 @@ public static Collection data() { return parameterList; } - private final WindowBootstrap windowBootstrap; + @SuppressWarnings("unused") + @Parameter + public String ignore; - private final WindowStream windowStream; + @Parameter(1) + public WindowBootstrap windowBootstrap; - private final StateBackend stateBackend; + @Parameter(2) + public WindowStream windowStream; - private final Configuration configuration; + @Parameter(3) + public StateBackend stateBackend; - @SuppressWarnings("unused") - public SavepointWriterWindowITCase( - String ignore, - WindowBootstrap windowBootstrap, - WindowStream windowStream, - StateBackend stateBackend, - Configuration configuration) { - this.windowBootstrap = windowBootstrap; - this.windowStream = windowStream; - this.stateBackend = stateBackend; - this.configuration = configuration; - } + @Parameter(4) + public Configuration configuration; - @Test - public void testTumbleWindow() throws Exception { + @TestTemplate + void testTumbleWindow() throws Exception { final String savepointPath = getTempDirPath(new AbstractID().toHexString()); StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment(configuration); @@ -198,8 +195,8 @@ public void testTumbleWindow() throws Exception { .containsAll(STANDARD_MATCHER); } - @Test - public void testTumbleWindowWithEvictor() throws Exception { + @TestTemplate + void testTumbleWindowWithEvictor() throws Exception { final String savepointPath = getTempDirPath(new AbstractID().toHexString()); StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment(configuration); @@ -244,8 +241,8 @@ public void testTumbleWindowWithEvictor() throws Exception { .containsAll(EVICTOR_MATCHER); } - @Test - public void testSlideWindow() throws Exception { + @TestTemplate + void testSlideWindow() throws Exception { final String savepointPath = getTempDirPath(new AbstractID().toHexString()); StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment(configuration); @@ -291,8 +288,8 @@ public void testSlideWindow() throws Exception { .containsAll(STANDARD_MATCHER); } - @Test - public void testSlideWindowWithEvictor() throws Exception { + @TestTemplate + void testSlideWindowWithEvictor() throws Exception { final String savepointPath = getTempDirPath(new AbstractID().toHexString()); StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment(configuration); diff --git a/flink-libraries/flink-state-processing-api/src/test/java/org/apache/flink/state/api/StateBootstrapTransformationTest.java b/flink-libraries/flink-state-processing-api/src/test/java/org/apache/flink/state/api/StateBootstrapTransformationTest.java index 5928c809c6dbf2..3935a493b85ca0 100644 --- a/flink-libraries/flink-state-processing-api/src/test/java/org/apache/flink/state/api/StateBootstrapTransformationTest.java +++ b/flink-libraries/flink-state-processing-api/src/test/java/org/apache/flink/state/api/StateBootstrapTransformationTest.java @@ -31,16 +31,17 @@ import org.apache.flink.streaming.api.datastream.DataStream; import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment; import org.apache.flink.streaming.api.graph.StreamConfig; -import org.apache.flink.test.util.AbstractTestBaseJUnit4; +import org.apache.flink.test.util.AbstractTestBase; -import org.junit.Assert; -import org.junit.Test; +import org.junit.jupiter.api.Test; + +import static org.assertj.core.api.Assertions.assertThat; /** Tests for bootstrap transformations. */ -public class StateBootstrapTransformationTest extends AbstractTestBaseJUnit4 { +class StateBootstrapTransformationTest extends AbstractTestBase { @Test - public void testBroadcastStateTransformationParallelism() { + void testBroadcastStateTransformationParallelism() { StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment(); env.setParallelism(10); @@ -58,14 +59,13 @@ public void testBroadcastStateTransformationParallelism() { new Path(), maxParallelism); - Assert.assertEquals( - "Broadcast transformations should always be run at parallelism 1", - 1, - result.getParallelism()); + assertThat(result.getParallelism()) + .as("Broadcast transformations should always be run at parallelism 1") + .isOne(); } @Test - public void testDefaultParallelismRespectedWhenLessThanMaxParallelism() { + void testDefaultParallelismRespectedWhenLessThanMaxParallelism() { StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment(); env.setParallelism(4); @@ -83,14 +83,14 @@ public void testDefaultParallelismRespectedWhenLessThanMaxParallelism() { new Path(), maxParallelism); - Assert.assertEquals( - "The parallelism of a data set should not change when less than the max parallelism of the savepoint", - env.getParallelism(), - result.getParallelism()); + assertThat(result.getParallelism()) + .as( + "The parallelism of a data set should not change when less than the max parallelism of the savepoint") + .isEqualTo(env.getParallelism()); } @Test - public void testMaxParallelismRespected() { + void testMaxParallelismRespected() { StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment(); env.setParallelism(10); @@ -108,14 +108,14 @@ public void testMaxParallelismRespected() { new Path(), maxParallelism); - Assert.assertEquals( - "The parallelism of a data set should be constrained my the savepoint max parallelism", - 4, - result.getParallelism()); + assertThat(result.getParallelism()) + .as( + "The parallelism of a data set should be constrained my the savepoint max parallelism") + .isEqualTo(4); } @Test - public void testOperatorSpecificMaxParallelismRespected() { + void testOperatorSpecificMaxParallelismRespected() { StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment(); env.setParallelism(4); @@ -134,14 +134,14 @@ public void testOperatorSpecificMaxParallelismRespected() { new Path(), maxParallelism); - Assert.assertEquals( - "The parallelism of a data set should be constrained my the savepoint max parallelism", - 1, - result.getParallelism()); + assertThat(result.getParallelism()) + .as( + "The parallelism of a data set should be constrained my the savepoint max parallelism") + .isOne(); } @Test - public void testStreamConfig() { + void testStreamConfig() { StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment(); DataStream input = env.fromData(""); @@ -159,10 +159,9 @@ public void testStreamConfig() { KeySelector selector = config.getStatePartitioner(0, Thread.currentThread().getContextClassLoader()); - Assert.assertEquals( - "Incorrect key selector forwarded to stream operator", - CustomKeySelector.class, - selector.getClass()); + assertThat(selector.getClass()) + .as("Incorrect key selector forwarded to stream operator") + .isEqualTo(CustomKeySelector.class); } private static class CustomKeySelector implements KeySelector { diff --git a/flink-libraries/flink-state-processing-api/src/test/java/org/apache/flink/state/api/input/BroadcastStateInputFormatTest.java b/flink-libraries/flink-state-processing-api/src/test/java/org/apache/flink/state/api/input/BroadcastStateInputFormatTest.java index 518fca97b2ba52..0d1b2e65dbec3e 100644 --- a/flink-libraries/flink-state-processing-api/src/test/java/org/apache/flink/state/api/input/BroadcastStateInputFormatTest.java +++ b/flink-libraries/flink-state-processing-api/src/test/java/org/apache/flink/state/api/input/BroadcastStateInputFormatTest.java @@ -34,20 +34,21 @@ import org.apache.flink.streaming.util.TwoInputStreamOperatorTestHarness; import org.apache.flink.util.Collector; -import org.junit.Assert; -import org.junit.Test; +import org.junit.jupiter.api.Test; import java.util.Collections; import java.util.HashMap; import java.util.Map; +import static org.assertj.core.api.Assertions.assertThat; + /** Test for operator broadcast state input format. */ -public class BroadcastStateInputFormatTest { +class BroadcastStateInputFormatTest { private static MapStateDescriptor descriptor = new MapStateDescriptor<>("state", Types.INT, Types.INT); @Test - public void testReadBroadcastState() throws Exception { + void testReadBroadcastState() throws Exception { try (TwoInputStreamOperatorTestHarness testHarness = getTestHarness()) { testHarness.open(); @@ -83,8 +84,9 @@ public void testReadBroadcastState() throws Exception { expected.put(2, 2); expected.put(3, 3); - Assert.assertEquals( - "Failed to read correct list state from state backend", expected, results); + assertThat(results) + .as("Failed to read correct list state from state backend") + .isEqualTo(expected); } } diff --git a/flink-libraries/flink-state-processing-api/src/test/java/org/apache/flink/state/api/input/BufferingCollectorTest.java b/flink-libraries/flink-state-processing-api/src/test/java/org/apache/flink/state/api/input/BufferingCollectorTest.java index 933f4caed536b2..9ddb838dae5e07 100644 --- a/flink-libraries/flink-state-processing-api/src/test/java/org/apache/flink/state/api/input/BufferingCollectorTest.java +++ b/flink-libraries/flink-state-processing-api/src/test/java/org/apache/flink/state/api/input/BufferingCollectorTest.java @@ -18,27 +18,27 @@ package org.apache.flink.state.api.input; -import org.junit.Assert; -import org.junit.Test; +import org.junit.jupiter.api.Test; + +import static org.assertj.core.api.Assertions.assertThat; /** Test of the buffering collector. */ -public class BufferingCollectorTest { +class BufferingCollectorTest { @Test - public void testNestRemovesElement() { + void testNestRemovesElement() { BufferingCollector collector = new BufferingCollector<>(); collector.collect(1); - Assert.assertTrue("Failed to add element to collector", collector.hasNext()); - Assert.assertEquals( - "Incorrect element removed from collector", Integer.valueOf(1), collector.next()); - Assert.assertFalse("Failed to drop element from collector", collector.hasNext()); + assertThat(collector).as("Failed to add element to collector").hasNext(); + assertThat(collector.next()).as("Incorrect element removed from collector").isOne(); + assertThat(collector).as("Failed to drop element from collector").isExhausted(); } @Test - public void testEmptyCollectorReturnsNull() { + void testEmptyCollectorReturnsNull() { BufferingCollector collector = new BufferingCollector<>(); - Assert.assertNull("Empty collector did not return null", collector.next()); + assertThat(collector.next()).isNull(); } } diff --git a/flink-libraries/flink-state-processing-api/src/test/java/org/apache/flink/state/api/input/KeyedStateInputFormatTest.java b/flink-libraries/flink-state-processing-api/src/test/java/org/apache/flink/state/api/input/KeyedStateInputFormatTest.java index 292eb61d2c44af..bde20fd0f579cc 100644 --- a/flink-libraries/flink-state-processing-api/src/test/java/org/apache/flink/state/api/input/KeyedStateInputFormatTest.java +++ b/flink-libraries/flink-state-processing-api/src/test/java/org/apache/flink/state/api/input/KeyedStateInputFormatTest.java @@ -47,18 +47,14 @@ import org.apache.flink.streaming.util.asyncprocessing.AsyncKeyedOneInputStreamOperatorTestHarness; import org.apache.flink.util.Collector; -import org.junit.Assert; import org.junit.jupiter.api.Test; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.ValueSource; -import org.junit.runner.RunWith; -import org.junit.runners.Parameterized; import javax.annotation.Nonnull; import java.io.IOException; import java.util.ArrayList; -import java.util.Arrays; import java.util.Comparator; import java.util.List; import java.util.Set; @@ -67,7 +63,6 @@ import static org.assertj.core.api.Assertions.assertThatThrownBy; /** Tests for keyed state input format. */ -@RunWith(Parameterized.class) class KeyedStateInputFormatTest { private static ValueStateDescriptor stateDescriptor = new ValueStateDescriptor<>("state", Types.INT); @@ -90,8 +85,7 @@ void testCreatePartitionedInputSplits(boolean asyncState) throws Exception { new KeyedStateReaderOperator<>(new ReaderFunction(), Types.INT), new ExecutionConfig()); KeyGroupRangeInputSplit[] splits = format.createInputSplits(4); - Assert.assertEquals( - "Failed to properly partition operator state into input splits", 4, splits.length); + assertThat(splits).hasSize(4); } @ParameterizedTest(name = "Enable async state = {0}") @@ -112,10 +106,9 @@ void testMaxParallelismRespected(boolean asyncState) throws Exception { new KeyedStateReaderOperator<>(new ReaderFunction(), Types.INT), new ExecutionConfig()); KeyGroupRangeInputSplit[] splits = format.createInputSplits(129); - Assert.assertEquals( - "Failed to properly partition operator state into input splits", - 128, - splits.length); + assertThat(splits) + .as("Failed to properly partition operator state into input splits") + .hasSize(128); } @ParameterizedTest(name = "Enable async state = {0}") @@ -220,7 +213,7 @@ void testReadState(boolean asyncState) throws Exception { List data = readInputSplit(split, userFunction); - Assert.assertEquals("Incorrect data read from input split", Arrays.asList(1, 2, 3), data); + assertThat(data).as("Incorrect data read from input split").containsExactly(1, 2, 3); } @ParameterizedTest(name = "Enable async state = {0}") @@ -246,8 +239,9 @@ void testReadMultipleOutputPerKey(boolean asyncState) throws Exception { List data = readInputSplit(split, userFunction); - Assert.assertEquals( - "Incorrect data read from input split", Arrays.asList(1, 1, 2, 2, 3, 3), data); + assertThat(data) + .as("Incorrect data read from input split") + .containsExactly(1, 1, 2, 2, 3, 3); } @ParameterizedTest(name = "Enable async state = {0}") @@ -298,8 +292,9 @@ void testReadTime() throws Exception { List data = readInputSplit(split, userFunction); - Assert.assertEquals( - "Incorrect data read from input split", Arrays.asList(1, 1, 2, 2, 3, 3), data); + assertThat(data) + .as("Incorrect data read from input split") + .containsExactly(1, 1, 2, 2, 3, 3); } @Nonnull @@ -471,18 +466,16 @@ public void readKey( Integer key, KeyedStateReaderFunction.Context ctx, Collector out) throws Exception { Set eventTimers = ctx.registeredEventTimeTimers(); - Assert.assertEquals( - "Each key should have exactly one event timer for key " + key, - 1, - eventTimers.size()); + assertThat(eventTimers) + .as("Each key should have exactly one event timer for key %s", key) + .hasSize(1); out.collect(eventTimers.iterator().next().intValue()); Set procTimers = ctx.registeredProcessingTimeTimers(); - Assert.assertEquals( - "Each key should have exactly one processing timer for key " + key, - 1, - procTimers.size()); + assertThat(procTimers) + .as("Each key should have exactly one processing timer for key %s", key) + .hasSize(1); out.collect(procTimers.iterator().next().intValue()); } diff --git a/flink-libraries/flink-state-processing-api/src/test/java/org/apache/flink/state/api/input/ListStateInputFormatTest.java b/flink-libraries/flink-state-processing-api/src/test/java/org/apache/flink/state/api/input/ListStateInputFormatTest.java index ff9252ad5944d4..53e1ef939e3485 100644 --- a/flink-libraries/flink-state-processing-api/src/test/java/org/apache/flink/state/api/input/ListStateInputFormatTest.java +++ b/flink-libraries/flink-state-processing-api/src/test/java/org/apache/flink/state/api/input/ListStateInputFormatTest.java @@ -36,21 +36,20 @@ import org.apache.flink.streaming.util.OneInputStreamOperatorTestHarness; import org.apache.flink.util.Collector; -import org.junit.Assert; -import org.junit.Test; +import org.junit.jupiter.api.Test; import java.util.ArrayList; -import java.util.Arrays; -import java.util.Comparator; import java.util.List; +import static org.assertj.core.api.Assertions.assertThat; + /** Test for operator list state input format. */ -public class ListStateInputFormatTest { +class ListStateInputFormatTest { private static ListStateDescriptor descriptor = new ListStateDescriptor<>("state", Types.INT); @Test - public void testReadListOperatorState() throws Exception { + void testReadListOperatorState() throws Exception { try (OneInputStreamOperatorTestHarness testHarness = getTestHarness()) { testHarness.open(); @@ -84,12 +83,9 @@ public void testReadListOperatorState() throws Exception { results.add(format.nextRecord(0)); } - results.sort(Comparator.naturalOrder()); - - Assert.assertEquals( - "Failed to read correct list state from state backend", - Arrays.asList(1, 2, 3), - results); + assertThat(results) + .as("Failed to read correct list state from state backend") + .containsExactlyInAnyOrder(1, 2, 3); } } diff --git a/flink-libraries/flink-state-processing-api/src/test/java/org/apache/flink/state/api/input/MultiStateKeyIteratorTest.java b/flink-libraries/flink-state-processing-api/src/test/java/org/apache/flink/state/api/input/MultiStateKeyIteratorTest.java index 260df82dfa4fc4..c6f011721d2386 100644 --- a/flink-libraries/flink-state-processing-api/src/test/java/org/apache/flink/state/api/input/MultiStateKeyIteratorTest.java +++ b/flink-libraries/flink-state-processing-api/src/test/java/org/apache/flink/state/api/input/MultiStateKeyIteratorTest.java @@ -57,13 +57,11 @@ import org.apache.flink.runtime.state.ttl.mock.MockRestoreOperation; import org.apache.flink.runtime.state.ttl.mock.MockStateBackend; -import org.junit.Assert; -import org.junit.Test; +import org.junit.jupiter.api.Test; import javax.annotation.Nonnull; import java.util.ArrayList; -import java.util.Arrays; import java.util.Collection; import java.util.Collections; import java.util.HashMap; @@ -73,8 +71,10 @@ import java.util.stream.IntStream; import java.util.stream.Stream; +import static org.assertj.core.api.Assertions.assertThat; + /** Test for the multi-state key iterator. */ -public class MultiStateKeyIteratorTest { +class MultiStateKeyIteratorTest { private static final List> descriptors; static { @@ -161,7 +161,7 @@ private static void clearKey( } @Test - public void testIteratorPullsKeyFromAllDescriptors() throws Exception { + void testIteratorPullsKeyFromAllDescriptors() throws Exception { AbstractKeyedStateBackend keyedStateBackend = createKeyedStateBackend(); setKey(keyedStateBackend, descriptors.get(0), 1); @@ -176,12 +176,11 @@ public void testIteratorPullsKeyFromAllDescriptors() throws Exception { keys.add(iterator.next()); } - Assert.assertEquals("Unexpected number of keys", 2, keys.size()); - Assert.assertEquals("Unexpected keys found", Arrays.asList(1, 2), keys); + assertThat(keys).containsExactly(1, 2); } @Test - public void testIteratorSkipsEmptyDescriptors() throws Exception { + void testIteratorSkipsEmptyDescriptors() throws Exception { AbstractKeyedStateBackend keyedStateBackend = createKeyedStateBackend(); List> threeDescriptors = new ArrayList<>(3); @@ -206,13 +205,12 @@ public void testIteratorSkipsEmptyDescriptors() throws Exception { keys.add(iterator.next()); } - Assert.assertEquals("Unexpected number of keys", 2, keys.size()); - Assert.assertEquals("Unexpected keys found", Arrays.asList(1, 2), keys); + assertThat(keys).containsExactly(1, 2); } /** Test for lazy enumeration of inner iterators. */ @Test - public void testIteratorPullsSingleKeyFromAllDescriptors() throws AssertionError { + void testIteratorPullsSingleKeyFromAllDescriptors() throws AssertionError { CountingKeysKeyedStateBackend keyedStateBackend = createCountingKeysKeyedStateBackend(100_000_000); MultiStateKeyIterator testedIterator = @@ -220,10 +218,9 @@ public void testIteratorPullsSingleKeyFromAllDescriptors() throws AssertionError testedIterator.hasNext(); - Assert.assertEquals( - "Unexpected number of keys enumerated", - 1, - keyedStateBackend.numberOfKeysEnumerated); + assertThat(keyedStateBackend.numberOfKeysEnumerated) + .as("Unexpected number of keys enumerated") + .isOne(); } /** diff --git a/flink-libraries/flink-state-processing-api/src/test/java/org/apache/flink/state/api/input/StreamOperatorContextBuilderTest.java b/flink-libraries/flink-state-processing-api/src/test/java/org/apache/flink/state/api/input/StreamOperatorContextBuilderTest.java index 91fd3781797744..3de0ffec0b5fca 100644 --- a/flink-libraries/flink-state-processing-api/src/test/java/org/apache/flink/state/api/input/StreamOperatorContextBuilderTest.java +++ b/flink-libraries/flink-state-processing-api/src/test/java/org/apache/flink/state/api/input/StreamOperatorContextBuilderTest.java @@ -28,18 +28,20 @@ import org.apache.flink.state.api.utils.CustomStateBackendFactory; import org.apache.flink.streaming.util.MockStreamingRuntimeContext; -import org.junit.Test; +import org.junit.jupiter.api.Test; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import static org.assertj.core.api.Assertions.assertThatThrownBy; + /** Tests for the stream operator context builder. */ -public class StreamOperatorContextBuilderTest { +class StreamOperatorContextBuilderTest { private static final Logger LOG = LoggerFactory.getLogger(StreamOperatorContextBuilderTest.class); - @Test(expected = CustomStateBackendFactory.ExpectedException.class) - public void testStateBackendLoading() throws Exception { + @Test + void testStateBackendLoading() throws Exception { Configuration configuration = new Configuration(); configuration.set( StateBackendOptions.STATE_BACKEND, @@ -67,6 +69,7 @@ public int getSplitNumber() { null, context.getExecutionConfig()); - builder.build(LOG); + assertThatThrownBy(() -> builder.build(LOG)) + .isInstanceOf(CustomStateBackendFactory.ExpectedException.class); } } diff --git a/flink-libraries/flink-state-processing-api/src/test/java/org/apache/flink/state/api/input/UnionStateInputFormatTest.java b/flink-libraries/flink-state-processing-api/src/test/java/org/apache/flink/state/api/input/UnionStateInputFormatTest.java index 248a0ea5a6eeb6..e2f67782ad37cd 100644 --- a/flink-libraries/flink-state-processing-api/src/test/java/org/apache/flink/state/api/input/UnionStateInputFormatTest.java +++ b/flink-libraries/flink-state-processing-api/src/test/java/org/apache/flink/state/api/input/UnionStateInputFormatTest.java @@ -37,21 +37,20 @@ import org.apache.flink.streaming.util.OneInputStreamOperatorTestHarness; import org.apache.flink.util.Collector; -import org.junit.Assert; -import org.junit.Test; +import org.junit.jupiter.api.Test; import java.util.ArrayList; -import java.util.Arrays; -import java.util.Comparator; import java.util.List; +import static org.assertj.core.api.Assertions.assertThat; + /** Test for operator union state input format. */ -public class UnionStateInputFormatTest { +class UnionStateInputFormatTest { private static ListStateDescriptor descriptor = new ListStateDescriptor<>("state", Types.INT); @Test - public void testReadUnionOperatorState() throws Exception { + void testReadUnionOperatorState() throws Exception { try (OneInputStreamOperatorTestHarness testHarness = getTestHarness()) { testHarness.open(); @@ -80,12 +79,9 @@ public void testReadUnionOperatorState() throws Exception { results.add(format.nextRecord(0)); } - results.sort(Comparator.naturalOrder()); - - Assert.assertEquals( - "Failed to read correct list state from state backend", - Arrays.asList(1, 2, 3), - results); + assertThat(results) + .as("Failed to read correct list state from state backend") + .containsExactlyInAnyOrder(1, 2, 3); } } diff --git a/flink-libraries/flink-state-processing-api/src/test/java/org/apache/flink/state/api/input/WindowReaderTest.java b/flink-libraries/flink-state-processing-api/src/test/java/org/apache/flink/state/api/input/WindowReaderTest.java index 96313f8c40d67f..1ee290943146b9 100644 --- a/flink-libraries/flink-state-processing-api/src/test/java/org/apache/flink/state/api/input/WindowReaderTest.java +++ b/flink-libraries/flink-state-processing-api/src/test/java/org/apache/flink/state/api/input/WindowReaderTest.java @@ -55,31 +55,30 @@ import org.apache.flink.streaming.util.MockStreamingRuntimeContext; import org.apache.flink.util.Collector; -import org.junit.Assert; -import org.junit.Test; +import org.junit.jupiter.api.Test; import javax.annotation.Nonnull; import java.io.IOException; import java.time.Duration; import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collections; import java.util.List; import java.util.function.Function; +import static org.assertj.core.api.Assertions.assertThat; +import static org.assertj.core.api.Assertions.fail; import static org.mockito.Mockito.mock; /** Tests reading window state. */ @SuppressWarnings("unchecked") -public class WindowReaderTest { +class WindowReaderTest { private static final int MAX_PARALLELISM = 128; private static final String UID = "uid"; @Test - public void testReducingWindow() throws Exception { + void testReducingWindow() throws Exception { WindowOperator operator = getWindowOperator( stream -> @@ -102,11 +101,11 @@ public void testReducingWindow() throws Exception { new ExecutionConfig()); List list = readState(format); - Assert.assertEquals(Arrays.asList(1, 1), list); + assertThat(list).containsExactly(1, 1); } @Test - public void testSessionWindow() throws Exception { + void testSessionWindow() throws Exception { WindowOperator operator = getWindowOperator( stream -> @@ -129,11 +128,11 @@ public void testSessionWindow() throws Exception { new ExecutionConfig()); List list = readState(format); - Assert.assertEquals(Collections.singletonList(2), list); + assertThat(list).containsExactly(2); } @Test - public void testAggregateWindow() throws Exception { + void testAggregateWindow() throws Exception { WindowOperator operator = getWindowOperator( stream -> @@ -156,11 +155,11 @@ public void testAggregateWindow() throws Exception { new ExecutionConfig()); List list = readState(format); - Assert.assertEquals(Arrays.asList(1, 1), list); + assertThat(list).containsExactly(1, 1); } @Test - public void testProcessReader() throws Exception { + void testProcessReader() throws Exception { WindowOperator operator = getWindowOperator( stream -> @@ -182,11 +181,11 @@ public void testProcessReader() throws Exception { new ExecutionConfig()); List list = readState(format); - Assert.assertEquals(Arrays.asList(1, 1), list); + assertThat(list).containsExactly(1, 1); } @Test - public void testPerPaneAndPerKeyState() throws Exception { + void testPerPaneAndPerKeyState() throws Exception { WindowOperator operator = getWindowOperator( stream -> @@ -209,7 +208,7 @@ public void testPerPaneAndPerKeyState() throws Exception { new ExecutionConfig()); List> list = readState(format); - Assert.assertEquals(Arrays.asList(Tuple2.of(2, 1), Tuple2.of(2, 1)), list); + assertThat(list).containsExactly(Tuple2.of(2, 1), Tuple2.of(2, 1)); } private static WindowOperator getWindowOperator( @@ -257,14 +256,14 @@ private static OperatorState getOperatorState( DataStream dataStream) { Transformation transformation = dataStream.getTransformation(); if (!(transformation instanceof OneInputTransformation)) { - Assert.fail("This test only supports window operators"); + fail("This test only supports window operators"); } OneInputTransformation oneInput = (OneInputTransformation) transformation; StreamOperator operator = oneInput.getOperator(); if (!(operator instanceof WindowOperator)) { - Assert.fail("This test only supports window operators"); + fail("This test only supports window operators"); } return (WindowOperator) operator; diff --git a/flink-libraries/flink-state-processing-api/src/test/java/org/apache/flink/state/api/output/KeyedStateBootstrapOperatorTest.java b/flink-libraries/flink-state-processing-api/src/test/java/org/apache/flink/state/api/output/KeyedStateBootstrapOperatorTest.java index b5b034a0762578..242381c44ed644 100644 --- a/flink-libraries/flink-state-processing-api/src/test/java/org/apache/flink/state/api/output/KeyedStateBootstrapOperatorTest.java +++ b/flink-libraries/flink-state-processing-api/src/test/java/org/apache/flink/state/api/output/KeyedStateBootstrapOperatorTest.java @@ -36,16 +36,16 @@ import org.apache.flink.streaming.api.operators.OneInputStreamOperator; import org.apache.flink.streaming.api.operators.StreamMap; import org.apache.flink.streaming.util.KeyedOneInputStreamOperatorTestHarness; +import org.apache.flink.testutils.junit.utils.TempDirUtils; import org.apache.flink.util.Collector; -import org.hamcrest.Matchers; -import org.junit.Assert; -import org.junit.Rule; -import org.junit.Test; -import org.junit.rules.TemporaryFolder; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.io.TempDir; + +import static org.assertj.core.api.Assertions.assertThat; /** Test writing keyed bootstrap state. */ -public class KeyedStateBootstrapOperatorTest { +class KeyedStateBootstrapOperatorTest { private static final ValueStateDescriptor descriptor = new ValueStateDescriptor<>("state", Types.LONG); @@ -54,11 +54,11 @@ public class KeyedStateBootstrapOperatorTest { private static final Long PROC_TIMER = Long.MAX_VALUE - 2; - @Rule public TemporaryFolder folder = new TemporaryFolder(); + @TempDir private java.nio.file.Path folder; @Test - public void testTimerStateRestorable() throws Exception { - Path path = new Path(folder.newFolder().toURI()); + void testTimerStateRestorable() throws Exception { + Path path = new Path(TempDirUtils.newFolder(folder).toURI()); OperatorSubtaskState state; KeyedStateBootstrapOperator bootstrapOperator = @@ -88,8 +88,8 @@ public void testTimerStateRestorable() throws Exception { } @Test - public void testNonTimerStatesRestorableByNonProcessesOperator() throws Exception { - Path path = new Path(folder.newFolder().toURI()); + void testNonTimerStatesRestorableByNonProcessesOperator() throws Exception { + Path path = new Path(TempDirUtils.newFolder(folder).toURI()); OperatorSubtaskState state; KeyedStateBootstrapOperator bootstrapOperator = @@ -123,7 +123,8 @@ private KeyedOneInputStreamOperatorTestHarness getHarness( bootstrapOperator, id -> id, Types.LONG, 128, 1, 0); harness.setStateBackend(new EmbeddedRocksDBStateBackend()); - harness.setCheckpointStorage(new FileSystemCheckpointStorage(folder.newFolder().toURI())); + harness.setCheckpointStorage( + new FileSystemCheckpointStorage(TempDirUtils.newFolder(folder).toURI())); if (state != null) { harness.initializeState(state); } @@ -151,10 +152,9 @@ private OperatorSubtaskState getState( private void assertHarnessOutput( KeyedOneInputStreamOperatorTestHarness harness, T... output) { - Assert.assertThat( - "The output from the operator does not match the expected values", - harness.extractOutputValues(), - Matchers.containsInAnyOrder(output)); + assertThat(harness.extractOutputValues()) + .as("The output from the operator does not match the expected values") + .containsExactlyInAnyOrder(output); } private static class TimerBootstrapFunction extends KeyedStateBootstrapFunction { diff --git a/flink-libraries/flink-state-processing-api/src/test/java/org/apache/flink/state/api/output/SavepointOutputFormatTest.java b/flink-libraries/flink-state-processing-api/src/test/java/org/apache/flink/state/api/output/SavepointOutputFormatTest.java index 6a425bea0dc042..8716cefff74256 100644 --- a/flink-libraries/flink-state-processing-api/src/test/java/org/apache/flink/state/api/output/SavepointOutputFormatTest.java +++ b/flink-libraries/flink-state-processing-api/src/test/java/org/apache/flink/state/api/output/SavepointOutputFormatTest.java @@ -28,29 +28,32 @@ import org.apache.flink.state.api.runtime.SavepointLoader; import org.apache.flink.streaming.util.MockStreamingRuntimeContext; -import org.junit.Assert; -import org.junit.Rule; -import org.junit.Test; -import org.junit.rules.TemporaryFolder; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.io.TempDir; +import java.io.File; import java.util.Collections; +import static org.assertj.core.api.Assertions.assertThat; +import static org.assertj.core.api.Assertions.assertThatThrownBy; + /** Test for writing output savepoint metadata. */ -public class SavepointOutputFormatTest { +class SavepointOutputFormatTest { - @Rule public TemporaryFolder temporaryFolder = new TemporaryFolder(); + @TempDir private File temporaryFolder; - @Test(expected = IllegalStateException.class) - public void testSavepointOutputFormatOnlyWorksWithParallelismOne() throws Exception { - Path path = new Path(temporaryFolder.newFolder().getAbsolutePath()); + @Test + void testSavepointOutputFormatOnlyWorksWithParallelismOne() throws Exception { + Path path = new Path(temporaryFolder.getAbsolutePath()); SavepointOutputFormat format = createSavepointOutputFormat(path); - format.open(FirstAttemptInitializationContext.of(0, 2)); + assertThatThrownBy(() -> format.open(FirstAttemptInitializationContext.of(0, 2))) + .isInstanceOf(IllegalStateException.class); } @Test - public void testSavepointOutputFormat() throws Exception { - Path path = new Path(temporaryFolder.newFolder().getAbsolutePath()); + void testSavepointOutputFormat() throws Exception { + Path path = new Path(temporaryFolder.getAbsolutePath()); SavepointOutputFormat format = createSavepointOutputFormat(path); CheckpointMetadata metadata = createSavepoint(); @@ -61,20 +64,17 @@ public void testSavepointOutputFormat() throws Exception { CheckpointMetadata metadataOnDisk = SavepointLoader.loadSavepointMetadata(path.getPath()); - Assert.assertEquals( - "Incorrect checkpoint id", - metadata.getCheckpointId(), - metadataOnDisk.getCheckpointId()); + assertThat(metadataOnDisk.getCheckpointId()) + .as("Incorrect checkpoint id") + .isEqualTo(metadata.getCheckpointId()); - Assert.assertEquals( - "Incorrect number of operator states in savepoint", - metadata.getOperatorStates().size(), - metadataOnDisk.getOperatorStates().size()); + assertThat(metadataOnDisk.getOperatorStates()) + .as("Incorrect number of operator states in savepoint") + .hasSameSizeAs(metadata.getOperatorStates()); - Assert.assertEquals( - "Incorrect operator state in savepoint", - metadata.getOperatorStates().iterator().next(), - metadataOnDisk.getOperatorStates().iterator().next()); + assertThat(metadataOnDisk.getOperatorStates().iterator().next()) + .as("Incorrect operator state in savepoint") + .isEqualTo(metadata.getOperatorStates().iterator().next()); } private CheckpointMetadata createSavepoint() { diff --git a/flink-libraries/flink-state-processing-api/src/test/java/org/apache/flink/state/api/output/SnapshotUtilsTest.java b/flink-libraries/flink-state-processing-api/src/test/java/org/apache/flink/state/api/output/SnapshotUtilsTest.java index 00e37e63d4456a..302a9e65ac2d2c 100644 --- a/flink-libraries/flink-state-processing-api/src/test/java/org/apache/flink/state/api/output/SnapshotUtilsTest.java +++ b/flink-libraries/flink-state-processing-api/src/test/java/org/apache/flink/state/api/output/SnapshotUtilsTest.java @@ -33,23 +33,24 @@ import org.apache.flink.streaming.api.operators.StreamTaskStateInitializer; import org.apache.flink.streaming.runtime.streamrecord.StreamRecord; -import org.junit.Assert; -import org.junit.Rule; -import org.junit.Test; -import org.junit.rules.TemporaryFolder; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.io.TempDir; +import java.io.File; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.List; +import static org.assertj.core.api.Assertions.assertThat; + /** Tests that snapshot utils can properly snapshot an operator. */ -public class SnapshotUtilsTest { +class SnapshotUtilsTest { private static final List EXPECTED_CALL_OPERATOR_SNAPSHOT = Arrays.asList("prepareSnapshotPreBarrier", "snapshotState", "notifyCheckpointComplete"); - @Rule public TemporaryFolder folder = new TemporaryFolder(); + @TempDir private File folder; private static final List ACTUAL_ORDER_TRACKING = Collections.synchronizedList(new ArrayList<>(EXPECTED_CALL_OPERATOR_SNAPSHOT.size())); @@ -57,17 +58,17 @@ public class SnapshotUtilsTest { private static SnapshotType actualSnapshotType; @Test - public void testSnapshotUtilsLifecycleWithDefaultSavepointFormatType() throws Exception { + void testSnapshotUtilsLifecycleWithDefaultSavepointFormatType() throws Exception { testSnapshotUtilsLifecycleWithSavepointFormatType(SavepointFormatType.DEFAULT); } @Test - public void testSnapshotUtilsLifecycleWithCanonicalSavepointFormatType() throws Exception { + void testSnapshotUtilsLifecycleWithCanonicalSavepointFormatType() throws Exception { testSnapshotUtilsLifecycleWithSavepointFormatType(SavepointFormatType.CANONICAL); } @Test - public void testSnapshotUtilsLifecycleWithNativeSavepointFormatType() throws Exception { + void testSnapshotUtilsLifecycleWithNativeSavepointFormatType() throws Exception { testSnapshotUtilsLifecycleWithSavepointFormatType(SavepointFormatType.NATIVE); } @@ -75,7 +76,7 @@ private void testSnapshotUtilsLifecycleWithSavepointFormatType( SavepointFormatType savepointFormatType) throws Exception { ACTUAL_ORDER_TRACKING.clear(); StreamOperator operator = new LifecycleOperator(); - Path path = new Path(folder.newFolder().getAbsolutePath()); + Path path = new Path(folder.getAbsolutePath()); SnapshotUtils.snapshot( 0L, @@ -88,8 +89,8 @@ private void testSnapshotUtilsLifecycleWithSavepointFormatType( path, savepointFormatType); - Assert.assertEquals(SavepointType.savepoint(savepointFormatType), actualSnapshotType); - Assert.assertEquals(EXPECTED_CALL_OPERATOR_SNAPSHOT, ACTUAL_ORDER_TRACKING); + assertThat(actualSnapshotType).isEqualTo(SavepointType.savepoint(savepointFormatType)); + assertThat(ACTUAL_ORDER_TRACKING).isEqualTo(EXPECTED_CALL_OPERATOR_SNAPSHOT); } private static class LifecycleOperator implements StreamOperator { diff --git a/flink-libraries/flink-state-processing-api/src/test/java/org/apache/flink/state/api/runtime/OperatorIDGeneratorTest.java b/flink-libraries/flink-state-processing-api/src/test/java/org/apache/flink/state/api/runtime/OperatorIDGeneratorTest.java index 9e471297b9f5f1..f6d29a49201d6f 100644 --- a/flink-libraries/flink-state-processing-api/src/test/java/org/apache/flink/state/api/runtime/OperatorIDGeneratorTest.java +++ b/flink-libraries/flink-state-processing-api/src/test/java/org/apache/flink/state/api/runtime/OperatorIDGeneratorTest.java @@ -25,27 +25,28 @@ import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment; import org.apache.flink.streaming.api.functions.sink.v2.DiscardingSink; -import org.junit.Assert; -import org.junit.Test; +import org.junit.jupiter.api.Test; import java.util.stream.StreamSupport; +import static org.assertj.core.api.Assertions.assertThat; + /** * Test that {@code OperatorIDGenerator} creates ids from uids exactly the same as the job graph * generator. */ -public class OperatorIDGeneratorTest { +class OperatorIDGeneratorTest { private static final String UID = "uid"; private static final String OPERATOR_NAME = "operator"; @Test - public void testOperatorIdMatchesUid() { + void testOperatorIdMatchesUid() { OperatorID expectedId = getOperatorID(); OperatorID generatedId = OperatorIDGenerator.fromUid(UID); - Assert.assertEquals(expectedId, generatedId); + assertThat(generatedId).isEqualTo(expectedId); } private static OperatorID getOperatorID() { diff --git a/flink-libraries/flink-state-processing-api/src/test/java/org/apache/flink/state/api/utils/SavepointTestBase.java b/flink-libraries/flink-state-processing-api/src/test/java/org/apache/flink/state/api/utils/SavepointTestBase.java index 97d14baa121134..0da89badf9adef 100644 --- a/flink-libraries/flink-state-processing-api/src/test/java/org/apache/flink/state/api/utils/SavepointTestBase.java +++ b/flink-libraries/flink-state-processing-api/src/test/java/org/apache/flink/state/api/utils/SavepointTestBase.java @@ -23,6 +23,7 @@ import org.apache.flink.api.common.typeinfo.TypeInformation; import org.apache.flink.api.java.typeutils.TypeExtractor; import org.apache.flink.client.program.ClusterClient; +import org.apache.flink.client.program.rest.RestClusterClient; import org.apache.flink.core.execution.SavepointFormatType; import org.apache.flink.runtime.execution.ExecutionState; import org.apache.flink.runtime.jobgraph.JobGraph; @@ -30,10 +31,12 @@ import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment; import org.apache.flink.streaming.api.functions.source.legacy.FromElementsFunction; import org.apache.flink.streaming.api.functions.source.legacy.SourceFunction; -import org.apache.flink.test.util.AbstractTestBaseJUnit4; -import org.apache.flink.test.util.MiniClusterWithClientResource; +import org.apache.flink.test.junit5.InjectClusterClient; +import org.apache.flink.test.util.AbstractTestBase; import org.apache.flink.util.AbstractID; +import org.junit.jupiter.api.BeforeEach; + import java.io.IOException; import java.util.Arrays; import java.util.Collection; @@ -46,7 +49,14 @@ import static org.apache.flink.runtime.execution.ExecutionState.RUNNING; /** A test base that includes utilities for taking a savepoint. */ -public abstract class SavepointTestBase extends AbstractTestBaseJUnit4 { +public abstract class SavepointTestBase extends AbstractTestBase { + + private RestClusterClient clusterClient; + + @BeforeEach + void setClusterClient(@InjectClusterClient RestClusterClient clusterClient) { + this.clusterClient = clusterClient; + } public String takeSavepoint(StreamExecutionEnvironment executionEnvironment) { StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment(); @@ -56,26 +66,23 @@ public String takeSavepoint(StreamExecutionEnvironment executionEnvironment) { JobID jobId = jobGraph.getJobID(); - ClusterClient client = MINI_CLUSTER_RESOURCE.getClusterClient(); - try { - JobID jobID = client.submitJob(jobGraph).get(); + JobID jobID = clusterClient.submitJob(jobGraph).get(); - waitForAllRunningOrSomeTerminal(jobID, MINI_CLUSTER_RESOURCE); + waitForAllRunningOrSomeTerminal(jobID, clusterClient); - return triggerSavepoint(client, jobID).get(5, TimeUnit.MINUTES); + return triggerSavepoint(clusterClient, jobID).get(5, TimeUnit.MINUTES); } catch (Exception e) { throw new RuntimeException("Failed to take savepoint", e); } finally { - client.cancel(jobId); + clusterClient.cancel(jobId); } } public static void waitForAllRunningOrSomeTerminal( - JobID jobID, MiniClusterWithClientResource miniClusterResource) throws Exception { + JobID jobID, RestClusterClient clusterClient) throws Exception { while (true) { - JobDetailsInfo jobInfo = - miniClusterResource.getRestClusterClient().getJobDetails(jobID).get(); + JobDetailsInfo jobInfo = clusterClient.getJobDetails(jobID).get(); Set vertexStates = jobInfo.getJobVertexInfos().stream() .map(JobDetailsInfo.JobVertexDetailsInfo::getExecutionState) From 1ea8cb0e4e53462d3196cee35eba954930847bb0 Mon Sep 17 00:00:00 2001 From: Weiqing Yang Date: Fri, 24 Jul 2026 18:12:25 -0700 Subject: [PATCH 31/32] [FLINK-40167][table] Add EARLY_FIRE join hint surface and option validation (#28353) --- .../docs/util/ConfigurationOptionLocator.java | 3 +- .../api/config/EarlyFireJoinHintOptions.java | 81 ++++++++++ .../hint/CapitalizeQueryHintsShuttle.java | 3 +- .../planner/hint/FlinkHintStrategies.java | 58 +++++++ .../table/planner/hint/JoinStrategy.java | 13 ++ .../plan/optimize/QueryHintsResolver.java | 7 + .../plan/hints/batch/JoinHintTestBase.java | 5 +- .../hints/stream/EarlyFireJoinHintTest.java | 153 ++++++++++++++++++ .../hints/stream/EarlyFireJoinHintTest.xml | 51 ++++++ 9 files changed, 370 insertions(+), 4 deletions(-) create mode 100644 flink-table/flink-table-api-java/src/main/java/org/apache/flink/table/api/config/EarlyFireJoinHintOptions.java create mode 100644 flink-table/flink-table-planner/src/test/java/org/apache/flink/table/planner/plan/hints/stream/EarlyFireJoinHintTest.java create mode 100644 flink-table/flink-table-planner/src/test/resources/org/apache/flink/table/planner/plan/hints/stream/EarlyFireJoinHintTest.xml diff --git a/flink-docs/src/main/java/org/apache/flink/docs/util/ConfigurationOptionLocator.java b/flink-docs/src/main/java/org/apache/flink/docs/util/ConfigurationOptionLocator.java index 95dae776d7d837..ed2d987be504a9 100644 --- a/flink-docs/src/main/java/org/apache/flink/docs/util/ConfigurationOptionLocator.java +++ b/flink-docs/src/main/java/org/apache/flink/docs/util/ConfigurationOptionLocator.java @@ -105,7 +105,8 @@ public class ConfigurationOptionLocator { "org.apache.flink.state.rocksdb.PredefinedOptions", "org.apache.flink.python.PythonConfig", "org.apache.flink.cep.configuration.SharedBufferCacheConfig", - "org.apache.flink.table.api.config.LookupJoinHintOptions")); + "org.apache.flink.table.api.config.LookupJoinHintOptions", + "org.apache.flink.table.api.config.EarlyFireJoinHintOptions")); private static final String DEFAULT_PATH_PREFIX = "src/main/java"; diff --git a/flink-table/flink-table-api-java/src/main/java/org/apache/flink/table/api/config/EarlyFireJoinHintOptions.java b/flink-table/flink-table-api-java/src/main/java/org/apache/flink/table/api/config/EarlyFireJoinHintOptions.java new file mode 100644 index 00000000000000..6c919f318f2469 --- /dev/null +++ b/flink-table/flink-table-api-java/src/main/java/org/apache/flink/table/api/config/EarlyFireJoinHintOptions.java @@ -0,0 +1,81 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.flink.table.api.config; + +import org.apache.flink.annotation.PublicEvolving; +import org.apache.flink.configuration.ConfigOption; + +import org.apache.flink.shaded.guava33.com.google.common.collect.ImmutableSet; + +import java.time.Duration; +import java.util.HashSet; +import java.util.Set; + +import static org.apache.flink.configuration.ConfigOptions.key; + +/** + * This class holds hint option name definitions for EARLY_FIRE join hints based on {@link + * org.apache.flink.configuration.ConfigOption}. + */ +@PublicEvolving +public class EarlyFireJoinHintOptions { + + public static final ConfigOption DELAY = + key("delay") + .durationType() + .noDefaultValue() + .withDescription( + "The delay between the time an unmatched outer row becomes eligible to" + + " be emitted with null padding and the time it is actually" + + " emitted. Must be at least 1 millisecond."); + + public static final ConfigOption TIME_MODE = + key("time-mode") + .enumType(TimeMode.class) + .noDefaultValue() + .withDescription( + "The time domain that drives the early-fire delay, can be 'rowtime' or" + + " 'proctime'. If not set, it defaults to the time domain of" + + " the interval join."); + + private static final Set> requiredKeys = new HashSet<>(); + private static final Set> supportedKeys = new HashSet<>(); + + static { + requiredKeys.add(DELAY); + + supportedKeys.add(DELAY); + supportedKeys.add(TIME_MODE); + } + + public static ImmutableSet getRequiredOptions() { + return ImmutableSet.copyOf(requiredKeys); + } + + public static ImmutableSet getSupportedOptions() { + return ImmutableSet.copyOf(supportedKeys); + } + + /** The time domain that drives the early-fire delay. */ + @PublicEvolving + public enum TimeMode { + ROWTIME, + PROCTIME + } +} diff --git a/flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/hint/CapitalizeQueryHintsShuttle.java b/flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/hint/CapitalizeQueryHintsShuttle.java index 006dab4b832a7f..6da4452010d380 100644 --- a/flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/hint/CapitalizeQueryHintsShuttle.java +++ b/flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/hint/CapitalizeQueryHintsShuttle.java @@ -46,7 +46,8 @@ protected RelNode doVisit(RelNode node) { changed.set(true); if (JoinStrategy.isJoinStrategy(capitalHintName)) { - if (JoinStrategy.isLookupHint(hint.hintName)) { + if (JoinStrategy.isLookupHint(hint.hintName) + || JoinStrategy.isEarlyFireHint(hint.hintName)) { return RelHint.builder(capitalHintName) .hintOptions(hint.kvOptions) .inheritPath(hint.inheritPath) diff --git a/flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/hint/FlinkHintStrategies.java b/flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/hint/FlinkHintStrategies.java index 5978f98017d91d..204c23a97d84a5 100644 --- a/flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/hint/FlinkHintStrategies.java +++ b/flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/hint/FlinkHintStrategies.java @@ -20,6 +20,7 @@ import org.apache.flink.configuration.ConfigOption; import org.apache.flink.configuration.Configuration; +import org.apache.flink.table.api.config.EarlyFireJoinHintOptions; import org.apache.flink.table.api.config.LookupJoinHintOptions; import org.apache.flink.table.factories.FactoryUtil; import org.apache.flink.table.planner.plan.rules.logical.WrapJsonAggFunctionArgumentsRule; @@ -36,6 +37,9 @@ import java.time.Duration; import java.util.Collections; import java.util.Optional; +import java.util.Set; +import java.util.TreeSet; +import java.util.stream.Collectors; /** * A collection of Flink style {@link HintStrategy}s. @@ -135,6 +139,11 @@ public static HintStrategyTable createHintStrategyTable() { HintPredicates.JOIN, HintPredicates.AGGREGATE)) .optionChecker(STATE_TTL_NON_EMPTY_KV_OPTION_CHECKER) .build()) + .hintStrategy( + JoinStrategy.EARLY_FIRE.getJoinHintName(), + HintStrategy.builder(HintPredicates.JOIN) + .optionChecker(EARLY_FIRE_KV_OPTION_CHECKER) + .build()) .build(); } @@ -253,6 +262,55 @@ private static HintOptionChecker fixedSizeListOptionChecker(int size) { return true; }; + private static final HintOptionChecker EARLY_FIRE_KV_OPTION_CHECKER = + (earlyFireHint, litmus) -> { + litmus.check( + earlyFireHint.listOptions.size() == 0, + "Invalid list options in EARLY_FIRE hint, only support key-value options."); + + Configuration conf = Configuration.fromMap(earlyFireHint.kvOptions); + ImmutableSet requiredKeys = + EarlyFireJoinHintOptions.getRequiredOptions(); + litmus.check( + requiredKeys.stream().allMatch(conf::contains), + "Invalid EARLY_FIRE hint: incomplete required option(s): {}", + requiredKeys); + + ImmutableSet supportedKeys = + EarlyFireJoinHintOptions.getSupportedOptions(); + Set supportedKeyNames = + supportedKeys.stream().map(ConfigOption::key).collect(Collectors.toSet()); + Set unknownKeys = + earlyFireHint.kvOptions.keySet().stream() + .filter(key -> !supportedKeyNames.contains(key)) + .collect(Collectors.toCollection(TreeSet::new)); + litmus.check( + unknownKeys.isEmpty(), + "Unsupported EARLY_FIRE hint option(s) {}, supported options are {}.", + unknownKeys, + new TreeSet<>(supportedKeyNames)); + litmus.check( + earlyFireHint.kvOptions.size() <= supportedKeys.size(), + "Too many EARLY_FIRE hint options {} beyond max number of supported options {}", + earlyFireHint.kvOptions.size(), + supportedKeys.size()); + + try { + // try to validate all hint options by parsing them + supportedKeys.forEach(conf::get); + } catch (IllegalArgumentException e) { + litmus.fail("Invalid EARLY_FIRE hint options: {}", e.getMessage()); + } + + Duration delay = conf.get(EarlyFireJoinHintOptions.DELAY); + litmus.check( + null != delay && delay.toMillis() > 0, + "Invalid EARLY_FIRE hint option: {} value should be at least 1 millisecond but was {}", + EarlyFireJoinHintOptions.DELAY.key(), + delay); + return true; + }; + private static final HintOptionChecker STATE_TTL_NON_EMPTY_KV_OPTION_CHECKER = (ttlHint, litmus) -> { litmus.check( diff --git a/flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/hint/JoinStrategy.java b/flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/hint/JoinStrategy.java index 0ded47cb22230e..d9e3acff7a248b 100644 --- a/flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/hint/JoinStrategy.java +++ b/flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/hint/JoinStrategy.java @@ -50,6 +50,12 @@ public enum JoinStrategy { /** Instructs the optimizer to use lookup join strategy. Only accept key-value hint options. */ LOOKUP("LOOKUP"), + /** + * Instructs an outer interval join to emit unmatched outer rows with null padding after a + * configurable delay. Only accept key-value hint options. + */ + EARLY_FIRE("EARLY_FIRE"), + /** * Instructs the optimizer to use multi-way join strategy for streaming queries. This hint * allows specifying multiple tables to be joined together in a single {@link @@ -89,6 +95,7 @@ public static boolean validOptions(String hintName, List options) { case NEST_LOOP: return options.size() > 0; case LOOKUP: + case EARLY_FIRE: return null == options || options.size() == 0; case MULTI_JOIN: return options.size() > 0; @@ -101,4 +108,10 @@ public static boolean isLookupHint(String hintName) { return isJoinStrategy(formalizedHintName) && JoinStrategy.valueOf(formalizedHintName) == LOOKUP; } + + public static boolean isEarlyFireHint(String hintName) { + String formalizedHintName = hintName.toUpperCase(Locale.ROOT); + return isJoinStrategy(formalizedHintName) + && JoinStrategy.valueOf(formalizedHintName) == EARLY_FIRE; + } } diff --git a/flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/plan/optimize/QueryHintsResolver.java b/flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/plan/optimize/QueryHintsResolver.java index b288f111e30cc4..b153ef2b885514 100644 --- a/flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/plan/optimize/QueryHintsResolver.java +++ b/flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/plan/optimize/QueryHintsResolver.java @@ -146,6 +146,13 @@ private List validateAndGetNewHints( updateInfoForOptionCheck(hint.hintName, rightName); newHints.add(hint); } + } else if (JoinStrategy.isEarlyFireHint(hint.hintName)) { + // EARLY_FIRE carries only key-value options and is not bound to a specific input + // side, so it is passed through unchanged once its options are validated by the + // hint option checker. + allHints.add(trimInheritPath(hint)); + validHints.add(trimInheritPath(hint)); + newHints.add(hint); } else if (JoinStrategy.isJoinStrategy(hint.hintName)) { allHints.add(trimInheritPath(hint)); // add options about this hint for finally checking diff --git a/flink-table/flink-table-planner/src/test/java/org/apache/flink/table/planner/plan/hints/batch/JoinHintTestBase.java b/flink-table/flink-table-planner/src/test/java/org/apache/flink/table/planner/plan/hints/batch/JoinHintTestBase.java index 24ae0e4025d08d..217e3c2b8af7e1 100644 --- a/flink-table/flink-table-planner/src/test/java/org/apache/flink/table/planner/plan/hints/batch/JoinHintTestBase.java +++ b/flink-table/flink-table-planner/src/test/java/org/apache/flink/table/planner/plan/hints/batch/JoinHintTestBase.java @@ -61,8 +61,9 @@ public abstract class JoinHintTestBase extends TableTestBase { private final List allJoinHintNames = Lists.newArrayList(JoinStrategy.values()).stream() - // LOOKUP hint has different kv-options against other join hints - .filter(hint -> hint != JoinStrategy.LOOKUP) + // LOOKUP and EARLY_FIRE hints only support key-value options, unlike the + // list-option join hints exercised here + .filter(hint -> hint != JoinStrategy.LOOKUP && hint != JoinStrategy.EARLY_FIRE) .map(JoinStrategy::getJoinHintName) .collect(Collectors.toList()); diff --git a/flink-table/flink-table-planner/src/test/java/org/apache/flink/table/planner/plan/hints/stream/EarlyFireJoinHintTest.java b/flink-table/flink-table-planner/src/test/java/org/apache/flink/table/planner/plan/hints/stream/EarlyFireJoinHintTest.java new file mode 100644 index 00000000000000..447c198eef22ed --- /dev/null +++ b/flink-table/flink-table-planner/src/test/java/org/apache/flink/table/planner/plan/hints/stream/EarlyFireJoinHintTest.java @@ -0,0 +1,153 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.flink.table.planner.plan.hints.stream; + +import org.apache.flink.table.api.ExplainDetail; +import org.apache.flink.table.api.TableConfig; +import org.apache.flink.table.planner.utils.PlanKind; +import org.apache.flink.table.planner.utils.StreamTableTestUtil; +import org.apache.flink.table.planner.utils.TableTestBase; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +import scala.Enumeration; + +import static org.assertj.core.api.Assertions.assertThatThrownBy; + +/** Test for the EARLY_FIRE join hint surface and option validation. */ +class EarlyFireJoinHintTest extends TableTestBase { + + protected StreamTableTestUtil util; + + @BeforeEach + void before() { + util = streamTestUtil(TableConfig.getDefault()); + util.tableEnv() + .executeSql( + "CREATE TABLE MyTable (\n" + + " a INT,\n" + + " b VARCHAR,\n" + + " c BIGINT,\n" + + " proctime AS PROCTIME(),\n" + + " rowtime TIMESTAMP(3),\n" + + " WATERMARK FOR rowtime AS rowtime\n" + + ") WITH (\n" + + " 'connector' = 'values',\n" + + " 'bounded' = 'false'\n" + + ")"); + util.tableEnv() + .executeSql( + "CREATE TABLE MyTable2 (\n" + + " a INT,\n" + + " b VARCHAR,\n" + + " c BIGINT,\n" + + " proctime AS PROCTIME(),\n" + + " rowtime TIMESTAMP(3),\n" + + " WATERMARK FOR rowtime AS rowtime\n" + + ") WITH (\n" + + " 'connector' = 'values',\n" + + " 'bounded' = 'false'\n" + + ")"); + } + + @Test + void testEarlyFireMissingDelay() { + String sql = + "SELECT /*+ EARLY_FIRE('time-mode'='rowtime') */ t1.a, t2.b\n" + + "FROM MyTable t1 LEFT OUTER JOIN MyTable2 t2 ON\n" + + " t1.a = t2.a AND\n" + + " t1.rowtime BETWEEN t2.rowtime - INTERVAL '10' SECOND AND t2.rowtime + INTERVAL '1' HOUR"; + assertThatThrownBy(() -> verify(sql)).hasMessageContaining("incomplete required option(s)"); + } + + @Test + void testEarlyFireNonPositiveDelay() { + String sql = + "SELECT /*+ EARLY_FIRE('delay'='0s') */ t1.a, t2.b\n" + + "FROM MyTable t1 LEFT OUTER JOIN MyTable2 t2 ON\n" + + " t1.a = t2.a AND\n" + + " t1.rowtime BETWEEN t2.rowtime - INTERVAL '10' SECOND AND t2.rowtime + INTERVAL '1' HOUR"; + assertThatThrownBy(() -> verify(sql)) + .hasMessageContaining("value should be at least 1 millisecond"); + } + + @Test + void testEarlyFireSubMillisecondDelay() { + String sql = + "SELECT /*+ EARLY_FIRE('delay'='1ns') */ t1.a, t2.b\n" + + "FROM MyTable t1 LEFT OUTER JOIN MyTable2 t2 ON\n" + + " t1.a = t2.a AND\n" + + " t1.rowtime BETWEEN t2.rowtime - INTERVAL '10' SECOND AND t2.rowtime + INTERVAL '1' HOUR"; + assertThatThrownBy(() -> verify(sql)) + .hasMessageContaining("value should be at least 1 millisecond"); + } + + @Test + void testEarlyFireInvalidTimeMode() { + String sql = + "SELECT /*+ EARLY_FIRE('delay'='5s', 'time-mode'='unknown') */ t1.a, t2.b\n" + + "FROM MyTable t1 LEFT OUTER JOIN MyTable2 t2 ON\n" + + " t1.a = t2.a AND\n" + + " t1.rowtime BETWEEN t2.rowtime - INTERVAL '10' SECOND AND t2.rowtime + INTERVAL '1' HOUR"; + assertThatThrownBy(() -> verify(sql)) + .hasMessageContaining("Invalid EARLY_FIRE hint options"); + } + + @Test + void testEarlyFireUnknownOption() { + String sql = + "SELECT /*+ EARLY_FIRE('delay'='5s', 'timemode'='proctime') */ t1.a, t2.b\n" + + "FROM MyTable t1 LEFT OUTER JOIN MyTable2 t2 ON\n" + + " t1.a = t2.a AND\n" + + " t1.rowtime BETWEEN t2.rowtime - INTERVAL '10' SECOND AND t2.rowtime + INTERVAL '1' HOUR"; + assertThatThrownBy(() -> verify(sql)) + .hasMessageContaining("Unsupported EARLY_FIRE hint option(s) [timemode]"); + } + + @Test + void testEarlyFireListOptionsRejected() { + String sql = + "SELECT /*+ EARLY_FIRE('5s') */ t1.a, t2.b\n" + + "FROM MyTable t1 LEFT OUTER JOIN MyTable2 t2 ON\n" + + " t1.a = t2.a AND\n" + + " t1.rowtime BETWEEN t2.rowtime - INTERVAL '10' SECOND AND t2.rowtime + INTERVAL '1' HOUR"; + assertThatThrownBy(() -> verify(sql)) + .hasMessageContaining("only support key-value options"); + } + + @Test + void testEarlyFireLowerCaseHintNamePreservesOptions() { + String sql = + "SELECT /*+ early_fire('delay'='5s', 'time-mode'='rowtime') */ t1.a, t2.b\n" + + "FROM MyTable t1 LEFT OUTER JOIN MyTable2 t2 ON\n" + + " t1.a = t2.a AND\n" + + " t1.rowtime BETWEEN t2.rowtime - INTERVAL '10' SECOND AND t2.rowtime + INTERVAL '1' HOUR"; + verify(sql); + } + + private void verify(String sql) { + util.doVerifyPlan( + sql, + new ExplainDetail[] {}, + false, + new Enumeration.Value[] {PlanKind.AST(), PlanKind.OPT_EXEC()}, + false); + } +} diff --git a/flink-table/flink-table-planner/src/test/resources/org/apache/flink/table/planner/plan/hints/stream/EarlyFireJoinHintTest.xml b/flink-table/flink-table-planner/src/test/resources/org/apache/flink/table/planner/plan/hints/stream/EarlyFireJoinHintTest.xml new file mode 100644 index 00000000000000..df5bc8675e72a6 --- /dev/null +++ b/flink-table/flink-table-planner/src/test/resources/org/apache/flink/table/planner/plan/hints/stream/EarlyFireJoinHintTest.xml @@ -0,0 +1,51 @@ + + + + + + + + + =($4, -($9, 10000:INTERVAL SECOND)), <=($4, +($9, 3600000:INTERVAL HOUR)))], joinType=[left], joinHints=[[[EARLY_FIRE inheritPath:[0] options:{delay=5s, time-mode=rowtime}]]]) + :- LogicalWatermarkAssigner(rowtime=[rowtime], watermark=[$4]) + : +- LogicalProject(a=[$0], b=[$1], c=[$2], proctime=[PROCTIME()], rowtime=[$3]) + : +- LogicalTableScan(table=[[default_catalog, default_database, MyTable]]) + +- LogicalWatermarkAssigner(rowtime=[rowtime], watermark=[$4]) + +- LogicalProject(a=[$0], b=[$1], c=[$2], proctime=[PROCTIME()], rowtime=[$3]) + +- LogicalTableScan(table=[[default_catalog, default_database, MyTable2]]) +]]> + + + = (rowtime0 - 10000:INTERVAL SECOND)) AND (rowtime <= (rowtime0 + 3600000:INTERVAL HOUR)))], select=[a, rowtime, a0, b, rowtime0]) + :- Exchange(distribution=[hash[a]]) + : +- WatermarkAssigner(rowtime=[rowtime], watermark=[rowtime]) + : +- TableSourceScan(table=[[default_catalog, default_database, MyTable, project=[a, rowtime], metadata=[]]], fields=[a, rowtime]) + +- Exchange(distribution=[hash[a]]) + +- WatermarkAssigner(rowtime=[rowtime], watermark=[rowtime]) + +- TableSourceScan(table=[[default_catalog, default_database, MyTable2, project=[a, b, rowtime], metadata=[]]], fields=[a, b, rowtime]) +]]> + + + From a8564016f2d169410d25442b6781de467e0b159d Mon Sep 17 00:00:00 2001 From: weiqingy Date: Sat, 18 Jul 2026 15:11:00 -0700 Subject: [PATCH 32/32] [FLINK-40168][table] Thread the EARLY_FIRE hint into the interval join --- .../exec/stream/StreamExecIntervalJoin.java | 25 + .../StreamPhysicalIntervalJoinRule.java | 59 ++- .../stream/StreamPhysicalIntervalJoin.scala | 13 +- .../hints/stream/EarlyFireJoinHintTest.java | 60 +++ .../hints/stream/EarlyFireJoinHintTest.xml | 70 ++- .../testEarlyFireJsonPlanRoundTrip.out | 446 ++++++++++++++++++ 6 files changed, 669 insertions(+), 4 deletions(-) create mode 100644 flink-table/flink-table-planner/src/test/resources/org/apache/flink/table/planner/plan/hints/stream/EarlyFireJoinHintTest_jsonplan/testEarlyFireJsonPlanRoundTrip.out diff --git a/flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/plan/nodes/exec/stream/StreamExecIntervalJoin.java b/flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/plan/nodes/exec/stream/StreamExecIntervalJoin.java index 2ac0af781e0c66..20b676af78562e 100644 --- a/flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/plan/nodes/exec/stream/StreamExecIntervalJoin.java +++ b/flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/plan/nodes/exec/stream/StreamExecIntervalJoin.java @@ -28,6 +28,7 @@ import org.apache.flink.streaming.api.transformations.TwoInputTransformation; import org.apache.flink.streaming.api.transformations.UnionTransformation; import org.apache.flink.table.api.TableException; +import org.apache.flink.table.api.config.EarlyFireJoinHintOptions; import org.apache.flink.table.api.config.ExecutionConfigOptions; import org.apache.flink.table.data.RowData; import org.apache.flink.table.planner.delegation.PlannerBase; @@ -59,11 +60,14 @@ import org.apache.flink.shaded.guava33.com.google.common.collect.Lists; import org.apache.flink.shaded.jackson2.com.fasterxml.jackson.annotation.JsonCreator; +import org.apache.flink.shaded.jackson2.com.fasterxml.jackson.annotation.JsonInclude; import org.apache.flink.shaded.jackson2.com.fasterxml.jackson.annotation.JsonProperty; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import javax.annotation.Nullable; + import java.util.List; /** {@link StreamExecNode} for a time interval stream join. */ @@ -91,13 +95,27 @@ public class StreamExecIntervalJoin extends ExecNodeBase public static final String INTERVAL_JOIN_TRANSFORMATION = "interval-join"; public static final String FIELD_NAME_INTERVAL_JOIN_SPEC = "intervalJoinSpec"; + public static final String FIELD_NAME_EARLY_FIRE_DELAY = "earlyFireDelay"; + public static final String FIELD_NAME_EARLY_FIRE_TIME_MODE = "earlyFireTimeMode"; @JsonProperty(FIELD_NAME_INTERVAL_JOIN_SPEC) private final IntervalJoinSpec intervalJoinSpec; + @Nullable + @JsonProperty(FIELD_NAME_EARLY_FIRE_DELAY) + @JsonInclude(JsonInclude.Include.NON_NULL) + private final Long earlyFireDelay; + + @Nullable + @JsonProperty(FIELD_NAME_EARLY_FIRE_TIME_MODE) + @JsonInclude(JsonInclude.Include.NON_NULL) + private final EarlyFireJoinHintOptions.TimeMode earlyFireTimeMode; + public StreamExecIntervalJoin( ReadableConfig tableConfig, IntervalJoinSpec intervalJoinSpec, + @Nullable Long earlyFireDelay, + @Nullable EarlyFireJoinHintOptions.TimeMode earlyFireTimeMode, InputProperty leftInputProperty, InputProperty rightInputProperty, RowType outputType, @@ -107,6 +125,8 @@ public StreamExecIntervalJoin( ExecNodeContext.newContext(StreamExecIntervalJoin.class), ExecNodeContext.newPersistedConfig(StreamExecIntervalJoin.class, tableConfig), intervalJoinSpec, + earlyFireDelay, + earlyFireTimeMode, Lists.newArrayList(leftInputProperty, rightInputProperty), outputType, description); @@ -118,12 +138,17 @@ public StreamExecIntervalJoin( @JsonProperty(FIELD_NAME_TYPE) ExecNodeContext context, @JsonProperty(FIELD_NAME_CONFIGURATION) ReadableConfig persistedConfig, @JsonProperty(FIELD_NAME_INTERVAL_JOIN_SPEC) IntervalJoinSpec intervalJoinSpec, + @Nullable @JsonProperty(FIELD_NAME_EARLY_FIRE_DELAY) Long earlyFireDelay, + @Nullable @JsonProperty(FIELD_NAME_EARLY_FIRE_TIME_MODE) + EarlyFireJoinHintOptions.TimeMode earlyFireTimeMode, @JsonProperty(FIELD_NAME_INPUT_PROPERTIES) List inputProperties, @JsonProperty(FIELD_NAME_OUTPUT_TYPE) RowType outputType, @JsonProperty(FIELD_NAME_DESCRIPTION) String description) { super(id, context, persistedConfig, inputProperties, outputType, description); Preconditions.checkArgument(inputProperties.size() == 2); this.intervalJoinSpec = Preconditions.checkNotNull(intervalJoinSpec); + this.earlyFireDelay = earlyFireDelay; + this.earlyFireTimeMode = earlyFireTimeMode; } @Override diff --git a/flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/plan/rules/physical/stream/StreamPhysicalIntervalJoinRule.java b/flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/plan/rules/physical/stream/StreamPhysicalIntervalJoinRule.java index 6354f04de07485..d7cbad27d0c5aa 100644 --- a/flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/plan/rules/physical/stream/StreamPhysicalIntervalJoinRule.java +++ b/flink-table/flink-table-planner/src/main/java/org/apache/flink/table/planner/plan/rules/physical/stream/StreamPhysicalIntervalJoinRule.java @@ -19,9 +19,13 @@ package org.apache.flink.table.planner.plan.rules.physical.stream; import org.apache.flink.api.java.tuple.Tuple2; +import org.apache.flink.configuration.Configuration; import org.apache.flink.table.api.TableException; import org.apache.flink.table.api.ValidationException; +import org.apache.flink.table.api.config.EarlyFireJoinHintOptions; +import org.apache.flink.table.api.config.EarlyFireJoinHintOptions.TimeMode; import org.apache.flink.table.planner.calcite.FlinkTypeFactory; +import org.apache.flink.table.planner.hint.JoinStrategy; import org.apache.flink.table.planner.plan.nodes.FlinkRelNode; import org.apache.flink.table.planner.plan.nodes.exec.spec.IntervalJoinSpec; import org.apache.flink.table.planner.plan.nodes.logical.FlinkLogicalJoin; @@ -32,11 +36,16 @@ import org.apache.calcite.plan.RelOptRuleCall; import org.apache.calcite.plan.RelTraitSet; import org.apache.calcite.rel.RelNode; +import org.apache.calcite.rel.hint.RelHint; import org.apache.calcite.rel.type.RelDataType; import org.apache.calcite.rex.RexNode; import org.immutables.value.Value; +import javax.annotation.Nullable; + +import java.time.Duration; import java.util.Collection; +import java.util.List; import java.util.function.Function; import java.util.stream.Collectors; @@ -133,6 +142,8 @@ public FlinkRelNode transform( RelTraitSet providedTraitSet) { Tuple2, Option> tuple2 = extractWindowBounds(join); + boolean isEventTime = tuple2.f0.get().isEventTime(); + EarlyFire earlyFire = extractEarlyFire(join.getHints(), isEventTime); return new StreamPhysicalIntervalJoin( join.getCluster(), providedTraitSet, @@ -141,7 +152,53 @@ public FlinkRelNode transform( join.getJoinType(), join.getCondition(), tuple2.f1.getOrElse(() -> join.getCluster().getRexBuilder().makeLiteral(true)), - tuple2.f0.get()); + tuple2.f0.get(), + earlyFire.delay, + earlyFire.timeMode); + } + + private static EarlyFire extractEarlyFire(List hints, boolean isEventTime) { + RelHint earlyFireHint = null; + for (RelHint hint : hints) { + if (JoinStrategy.isEarlyFireHint(hint.hintName)) { + earlyFireHint = hint; + break; + } + } + if (earlyFireHint == null) { + return new EarlyFire(null, null); + } + + Configuration conf = Configuration.fromMap(earlyFireHint.kvOptions); + Duration delay = conf.get(EarlyFireJoinHintOptions.DELAY); + TimeMode timeMode = conf.get(EarlyFireJoinHintOptions.TIME_MODE); + if (timeMode == null) { + timeMode = isEventTime ? TimeMode.ROWTIME : TimeMode.PROCTIME; + } + + if (!isEventTime && timeMode == TimeMode.ROWTIME) { + throw new ValidationException( + "EARLY_FIRE hint requested row-time triggering on a processing-time interval" + + " join. Row-time triggering requires a row-time interval join."); + } + if (isEventTime && timeMode == TimeMode.PROCTIME) { + // Processing-time triggering on an event-time interval join is not supported. + throw new TableException( + "EARLY_FIRE hint requested processing-time triggering on a row-time interval" + + " join, which is not yet supported."); + } + + return new EarlyFire(delay == null ? null : delay.toMillis(), timeMode); + } + + private static final class EarlyFire { + @Nullable private final Long delay; + @Nullable private final TimeMode timeMode; + + EarlyFire(@Nullable Long delay, @Nullable TimeMode timeMode) { + this.delay = delay; + this.timeMode = timeMode; + } } /** Configuration for {@link StreamPhysicalIntervalJoinRule}. */ diff --git a/flink-table/flink-table-planner/src/main/scala/org/apache/flink/table/planner/plan/nodes/physical/stream/StreamPhysicalIntervalJoin.scala b/flink-table/flink-table-planner/src/main/scala/org/apache/flink/table/planner/plan/nodes/physical/stream/StreamPhysicalIntervalJoin.scala index 4916d653b2e236..d3401783989d9f 100644 --- a/flink-table/flink-table-planner/src/main/scala/org/apache/flink/table/planner/plan/nodes/physical/stream/StreamPhysicalIntervalJoin.scala +++ b/flink-table/flink-table-planner/src/main/scala/org/apache/flink/table/planner/plan/nodes/physical/stream/StreamPhysicalIntervalJoin.scala @@ -18,6 +18,7 @@ package org.apache.flink.table.planner.plan.nodes.physical.stream import org.apache.flink.table.api.TableException +import org.apache.flink.table.api.config.EarlyFireJoinHintOptions.TimeMode import org.apache.flink.table.planner.calcite.FlinkTypeFactory import org.apache.flink.table.planner.plan.nodes.exec.{ExecNode, InputProperty} import org.apache.flink.table.planner.plan.nodes.exec.spec.IntervalJoinSpec @@ -45,7 +46,9 @@ class StreamPhysicalIntervalJoin( val originalCondition: RexNode, // remaining join condition contains all of join condition except window bounds remainingCondition: RexNode, - windowBounds: WindowBounds) + windowBounds: WindowBounds, + earlyFireDelay: java.lang.Long, + earlyFireTimeMode: TimeMode) extends CommonPhysicalJoin(cluster, traitSet, leftRel, rightRel, remainingCondition, joinType) with StreamPhysicalRel { @@ -76,7 +79,9 @@ class StreamPhysicalIntervalJoin( joinType, originalCondition, conditionExpr, - windowBounds) + windowBounds, + earlyFireDelay, + earlyFireTimeMode) } override def explainTerms(pw: RelWriter): RelWriter = { @@ -98,12 +103,16 @@ class StreamPhysicalIntervalJoin( preferExpressionFormat(pw), pw.getDetailLevel)) .item("select", getRowType.getFieldNames.mkString(", ")) + .itemIf("earlyFireDelay", earlyFireDelay, earlyFireDelay != null) + .itemIf("earlyFireTimeMode", earlyFireTimeMode, earlyFireTimeMode != null) } override def translateToExecNode(): ExecNode[_] = { new StreamExecIntervalJoin( unwrapTableConfig(this), new IntervalJoinSpec(joinSpec, windowBounds), + earlyFireDelay, + earlyFireTimeMode, InputProperty.DEFAULT, InputProperty.DEFAULT, FlinkTypeFactory.toLogicalRowType(getRowType), diff --git a/flink-table/flink-table-planner/src/test/java/org/apache/flink/table/planner/plan/hints/stream/EarlyFireJoinHintTest.java b/flink-table/flink-table-planner/src/test/java/org/apache/flink/table/planner/plan/hints/stream/EarlyFireJoinHintTest.java index 447c198eef22ed..88aac40078f8e2 100644 --- a/flink-table/flink-table-planner/src/test/java/org/apache/flink/table/planner/plan/hints/stream/EarlyFireJoinHintTest.java +++ b/flink-table/flink-table-planner/src/test/java/org/apache/flink/table/planner/plan/hints/stream/EarlyFireJoinHintTest.java @@ -65,6 +65,14 @@ void before() { + " 'connector' = 'values',\n" + " 'bounded' = 'false'\n" + ")"); + util.tableEnv() + .executeSql( + "CREATE TABLE MySink (\n" + + " a INT,\n" + + " b VARCHAR\n" + + ") WITH (\n" + + " 'connector' = 'values'\n" + + ")"); } @Test @@ -142,6 +150,58 @@ void testEarlyFireLowerCaseHintNamePreservesOptions() { verify(sql); } + @Test + void testEarlyFireOnRowTimeLeftOuterJoin() { + String sql = + "SELECT /*+ EARLY_FIRE('delay'='5s') */ t1.a, t2.b\n" + + "FROM MyTable t1 LEFT OUTER JOIN MyTable2 t2 ON\n" + + " t1.a = t2.a AND\n" + + " t1.rowtime BETWEEN t2.rowtime - INTERVAL '10' SECOND AND t2.rowtime + INTERVAL '1' HOUR"; + verify(sql); + } + + @Test + void testEarlyFireRowTimeOnProcTimeJoin() { + String sql = + "SELECT /*+ EARLY_FIRE('delay'='5s', 'time-mode'='rowtime') */ t1.a, t2.b\n" + + "FROM MyTable t1 LEFT OUTER JOIN MyTable2 t2 ON\n" + + " t1.a = t2.a AND\n" + + " t1.proctime BETWEEN t2.proctime - INTERVAL '1' HOUR AND t2.proctime + INTERVAL '1' HOUR"; + assertThatThrownBy(() -> verify(sql)) + .hasStackTraceContaining("requires a row-time interval join"); + } + + @Test + void testEarlyFireProcTimeOnRowTimeJoin() { + String sql = + "SELECT /*+ EARLY_FIRE('delay'='5s', 'time-mode'='proctime') */ t1.a, t2.b\n" + + "FROM MyTable t1 LEFT OUTER JOIN MyTable2 t2 ON\n" + + " t1.a = t2.a AND\n" + + " t1.rowtime BETWEEN t2.rowtime - INTERVAL '10' SECOND AND t2.rowtime + INTERVAL '1' HOUR"; + assertThatThrownBy(() -> verify(sql)).hasStackTraceContaining("not yet supported"); + } + + @Test + void testEarlyFireOnProcTimeLeftOuterJoin() { + String sql = + "SELECT /*+ EARLY_FIRE('delay'='5s') */ t1.a, t2.b\n" + + "FROM MyTable t1 LEFT OUTER JOIN MyTable2 t2 ON\n" + + " t1.a = t2.a AND\n" + + " t1.proctime BETWEEN t2.proctime - INTERVAL '1' HOUR AND t2.proctime + INTERVAL '1' HOUR"; + verify(sql); + } + + @Test + void testEarlyFireJsonPlanRoundTrip() { + String insert = + "INSERT INTO MySink\n" + + "SELECT /*+ EARLY_FIRE('delay'='5s') */ t1.a, t2.b\n" + + "FROM MyTable t1 LEFT OUTER JOIN MyTable2 t2 ON\n" + + " t1.a = t2.a AND\n" + + " t1.rowtime BETWEEN t2.rowtime - INTERVAL '10' SECOND AND t2.rowtime + INTERVAL '1' HOUR"; + util.verifyJsonPlan(insert); + } + private void verify(String sql) { util.doVerifyPlan( sql, diff --git a/flink-table/flink-table-planner/src/test/resources/org/apache/flink/table/planner/plan/hints/stream/EarlyFireJoinHintTest.xml b/flink-table/flink-table-planner/src/test/resources/org/apache/flink/table/planner/plan/hints/stream/EarlyFireJoinHintTest.xml index df5bc8675e72a6..3df60f3cb8d756 100644 --- a/flink-table/flink-table-planner/src/test/resources/org/apache/flink/table/planner/plan/hints/stream/EarlyFireJoinHintTest.xml +++ b/flink-table/flink-table-planner/src/test/resources/org/apache/flink/table/planner/plan/hints/stream/EarlyFireJoinHintTest.xml @@ -38,7 +38,75 @@ LogicalProject(a=[$0], b=[$6]) = (rowtime0 - 10000:INTERVAL SECOND)) AND (rowtime <= (rowtime0 + 3600000:INTERVAL HOUR)))], select=[a, rowtime, a0, b, rowtime0]) ++- IntervalJoin(joinType=[LeftOuterJoin], windowBounds=[isRowTime=true, leftLowerBound=-10000, leftUpperBound=3600000, leftTimeIndex=1, rightTimeIndex=2], where=[((a = a0) AND (rowtime >= (rowtime0 - 10000:INTERVAL SECOND)) AND (rowtime <= (rowtime0 + 3600000:INTERVAL HOUR)))], select=[a, rowtime, a0, b, rowtime0], earlyFireDelay=[5000], earlyFireTimeMode=[ROWTIME]) + :- Exchange(distribution=[hash[a]]) + : +- WatermarkAssigner(rowtime=[rowtime], watermark=[rowtime]) + : +- TableSourceScan(table=[[default_catalog, default_database, MyTable, project=[a, rowtime], metadata=[]]], fields=[a, rowtime]) + +- Exchange(distribution=[hash[a]]) + +- WatermarkAssigner(rowtime=[rowtime], watermark=[rowtime]) + +- TableSourceScan(table=[[default_catalog, default_database, MyTable2, project=[a, b, rowtime], metadata=[]]], fields=[a, b, rowtime]) +]]> + + + + + + + + =($3, -($8, 3600000:INTERVAL HOUR)), <=($3, +($8, 3600000:INTERVAL HOUR)))], joinType=[left], joinHints=[[[EARLY_FIRE inheritPath:[0] options:{delay=5s}]]]) + :- LogicalWatermarkAssigner(rowtime=[rowtime], watermark=[$4]) + : +- LogicalProject(a=[$0], b=[$1], c=[$2], proctime=[PROCTIME()], rowtime=[$3]) + : +- LogicalTableScan(table=[[default_catalog, default_database, MyTable]]) + +- LogicalWatermarkAssigner(rowtime=[rowtime], watermark=[$4]) + +- LogicalProject(a=[$0], b=[$1], c=[$2], proctime=[PROCTIME()], rowtime=[$3]) + +- LogicalTableScan(table=[[default_catalog, default_database, MyTable2]]) +]]> + + + = (proctime0 - 3600000:INTERVAL HOUR)) AND (proctime <= (proctime0 + 3600000:INTERVAL HOUR)))], select=[a, proctime, a0, b, proctime0], earlyFireDelay=[5000], earlyFireTimeMode=[PROCTIME]) + :- Exchange(distribution=[hash[a]]) + : +- Calc(select=[a, proctime]) + : +- WatermarkAssigner(rowtime=[rowtime], watermark=[rowtime]) + : +- Calc(select=[a, PROCTIME() AS proctime, rowtime]) + : +- TableSourceScan(table=[[default_catalog, default_database, MyTable, project=[a, rowtime], metadata=[]]], fields=[a, rowtime]) + +- Exchange(distribution=[hash[a]]) + +- Calc(select=[a, b, proctime]) + +- WatermarkAssigner(rowtime=[rowtime], watermark=[rowtime]) + +- Calc(select=[a, b, PROCTIME() AS proctime, rowtime]) + +- TableSourceScan(table=[[default_catalog, default_database, MyTable2, project=[a, b, rowtime], metadata=[]]], fields=[a, b, rowtime]) +]]> + + + + + + + + =($4, -($9, 10000:INTERVAL SECOND)), <=($4, +($9, 3600000:INTERVAL HOUR)))], joinType=[left], joinHints=[[[EARLY_FIRE inheritPath:[0] options:{delay=5s}]]]) + :- LogicalWatermarkAssigner(rowtime=[rowtime], watermark=[$4]) + : +- LogicalProject(a=[$0], b=[$1], c=[$2], proctime=[PROCTIME()], rowtime=[$3]) + : +- LogicalTableScan(table=[[default_catalog, default_database, MyTable]]) + +- LogicalWatermarkAssigner(rowtime=[rowtime], watermark=[$4]) + +- LogicalProject(a=[$0], b=[$1], c=[$2], proctime=[PROCTIME()], rowtime=[$3]) + +- LogicalTableScan(table=[[default_catalog, default_database, MyTable2]]) +]]> + + + = (rowtime0 - 10000:INTERVAL SECOND)) AND (rowtime <= (rowtime0 + 3600000:INTERVAL HOUR)))], select=[a, rowtime, a0, b, rowtime0], earlyFireDelay=[5000], earlyFireTimeMode=[ROWTIME]) :- Exchange(distribution=[hash[a]]) : +- WatermarkAssigner(rowtime=[rowtime], watermark=[rowtime]) : +- TableSourceScan(table=[[default_catalog, default_database, MyTable, project=[a, rowtime], metadata=[]]], fields=[a, rowtime]) diff --git a/flink-table/flink-table-planner/src/test/resources/org/apache/flink/table/planner/plan/hints/stream/EarlyFireJoinHintTest_jsonplan/testEarlyFireJsonPlanRoundTrip.out b/flink-table/flink-table-planner/src/test/resources/org/apache/flink/table/planner/plan/hints/stream/EarlyFireJoinHintTest_jsonplan/testEarlyFireJsonPlanRoundTrip.out new file mode 100644 index 00000000000000..2b98b28751eb25 --- /dev/null +++ b/flink-table/flink-table-planner/src/test/resources/org/apache/flink/table/planner/plan/hints/stream/EarlyFireJoinHintTest_jsonplan/testEarlyFireJsonPlanRoundTrip.out @@ -0,0 +1,446 @@ +{ + "flinkVersion" : "", + "nodes" : [ { + "id" : 1, + "type" : "stream-exec-table-source-scan_2", + "scanTableSource" : { + "table" : { + "identifier" : "`default_catalog`.`default_database`.`MyTable`", + "resolvedTable" : { + "schema" : { + "columns" : [ { + "name" : "a", + "dataType" : "INT" + }, { + "name" : "b", + "dataType" : "VARCHAR(2147483647)" + }, { + "name" : "c", + "dataType" : "BIGINT" + }, { + "name" : "proctime", + "kind" : "COMPUTED", + "expression" : { + "rexNode" : { + "kind" : "CALL", + "internalName" : "$PROCTIME$1", + "type" : { + "type" : "TIMESTAMP_WITH_LOCAL_TIME_ZONE", + "nullable" : false, + "precision" : 3, + "kind" : "PROCTIME" + } + }, + "serializableString" : "PROCTIME()" + } + }, { + "name" : "rowtime", + "dataType" : { + "type" : "TIMESTAMP_WITHOUT_TIME_ZONE", + "precision" : 3, + "kind" : "ROWTIME" + } + } ], + "watermarkSpecs" : [ { + "rowtimeAttribute" : "rowtime", + "expression" : { + "rexNode" : { + "kind" : "INPUT_REF", + "inputIndex" : 4, + "type" : "TIMESTAMP(3)" + }, + "serializableString" : "`rowtime`" + } + } ] + }, + "options" : { + "bounded" : "false", + "connector" : "values" + } + } + }, + "abilities" : [ { + "type" : "ProjectPushDown", + "projectedFields" : [ [ 0 ], [ 3 ] ], + "producedType" : "ROW<`a` INT, `rowtime` TIMESTAMP(3)> NOT NULL" + }, { + "type" : "ReadingMetadata", + "metadataKeys" : [ ], + "producedType" : "ROW<`a` INT, `rowtime` TIMESTAMP(3)> NOT NULL" + } ] + }, + "outputType" : "ROW<`a` INT, `rowtime` TIMESTAMP(3)>", + "description" : "TableSourceScan(table=[[default_catalog, default_database, MyTable, project=[a, rowtime], metadata=[]]], fields=[a, rowtime])" + }, { + "id" : 2, + "type" : "stream-exec-watermark-assigner_1", + "watermarkExpr" : { + "kind" : "INPUT_REF", + "inputIndex" : 1, + "type" : "TIMESTAMP(3)" + }, + "rowtimeFieldIndex" : 1, + "inputProperties" : [ { + "requiredDistribution" : { + "type" : "UNKNOWN" + }, + "damBehavior" : "PIPELINED", + "priority" : 0 + } ], + "outputType" : { + "type" : "ROW", + "fields" : [ { + "name" : "a", + "fieldType" : "INT" + }, { + "name" : "rowtime", + "fieldType" : { + "type" : "TIMESTAMP_WITHOUT_TIME_ZONE", + "precision" : 3, + "kind" : "ROWTIME" + } + } ] + }, + "description" : "WatermarkAssigner(rowtime=[rowtime], watermark=[rowtime])" + }, { + "id" : 3, + "type" : "stream-exec-exchange_1", + "inputProperties" : [ { + "requiredDistribution" : { + "type" : "HASH", + "keys" : [ 0 ] + }, + "damBehavior" : "PIPELINED", + "priority" : 0 + } ], + "outputType" : { + "type" : "ROW", + "fields" : [ { + "name" : "a", + "fieldType" : "INT" + }, { + "name" : "rowtime", + "fieldType" : { + "type" : "TIMESTAMP_WITHOUT_TIME_ZONE", + "precision" : 3, + "kind" : "ROWTIME" + } + } ] + }, + "description" : "Exchange(distribution=[hash[a]])" + }, { + "id" : 4, + "type" : "stream-exec-table-source-scan_2", + "scanTableSource" : { + "table" : { + "identifier" : "`default_catalog`.`default_database`.`MyTable2`", + "resolvedTable" : { + "schema" : { + "columns" : [ { + "name" : "a", + "dataType" : "INT" + }, { + "name" : "b", + "dataType" : "VARCHAR(2147483647)" + }, { + "name" : "c", + "dataType" : "BIGINT" + }, { + "name" : "proctime", + "kind" : "COMPUTED", + "expression" : { + "rexNode" : { + "kind" : "CALL", + "internalName" : "$PROCTIME$1", + "type" : { + "type" : "TIMESTAMP_WITH_LOCAL_TIME_ZONE", + "nullable" : false, + "precision" : 3, + "kind" : "PROCTIME" + } + }, + "serializableString" : "PROCTIME()" + } + }, { + "name" : "rowtime", + "dataType" : { + "type" : "TIMESTAMP_WITHOUT_TIME_ZONE", + "precision" : 3, + "kind" : "ROWTIME" + } + } ], + "watermarkSpecs" : [ { + "rowtimeAttribute" : "rowtime", + "expression" : { + "rexNode" : { + "kind" : "INPUT_REF", + "inputIndex" : 4, + "type" : "TIMESTAMP(3)" + }, + "serializableString" : "`rowtime`" + } + } ] + }, + "options" : { + "bounded" : "false", + "connector" : "values" + } + } + }, + "abilities" : [ { + "type" : "ProjectPushDown", + "projectedFields" : [ [ 0 ], [ 1 ], [ 3 ] ], + "producedType" : "ROW<`a` INT, `b` VARCHAR(2147483647), `rowtime` TIMESTAMP(3)> NOT NULL" + }, { + "type" : "ReadingMetadata", + "metadataKeys" : [ ], + "producedType" : "ROW<`a` INT, `b` VARCHAR(2147483647), `rowtime` TIMESTAMP(3)> NOT NULL" + } ] + }, + "outputType" : "ROW<`a` INT, `b` VARCHAR(2147483647), `rowtime` TIMESTAMP(3)>", + "description" : "TableSourceScan(table=[[default_catalog, default_database, MyTable2, project=[a, b, rowtime], metadata=[]]], fields=[a, b, rowtime])" + }, { + "id" : 5, + "type" : "stream-exec-watermark-assigner_1", + "watermarkExpr" : { + "kind" : "INPUT_REF", + "inputIndex" : 2, + "type" : "TIMESTAMP(3)" + }, + "rowtimeFieldIndex" : 2, + "inputProperties" : [ { + "requiredDistribution" : { + "type" : "UNKNOWN" + }, + "damBehavior" : "PIPELINED", + "priority" : 0 + } ], + "outputType" : { + "type" : "ROW", + "fields" : [ { + "name" : "a", + "fieldType" : "INT" + }, { + "name" : "b", + "fieldType" : "VARCHAR(2147483647)" + }, { + "name" : "rowtime", + "fieldType" : { + "type" : "TIMESTAMP_WITHOUT_TIME_ZONE", + "precision" : 3, + "kind" : "ROWTIME" + } + } ] + }, + "description" : "WatermarkAssigner(rowtime=[rowtime], watermark=[rowtime])" + }, { + "id" : 6, + "type" : "stream-exec-exchange_1", + "inputProperties" : [ { + "requiredDistribution" : { + "type" : "HASH", + "keys" : [ 0 ] + }, + "damBehavior" : "PIPELINED", + "priority" : 0 + } ], + "outputType" : { + "type" : "ROW", + "fields" : [ { + "name" : "a", + "fieldType" : "INT" + }, { + "name" : "b", + "fieldType" : "VARCHAR(2147483647)" + }, { + "name" : "rowtime", + "fieldType" : { + "type" : "TIMESTAMP_WITHOUT_TIME_ZONE", + "precision" : 3, + "kind" : "ROWTIME" + } + } ] + }, + "description" : "Exchange(distribution=[hash[a]])" + }, { + "id" : 7, + "type" : "stream-exec-interval-join_1", + "intervalJoinSpec" : { + "joinSpec" : { + "joinType" : "LEFT", + "leftKeys" : [ 0 ], + "rightKeys" : [ 0 ], + "filterNulls" : [ true ], + "nonEquiCondition" : null + }, + "windowBounds" : { + "isEventTime" : true, + "leftLowerBound" : -10000, + "leftUpperBound" : 3600000, + "leftTimeIndex" : 1, + "rightTimeIndex" : 2 + } + }, + "earlyFireDelay" : 5000, + "earlyFireTimeMode" : "ROWTIME", + "inputProperties" : [ { + "requiredDistribution" : { + "type" : "UNKNOWN" + }, + "damBehavior" : "PIPELINED", + "priority" : 0 + }, { + "requiredDistribution" : { + "type" : "UNKNOWN" + }, + "damBehavior" : "PIPELINED", + "priority" : 0 + } ], + "outputType" : { + "type" : "ROW", + "fields" : [ { + "name" : "a", + "fieldType" : "INT" + }, { + "name" : "rowtime", + "fieldType" : { + "type" : "TIMESTAMP_WITHOUT_TIME_ZONE", + "precision" : 3, + "kind" : "ROWTIME" + } + }, { + "name" : "a0", + "fieldType" : "INT" + }, { + "name" : "b", + "fieldType" : "VARCHAR(2147483647)" + }, { + "name" : "rowtime0", + "fieldType" : { + "type" : "TIMESTAMP_WITHOUT_TIME_ZONE", + "precision" : 3, + "kind" : "ROWTIME" + } + } ] + }, + "description" : "IntervalJoin(joinType=[LeftOuterJoin], windowBounds=[isRowTime=true, leftLowerBound=-10000, leftUpperBound=3600000, leftTimeIndex=1, rightTimeIndex=2], where=[((a = a0) AND (rowtime >= (rowtime0 - 10000:INTERVAL SECOND)) AND (rowtime <= (rowtime0 + 3600000:INTERVAL HOUR)))], select=[a, rowtime, a0, b, rowtime0], earlyFireDelay=[5000], earlyFireTimeMode=[ROWTIME])" + }, { + "id" : 8, + "type" : "stream-exec-calc_1", + "projection" : [ { + "kind" : "INPUT_REF", + "inputIndex" : 0, + "type" : "INT" + }, { + "kind" : "INPUT_REF", + "inputIndex" : 3, + "type" : "VARCHAR(2147483647)" + } ], + "condition" : null, + "inputProperties" : [ { + "requiredDistribution" : { + "type" : "UNKNOWN" + }, + "damBehavior" : "PIPELINED", + "priority" : 0 + } ], + "outputType" : "ROW<`a` INT, `b` VARCHAR(2147483647)>", + "description" : "Calc(select=[a, b])" + }, { + "id" : 9, + "type" : "stream-exec-sink_2", + "configuration" : { + "table.exec.sink.keyed-shuffle" : "AUTO", + "table.exec.sink.not-null-enforcer" : "ERROR", + "table.exec.sink.rowtime-inserter" : "ENABLED", + "table.exec.sink.type-length-enforcer" : "IGNORE", + "table.exec.sink.upsert-materialize" : "AUTO" + }, + "dynamicTableSink" : { + "table" : { + "identifier" : "`default_catalog`.`default_database`.`MySink`", + "resolvedTable" : { + "schema" : { + "columns" : [ { + "name" : "a", + "dataType" : "INT" + }, { + "name" : "b", + "dataType" : "VARCHAR(2147483647)" + } ] + }, + "options" : { + "connector" : "values" + } + } + } + }, + "inputChangelogMode" : [ "INSERT" ], + "inputProperties" : [ { + "requiredDistribution" : { + "type" : "UNKNOWN" + }, + "damBehavior" : "PIPELINED", + "priority" : 0 + } ], + "outputType" : "ROW<`a` INT, `b` VARCHAR(2147483647)>", + "description" : "Sink(table=[default_catalog.default_database.MySink], fields=[a, b])" + } ], + "edges" : [ { + "source" : 1, + "target" : 2, + "shuffle" : { + "type" : "FORWARD" + }, + "shuffleMode" : "PIPELINED" + }, { + "source" : 2, + "target" : 3, + "shuffle" : { + "type" : "FORWARD" + }, + "shuffleMode" : "PIPELINED" + }, { + "source" : 4, + "target" : 5, + "shuffle" : { + "type" : "FORWARD" + }, + "shuffleMode" : "PIPELINED" + }, { + "source" : 5, + "target" : 6, + "shuffle" : { + "type" : "FORWARD" + }, + "shuffleMode" : "PIPELINED" + }, { + "source" : 3, + "target" : 7, + "shuffle" : { + "type" : "FORWARD" + }, + "shuffleMode" : "PIPELINED" + }, { + "source" : 6, + "target" : 7, + "shuffle" : { + "type" : "FORWARD" + }, + "shuffleMode" : "PIPELINED" + }, { + "source" : 7, + "target" : 8, + "shuffle" : { + "type" : "FORWARD" + }, + "shuffleMode" : "PIPELINED" + }, { + "source" : 8, + "target" : 9, + "shuffle" : { + "type" : "FORWARD" + }, + "shuffleMode" : "PIPELINED" + } ] +} \ No newline at end of file