-
Notifications
You must be signed in to change notification settings - Fork 4.3k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Flink 1.17 #30197
Flink 1.17 #30197
Conversation
Checks are failing. Will not request review until checks are succeeding. If you'd like to override that behavior, comment |
b718751
to
9e4b03f
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The change looks reasonable overall 👍 My only concern is around the possible compatibility (within the same version) guarantees. PTAL
runners/flink/1.16/build.gradle
Outdated
@@ -17,14 +17,19 @@ | |||
*/ | |||
|
|||
def basePath = '..' | |||
def addedVersions = ["1.12", "1.13", "1.14", "1.15"] |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
nit: previousVersions
might be slightly more explicit
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I further simplified the build.
} | ||
|
||
@Override | ||
public void writeSnapshot(DataOutputView dataOutputView) throws IOException { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I assume this class was introduced because TypeSerializerConfigSnapshot
no longer exists. Should we rather bring the old class in to eliminate the risk (eg. restoring snapshots from the same version)?
By quickly checking the code, it mosly delegates the logic to TypeSerializerSnapshotSerializationUtil
which still exists 🤔
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Turns out that provided you preserve the TypeSerializer
the TypeSerializerSnapshot
can be changed arbitrarily. It can be used to change the TypeSerializer
as well, byt we preserve it here.
Can you please link the commits with a corresponding JIRA issue? |
Beam no longer uses JIRA to track issues, but uses github issues instead. The commit is linked with the corresponding issue. |
Hi, what is the status of this PR? I see Flink validation runner postcommit test passed. Persumably this is complete? |
Also, previously Beam aims to support 4 consecutive flink versions. If find anything hard to support Flink 1.12 (or 1.13) and 1.17 at the same time, feel free to drop the former (or do it later) |
I need to polish and validate upgrade path so this is temporarily on hold. |
* org.apache.beam.sdk.io.FileSystems} registration needed for {@link | ||
* org.apache.beam.sdk.transforms.Reshuffle} translation. | ||
*/ | ||
private final SerializablePipelineOptions pipelineOptions; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
What does this comment really mean for this class? From what I can tell, filesystem registration happens when constructing serializable pipeline options, which is not being done here.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Do we actually need to keep this as a member?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This was just moved from main sources due to the fact it needs to be customized for Flink 1.17.
The upgrade is currently broken due to https://lists.apache.org/thread/s8o8jc2k2kb41q5g0v0xmoyszg1gdcst. After decision is made about the next steps this PR can continue. |
Hi, as https://lists.apache.org/thread/s8o8jc2k2kb41q5g0v0xmoyszg1gdcst gets resolved by #30403, is this PR ready to be merged? |
Hi, unfortunately I did not have time to finish it, yet. But target is currently release 2.56.0. |
Thanks, that's awesome! |
I verified the current implementation works and can read savepoint created by 1.16 (at least with the same beam version), but I need more tests regarding upgrade from current stable release. Moreover there is issue #29816 which seems to affect the current release as well. I would like to release 'new' runner without known severe bugs, so I think this should wait for one more release. |
Unfortunately, upgrading Flink has still issues with upgrading various sources (due to Java serialization). Upgrade from 2.55.0 to 2.56.0 (in my testing Pipeline) is blocked due to incompatible change of KafkaIO.Read (added option). Having said that, upgrade from 2.56.0 Flink 1.16 to Flink 1.17 works and that is as far as we can get. We need to merge #30987 and then we would need to implement #30385 and ideally #21897. Other than that, this is ready from my part @Abacn, with follow-up #30988. |
I don't think we can do anything about that at this point. I tried adding |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks, just have a minor comment about build file
versions.collect { "${base_path}/${it}/src/${type}/java" } + ["./src/${type}/java"] | ||
} | ||
|
||
def all_versions = ['1.12', '1.13', '1.14', '1.15', '1.16', '1.17'] |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
can we get these values from gradle.properties so keep a single path maintaining the versions? Just use
def all_versions = project.flink_versions.split(',')
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yes, I've done this here 👍
flink_version = '1.12.7' | ||
// Version specific code overrides. | ||
main_source_overrides = ['./src/main/java'] | ||
test_source_overrides = ['./src/test/java'] |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
thanks for doing these refactorings
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks, just have a minor comment about build file
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thank you!
Support Flink 1.17. Closes #29939.
Thank you for your contribution! Follow this checklist to help us incorporate your contribution quickly and easily:
addresses #123
), if applicable. This will automatically add a link to the pull request in the issue. If you would like the issue to automatically close on merging the pull request, commentfixes #<ISSUE NUMBER>
instead.CHANGES.md
with noteworthy changes.See the Contributor Guide for more tips on how to make review process smoother.
To check the build health, please visit https://github.com/apache/beam/blob/master/.test-infra/BUILD_STATUS.md
GitHub Actions Tests Status (on master branch)
See CI.md for more information about GitHub Actions CI or the workflows README to see a list of phrases to trigger workflows.