On Wed, 11 May 2022 18:00:31 GMT, Gaurav Chaudhari <d...@openjdk.java.net> 
wrote:

> This fix ensures that when a lookup for a custom TZ code fails, and an 
> attempt is made to find the GMT offset in order to get the current time, 
> Daylight savings rules are applied correctly.

Thanks for contributing the fix. This issue has been reported in the past, but 
closed as will not fix (https://bugs.openjdk.java.net/browse/JDK-6992725), as 
implementing POSIX TZ fully requires a sizable amount of work for a rare 
situation. Returning a fixed offset ID with the `TZ` set to observing DST is 
thus a compromised solution. Even if the fix would return a custom zone 
observing the DST does not mean the zone is correct in winter. Having said that 
I agree that the derived fixed offset zone should reflect the *current* offset, 
as well as macOS's implementation.

src/java.base/unix/native/libjava/TimeZone_md.c line 609:

> 607:     }
> 608: 
> 609:     offset = (gmt.tm_hour - localtm.tm_hour)*3600 + (gmt.tm_min - 
> localtm.tm_min)*60;

Since it is not using `timezone` anymore, we can reverse the subtraction, i.e., 
`localtime` - `gmtime` so that the weird sign switch below can be eliminated.

test/jdk/java/util/TimeZone/CustomTzIDCheckDST.java line 2:

> 1: /*
> 2:  * Copyright (c) 2001, 2022, Oracle and/or its affiliates. All rights 
> reserved.

This is a new test case, the year should be only 2022.

test/jdk/java/util/TimeZone/CustomTzIDCheckDST.java line 27:

> 25:  * Specifically called by runCustomTzIDCheckDST.sh to check if Daylight 
> savings is
> 26:  * properly followed with a custom TZ code set through environment 
> variables.
> 27:  * */

Nit: Need a new line.

test/jdk/java/util/TimeZone/runCustomTzIDCheckDST.sh line 1:

> 1: #

I'd change this script into a java test case (using `.sh` is not recommended). 
In fact, this causes a failure invoking `javac` with `-Xmx768m` (from 
TESTVMOPTS)
There are libraries under `jdk/test/lib/` for building test jvm process and 
tools.

test/jdk/java/util/TimeZone/runCustomTzIDCheckDST.sh line 40:

> 38: 
> 39: OS=`uname -s`
> 40: case "$OS" in 

In case other than Linux/AIX, it would be helpful to emit some message that the 
test is ignored.

-------------

PR: https://git.openjdk.java.net/jdk/pull/8661

Reply via email to