Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
74 commits
Select commit Hold shift + click to select a range
6bdaa5e
[FLINK-40045][runtime-web] Upgrade d3-flame-graph to v5 (#28601)
spuru9 Jul 7, 2026
0b16dd3
[FLINK-40032][runtime-web] Migrate web-dashboard eslint to v9 (flat c…
spuru9 Jul 2, 2026
20216e4
[FLINK-39715][table] Sync SQL and table api behavior for queries with…
snuyanzin Jul 7, 2026
eafba3b
[FLINK-36334][tests] Enable TraversableSerializerUpgradeTest
SteveStevenpoor Jul 7, 2026
ba41c1f
[FLINK-40039][table] Fix `CTAS`/`RTAS` when used with set-semantic PTFs
raminqaf Jul 7, 2026
3e3e270
[FLINK-39923][state] Fix RocksDB Statistics native memory leak (#28489)
leekeiabstraction Jul 7, 2026
a1dcc9d
[FLINK-40090][docs] Modernize cryptography export notice in distribut…
MartijnVisser Jul 8, 2026
f584601
[FLINK-40096][table] Migrate `EXPLAIN` `CTAS`/`RTAS` Explain tests to…
raminqaf Jul 9, 2026
7f770b8
[FLINK-40076][tests] Fix race in RescaleTimelineITCase.testRecordNonT…
MartijnVisser Jul 5, 2026
4aff729
[hotfix] Report END_OF_INPUT from multiple-input processor when all i…
rkhachatryan Jun 29, 2026
c09a21c
[FLINK-39520][network] Decouple LocalInputChannel recovery wiring fro…
1996fanrui May 21, 2026
0076de5
[FLINK-39520][checkpoint] Extract AbstractInputChannelRecoveredStateH…
1996fanrui Jul 5, 2026
ed2a5d4
[FLINK-39520][network] Add InputGate#getChannel(InputChannelInfo)
1996fanrui Jul 5, 2026
8cd1c0e
[FLINK-39520][network] Additive logging overload; widen releaseAllRes…
1996fanrui Jul 5, 2026
3c1e1d9
[FLINK-40084][build] maven-shade-plugin does not respect multi releas…
snuyanzin Jul 9, 2026
1ebd43c
[FLINK-40099] Fix flaky YARNSessionFIFOSecuredITCase by verifying Ker…
raminqaf Jul 8, 2026
f9d81b2
[FLINK-39583][table-planner] Normalize Calcite correl variables for m…
ferenc-csaky Jul 9, 2026
913207b
[FLINK-39191][runtime-web] Upgrade monaco-editor to 0.55.1 (#27745)
gkomlossi Jul 9, 2026
8b7ebca
[FLINK-40112][table-planner] Report changelog mode mismatch instead o…
gustavodemorais Jul 10, 2026
4732a52
[FLINK-40111][table-planner] Fall back to retract for a keyless sink …
gustavodemorais Jul 10, 2026
4afea38
[FLINK-39521][test] Temporarily remove during-recovery flag from ITCa…
1996fanrui Jul 5, 2026
6265c89
[FLINK-39521][network] BufferManager: gate credit notification behind…
1996fanrui Jul 5, 2026
f615ff7
[FLINK-39521][network] Add RecoverableInputChannel contract and recov…
1996fanrui Jul 5, 2026
5a2151f
[FLINK-39521][network] LocalInputChannel: push-based recovery state
1996fanrui Jul 5, 2026
9cb272e
[FLINK-39521][network] RemoteInputChannel: push-based recovery state
1996fanrui Jul 5, 2026
e480c74
[FLINK-39521][network] Convert recovered channels via the push interf…
1996fanrui Jul 5, 2026
bf14146
[FLINK-39521][network] Propagate needsRecovery in PartitionRequest; s…
1996fanrui Jul 5, 2026
c2f0c12
[FLINK-39521][network] CheckpointedInputGate: consume EndOfFetchedCha…
1996fanrui Jul 5, 2026
1a5f868
[hotfix] Use `systemPropertyVariables` instead of `systemProperties`
snuyanzin Jul 11, 2026
b464b33
[FLINK-40109] Verify Kerberos keytab logs after the YARN application …
MartijnVisser Jul 9, 2026
bfad2e8
[FLINK-40125][ci] Add auto cancel for concurrently running jobs
snuyanzin Jul 12, 2026
9d52f18
[hotfix][runtime-web] Fix savepointPath query parameter in JarService…
spuru9 Jul 13, 2026
eaeefdd
[FLINK-34423][ci] Make `tools/ci/compile_ci.sh` not necessarily rely …
snuyanzin Jul 13, 2026
21b47b9
[FLINK-40124][ci] Do not store cache on every run if no dependency ch…
snuyanzin Jul 13, 2026
f5bb04d
[FLINK-40035][runtime-web] Add Vitest smoke tests for the web-dashboard
spuru9 Jul 2, 2026
486f529
[FLINK-39783][table] Translate LATERAL SNAPSHOT to LateralSnapshotJoi…
fhueske Jul 13, 2026
c404d7b
[FLINK-40036][tests] Support custom MockEnvironment in multi-input ha…
geeknarrator Jul 13, 2026
d8ba8aa
[FLINK-40134][ci] Bump maven-rat-plugin to 0.17
snuyanzin Jul 14, 2026
d769c08
[FLINK-40086][runtime] Adds error handling to newly added preCompleti…
XComp Jul 9, 2026
e9540ae
[FLINK-39781][table] Add LateralSnapshotJoinOperator with two-phase L…
fhueske Jul 14, 2026
edba490
[FLINK-40067][tests] Fix race in RescaleTimelineITCase.testRescaleTer…
MartijnVisser Jul 3, 2026
7f707f3
[FLINK-40095][table-planner] Fix JSON aggregation functions failing i…
xuyangzhong Jul 15, 2026
47abc18
[FLINK-40113][checkpoint] Reject restore when operators on a keyed ve…
rionmonster Jul 13, 2026
3f5129b
[FLINK-39784][table] Forbid SNAPSHOT outside a LATERAL context (#28674)
fhueske Jul 15, 2026
435062c
[FLINK-40088][tests] Tolerate HTTP-level responses in RestClientITCas…
MartijnVisser Jul 7, 2026
9b60890
[FLINK-39943][table] Fix nullability of IS JSON functions (#28741)
fhueske Jul 15, 2026
76e7898
[FLINK-37925][table] Support casting from `VARIANT` to primitive types
raminqaf Jul 15, 2026
5004b5b
[hotfix][table] Fix compilation with jdk11
snuyanzin Jul 15, 2026
96d0bfb
[FLINK-40138][tests] Drive JUnit 5 lifecycle when generating migratio…
alpinegizmo Jul 16, 2026
6027adb
[FLINK-40118][runtime-web] Use REST endpoint field instead of removed…
spuru9 Jul 16, 2026
80f0587
[FLINK-40034][runtime-web] Refresh web-dashboard lint tooling to pret…
spuru9 Jul 16, 2026
a417739
[FLINK-40153][table] Fix resolving inherited metadata columns used by…
lincoln-lil Jul 17, 2026
c830df8
[FLINK-40120][table] Persist RowData field names in RowDataSerializer…
weiqingy Jul 17, 2026
a9ae79b
[FLINK-40015] Introduce getFunctionOutput in PTF Test Harness (#28657)
autophagy Jul 17, 2026
a8835bd
[FLINK-40093][Runtime] Resume idle splits by alignment check if previ…
Efrat19 Jul 7, 2026
4b94ae6
[hotfix][ci] Add more artifacts to skip GHA
snuyanzin Jul 17, 2026
642673e
[FLINK-40157][state/ForSt] Fix MapState putAll value serialization (#…
Zakelly Jul 17, 2026
32afcef
[FLINK-40160][table] Fix casting `NaN` to `FLOAT` or `DOUBLE`
raminqaf Jul 17, 2026
44c041e
[FLINK-39522] Restructure StreamTask channel-state recovery into an a…
rkhachatryan Jul 5, 2026
2f21971
[FLINK-39522][network] Remove recovery flags and the filtering-comple…
1996fanrui Jul 5, 2026
98ab58c
[FLINK-39522] Defer task finish until recovery completes
rkhachatryan Jun 28, 2026
34bda76
[FLINK-39785][table] Honor source.sleep-* in TestValues watermark-pus…
fhueske Jul 8, 2026
c6fc527
[FLINK-39785][table] Add input-driven savepoint trigger to restore te…
fhueske Jul 15, 2026
a77d210
[FLINK-39785][table] Add LATERAL SNAPSHOT e2e and restore tests
fhueske Jul 9, 2026
f5aaf91
[FLINK-40158][table-planner] Support LATERAL SNAPSHOT join in batch m…
fhueske Jul 20, 2026
f2370b9
[FLINK-40079][table] Reject PTF calls with sys-args if they are disab…
fhueske Jul 20, 2026
baab138
[FLINK-40182][table] `ArrayToArrayCastRule` and `MapToMapAndMultisetT…
snuyanzin Jul 18, 2026
2de0eaf
[FLINK-40182][table] Optimize code generated by `CharVarCharTrimPadCa…
snuyanzin Jul 18, 2026
d1f08ab
[FLINK-40182][table] Optimize code generated by `RawToStringCastRule`
snuyanzin Jul 18, 2026
39c823a
[FLINK-40182][table] Optimize code generated by `ArrayToStringCastRule`
snuyanzin Jul 19, 2026
a0605af
[FLINK-40181][ci] Make spotless checking changes since last green bui…
snuyanzin Jul 20, 2026
36d42eb
[hotfix][ci] Add checkout step to fix Nightly trigger CI
raminqaf Jul 21, 2026
67a3291
[FLINK-38262][table] Add `CreateConnectionOperation` and converter
Shekharrajak Jul 21, 2026
4ba21a0
Add GEOGRAPHY logical type model
gkalashyan-akv May 22, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
21 changes: 17 additions & 4 deletions .github/actions/job_init/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,13 @@ inputs:
description: "Runs tools/azure-pipelines/free_disk_space.sh to remove unneeded pre-installed software from the runner (only works for jobs that run directly on the host, not in a container)."
required: false
default: "false"
outputs:
maven-cache-hit:
description: "Whether the Maven package cache was restored via an exact key match. Callers should only save a new cache when this is not 'true'."
value: ${{ steps.maven-cache-restore.outputs.cache-hit }}
maven-cache-key:
description: "The cache key computed for the Maven package cache, for use by a caller's own explicit save step (placed after Maven has actually run)."
value: ${{ steps.maven-cache-key.outputs.key }}
runs:
using: "composite"
steps:
Expand Down Expand Up @@ -105,14 +112,20 @@ runs:
echo "namespace=${ns}" >> "${GITHUB_OUTPUT}"
echo "Cache namespace: ${ns}"

- name: "Setup Maven package cache"
- name: "Compute Maven package cache key"
if: ${{ inputs.maven_repo_folder != '' }}
uses: actions/cache@v5
id: maven-cache-key
shell: bash
run: echo "key=${{ runner.os }}-ns-${{ steps.cache-ns.outputs.namespace }}-maven-${{ hashFiles('**/pom.xml') }}" >> "${GITHUB_OUTPUT}"

- name: "Restore Maven package cache"
if: ${{ inputs.maven_repo_folder != '' }}
id: maven-cache-restore
uses: actions/cache/restore@v6
with:
path: ${{ inputs.maven_repo_folder }}
key: ${{ runner.os }}-ns-${{ steps.cache-ns.outputs.namespace }}-maven-${{ hashFiles('**/pom.xml') }}-${{ github.run_id }}
key: ${{ steps.maven-cache-key.outputs.key }}
restore-keys: |
${{ runner.os }}-ns-${{ steps.cache-ns.outputs.namespace }}-maven-${{ hashFiles('**/pom.xml') }}-
${{ runner.os }}-ns-${{ steps.cache-ns.outputs.namespace }}-maven-
${{ runner.os }}-maven-

Expand Down
65 changes: 65 additions & 0 deletions .github/actions/last_workflow_run/action.yml
Original file line number Diff line number Diff line change
@@ -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 ?? '');
5 changes: 5 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -22,9 +22,14 @@ on:
push:
paths-ignore:
- 'docs/**'
- '.idea/**'
- '**.md'
- '.asf.yaml'
- '.editorconfig'
- '.git-blame-ignore-revs'
- '.gitignore'
- '.gitattributes'
- 'azure-pipelines.yml'
workflow_dispatch:

concurrency:
Expand Down
4 changes: 4 additions & 0 deletions .github/workflows/community-review.yml
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,10 @@ on:
schedule:
- cron: '00 00,08,16 * * *'

concurrency:
group: ${{ github.workflow }}
cancel-in-progress: true

# Same permission as stale Github action
permissions:
issues: write
Expand Down
4 changes: 4 additions & 0 deletions .github/workflows/docs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,10 @@ on:
- cron: '0 0 * * *' # Deploy every day
workflow_dispatch:

concurrency:
group: ${{ github.workflow }}
cancel-in-progress: true

jobs:
build-documentation:
if: github.repository == 'apache/flink'
Expand Down
29 changes: 18 additions & 11 deletions .github/workflows/nightly-trigger.yml
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,9 @@ jobs:
if: github.repository == 'apache/flink'
permissions:
actions: write
concurrency:
group: ${{ github.workflow }}-${{ matrix.branch }}
cancel-in-progress: true
strategy:
matrix:
branch:
Expand All @@ -36,6 +39,19 @@ 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"
with:
workflow_id: "nightly.yml"
branch: ${{ matrix.branch }}

- name: Trigger Workflow
uses: actions/github-script@v7
with:
Expand All @@ -52,17 +68,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,
Expand Down
4 changes: 4 additions & 0 deletions .github/workflows/nightly.yml
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,10 @@ name: "Nightly (beta)"
on:
workflow_dispatch:

concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true

permissions: read-all

jobs:
Expand Down
4 changes: 4 additions & 0 deletions .github/workflows/stale.yml
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,10 @@ on:
default: 20
type: number

concurrency:
group: ${{ github.workflow }}
cancel-in-progress: true

permissions:
issues: write
pull-requests: write
Expand Down
36 changes: 35 additions & 1 deletion .github/workflows/template.flink-ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -88,6 +88,7 @@ jobs:
persist-credentials: false

- name: "Initialize job"
id: job-init
uses: "./.github/actions/job_init"
with:
jdk_version: ${{ inputs.jdk_version }}
Expand Down Expand Up @@ -123,6 +124,15 @@ jobs:
# use minimum here because we only need these artifacts to speed up the build
retention-days: 1

# Only saves when the restore in job_init wasn't an exact hit, i.e. pom.xml actually
# changed since the last save for this namespace - avoids re-uploading an unchanged cache.
- name: "Save Maven package cache"
if: ${{ !cancelled() && steps.job-init.outputs.maven-cache-hit != 'true' }}
uses: actions/cache/save@v6
with:
path: ${{ env.MAVEN_REPO_FOLDER }}
key: ${{ steps.job-init.outputs.maven-cache-key }}

packaging:
name: "Test packaging/licensing"
needs: compile
Expand All @@ -145,6 +155,7 @@ jobs:
tools

- name: "Initialize job"
id: job-init
uses: "./.github/actions/job_init"
with:
jdk_version: ${{ inputs.jdk_version }}
Expand All @@ -166,7 +177,14 @@ jobs:
- name: "Test"
working-directory: ${{ env.CONTAINER_LOCAL_WORKING_DIR }}
run: |
${{ inputs.environment }} ./tools/ci/compile_ci.sh || exit $?
${{ inputs.environment }} ./tools/ci/compile_ci.sh -Dmaven.clean.skip=true || exit $?

- name: "Save Maven package cache"
if: ${{ !cancelled() && steps.job-init.outputs.maven-cache-hit != 'true' }}
uses: actions/cache/save@v6
with:
path: ${{ env.MAVEN_REPO_FOLDER }}
key: ${{ steps.job-init.outputs.maven-cache-key }}

test:
name: "Test (module: ${{ matrix.module }})"
Expand Down Expand Up @@ -212,6 +230,7 @@ jobs:
tools

- name: "Initialize job"
id: job-init
uses: "./.github/actions/job_init"
with:
jdk_version: ${{ inputs.jdk_version }}
Expand Down Expand Up @@ -315,6 +334,13 @@ jobs:
if: ${{ !cancelled() && (failure() || steps.docker-cache.outputs.cache-hit != 'true') }}
run: ./tools/azure-pipelines/cache_docker_images.sh save

- name: "Save Maven package cache"
if: ${{ !cancelled() && steps.job-init.outputs.maven-cache-hit != 'true' }}
uses: actions/cache/save@v6
with:
path: ${{ env.MAVEN_REPO_FOLDER }}
key: ${{ steps.job-init.outputs.maven-cache-key }}

e2e:
name: "E2E (group ${{ matrix.group }})"
needs: compile
Expand Down Expand Up @@ -353,6 +379,7 @@ jobs:
tools

- name: "Initialize job"
id: job-init
uses: "./.github/actions/job_init"
with:
jdk_version: ${{ inputs.jdk_version }}
Expand Down Expand Up @@ -446,3 +473,10 @@ jobs:
- name: "Save Docker images to Cache"
if: ${{ !cancelled() && (failure() || steps.docker-cache.outputs.cache-hit != 'true') }}
run: ./tools/azure-pipelines/cache_docker_images.sh save

- name: "Save Maven package cache"
if: ${{ !cancelled() && steps.job-init.outputs.maven-cache-hit != 'true' }}
uses: actions/cache/save@v6
with:
path: ${{ env.MAVEN_REPO_FOLDER }}
key: ${{ steps.job-init.outputs.maven-cache-key }}
31 changes: 24 additions & 7 deletions .github/workflows/template.pre-compile-checks.yml
Original file line number Diff line number Diff line change
Expand Up @@ -59,19 +59,36 @@ 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())
uses: "./.github/actions/run_mvn"
with:
maven-parameters: "org.apache.rat:apache-rat-plugin:check -N"
maven-parameters: "-T1C org.apache.rat:apache-rat-plugin:check -N"
Loading