Skip to content
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

HIVE-28538: Post JDK11-Fix locale-related discrepancies in test cases between local and Jenkins environments #5476

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -92,7 +92,7 @@
<test.excludes.additional/>
<!-- Plugin and Plugin Dependency Versions -->
<ant.contrib.version>1.0b3</ant.contrib.version>
<maven.test.jvm.args>-Xmx2048m -DJETTY_AVAILABLE_PROCESSORS=4</maven.test.jvm.args>
<maven.test.jvm.args>-Xmx2048m -DJETTY_AVAILABLE_PROCESSORS=4 -Duser.country=US</maven.test.jvm.args>
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I see that in the configuration of the maven-surefile-plugin we have the following:

          <environmentVariables>
            <TZ>US/Pacific</TZ>
            <LANG>en_US.UTF-8</LANG>
             ...
          </environmentVariables>

Shouldn't this be enough to guarantee that there are no discrepancies. Why do we need to set also the JVM properties?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The existing configuration in the maven-surefire-plugin indeed sets the LANG environment variable to en_US.UTF-8, which helps ensure that environment variables are set correctly within the Jenkins build environment. However, this setting does not fully address the locale discrepancies that can occur when tests are run locally on different developer machines with varying locale settings.

Environment variables can influence the locale settings for the system environment but might not comprehensively cover all locale-specific behaviors within the JVM. Passing the locale explicitly via <maven.test.jvm.args> ensures that the JVM itself runs with the specified locale, aligning both local and Jenkins environments more reliably.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Isn't the JVM picking up the default values from the respective environment variables?

The Java Virtual Machine sets the default locale during startup based on the host environment.

Are you saying that locally the environmentVariables do not work as expected?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

JVM is picking up the timezone but not the locale as in the environment we are setting the TZ
Locale influences how data is formatted and presented, such as dates and times, but does not determine the actual time.
Timezone determines the current time based on the region's offset from UTC but does not affect how dates and times are formatted

Thus the test are failing with the formatting problem of am/AM or pm/PM

<maven.checkstyle.plugin.version>2.17</maven.checkstyle.plugin.version>
<maven.build-helper.plugin.version>3.4.0</maven.build-helper.plugin.version>
<maven.eclipse.plugin.version>2.10</maven.eclipse.plugin.version>
Expand Down
Loading