Fix Flink runner tests on Java 21#39272
Conversation
1997f42 to
4b56a2b
Compare
Summary of ChangesHello, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed! This pull request addresses compatibility issues that arose when migrating Flink runner tests to Java 21. The changes primarily focus on updating JVM arguments, modernizing reflection-based environment variable manipulation to account for internal JDK changes, and improving the robustness of existing test assertions to prevent timeouts. Highlights
New Features🧠 You can now enable Memory (public preview) to help Gemini Code Assist learn from your team's feedback. This makes future code reviews more consistent and personalized to your project's style. Click here to enable Memory in your admin console. Using Gemini Code AssistThe full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips. Invoking Gemini You can request assistance from Gemini at any point by creating a comment using either
Customization To customize the Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a Limitations & Feedback Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counterproductive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for GitHub and other Google products, sign up here. Footnotes
|
There was a problem hiding this comment.
Code Review
This pull request updates FlinkSubmissionTest to correctly modify environment variables across different operating systems (Unix and Windows) by reflecting on internal JVM ProcessEnvironment maps. It also configures necessary JVM arguments for Flink tests when running on Java 17 or higher, and replaces an infinite loop in UnboundedSourceWrapperTest with a timed loop to prevent test hangs. The reviewer suggests using System.nanoTime() instead of System.currentTimeMillis() in UnboundedSourceWrapperTest to measure the timeout monotonically, avoiding issues with system clock adjustments.
Important
The consumer version of Gemini Code Assist on GitHub is being sunset. Starting June 18, 2026, new organization installations will be blocked, and all code review activity will officially cease on July 17, 2026.
For more details on the timeline and next steps, please review the Help Documentation.
| long deadlineMs = System.currentTimeMillis() + 9_000; | ||
| boolean reachedFinalizeSource = false; | ||
| while (System.currentTimeMillis() < deadlineMs) { |
There was a problem hiding this comment.
Using System.currentTimeMillis() to measure elapsed time or timeouts is an anti-pattern because it is sensitive to system clock adjustments (such as NTP synchronization or manual clock changes). It is highly recommended to use System.nanoTime() for monotonic time measurements instead.
| long deadlineMs = System.currentTimeMillis() + 9_000; | |
| boolean reachedFinalizeSource = false; | |
| while (System.currentTimeMillis() < deadlineMs) { | |
| long deadlineNs = System.nanoTime() + 9_000_000_000L; | |
| boolean reachedFinalizeSource = false; | |
| while (System.nanoTime() < deadlineNs) { |
4b56a2b to
2f31a3d
Compare
Fixes: #39252
Successful run: https://github.com/apache/beam/actions/runs/29061791187
After switching to Java 21, Flink runner tests started failing in PreCommit Java
The main problems were:
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.mdwith 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.