JDK-8064560 : (tz) Support tzdata2014j
  • Type: Enhancement
  • Component: core-libs
  • Sub-Component: java.util:i18n
  • Affected Version: 9
  • Priority: P3
  • Status: Closed
  • Resolution: Fixed
  • OS: generic
  • CPU: generic
  • Submitted: 2014-11-11
  • Updated: 2016-08-26
  • Resolved: 2014-11-17
The Version table provides details related to the release that this issue/RFE will be addressed.

Unresolved : Release in which this issue/RFE will be addressed.
Resolved: Release in which this issue/RFE has been resolved.
Fixed : Release in which this issue/RFE has been fixed. The release containing this fix may be available for download as an Early Access Release or a General Availability Release.

To download the current JDK release, click here.
Other Other JDK 6 JDK 7 JDK 8 JDK 9
5.0u81Fixed 5.0u85Fixed 6u91Fixed 7u75Fixed 8u31Fixed 9 b42Fixed
Related Reports
Relates :  
Relates :  
Description
The 2014j release of the tz code and data is available.  It reflects the following changes, which were either circulated on the tz mailing list or are relatively minor technical or administrative changes:

  Changes affecting current and future time stamps

    Turks & Caicos' switch from US eastern time to UTC-4 year-round
    did not occur on 2014-11-02 at 02:00.  It's currently scheduled
    for 2015-11-01 at 02:00.  (Thanks to Chris Walton.)

  Changes affecting past time stamps

    Many pre-1989 time stamps have been corrected for Asia/Seoul and
    Asia/Pyongyang, based on sources for the Korean-language Wikipedia
    entry for time in Korea.  (Thanks to Sanghyuk Jung.)  Also, no
    longer guess that Pyongyang mimicked Seoul time after World War II,
    as this is politically implausible.

    Some more zones have been turned into links, when they differed
    from existing zones only for older time stamps.  As usual,
    these changes affect UTC offsets in pre-1970 time stamps only.
    Their old contents have been moved to the 'backzone' file.
    The affected zones are: Africa/Addis_Ababa, Africa/Asmara,
    Africa/Dar_es_Salaam, Africa/Djibouti, Africa/Kampala,
    Africa/Mogadishu, Indian/Antananarivo, Indian/Comoro, and
    Indian/Mayotte.

  Changes affecting commentary

    The commentary is less enthusiastic about Shanks as a source,
    and is more careful to distinguish UT from UTC.

Here are links to the release files:

  ftp://ftp.iana.org/tz/releases/tzcode2014j.tar.gz
  ftp://ftp.iana.org/tz/releases/tzdata2014j.tar.gz

The files are also available via HTTP as follows:

  http://www.iana.org/time-zones/repository/releases/tzcode2014j.tar.gz
  http://www.iana.org/time-zones/repository/releases/tzdata2014j.tar.gz

As usual, links to the latest release files are here:

  http://www.iana.org/time-zones/repository/tzcode-latest.tar.gz
  http://www.iana.org/time-zones/repository/tzdata-latest.tar.gz

  ftp://ftp.iana.org/tz/tzcode-latest.tar.gz
  ftp://ftp.iana.org/tz/tzdata-latest.tar.gz 
Comments
The issue is cause by the following timezone linking behavior: There is a Zone with name 'Africa/Nairobi' (defined in 'africa' tzdata file). The zone link with name 'Africa/Asmara' is defined in the same 'africa' file. This link refers to 'Africa/Nairobi'. And there is another link with name 'Africa/Asmera' defined in 'backward' tz file. It is linked to 'Africa/Asmara'. It means that 'Africa/Asmera' linked to 'Africa/Nairobi' through another link (double link chain). The current implementation of Tzdb compiler supports only direct links (link to the zone, but not to another link). The following fix solves this problem: diff -r a474ad2dbd9b make/src/classes/build/tools/tzdb/TzdbZoneRulesProvider.java --- a/make/src/classes/build/tools/tzdb/TzdbZoneRulesProvider.java Fri Nov 14 11:41:42 2014 +0000 +++ b/make/src/classes/build/tools/tzdb/TzdbZoneRulesProvider.java Fri Nov 14 17:40:25 2014 +0300 @@ -95,7 +95,17 @@ obj = zones.get(zoneId); } if (obj == null) { - throw new ZoneRulesException("Unknown time-zone ID: " + zoneId0); + // Timezone link can be located in 'backward' file and it + // can refer to another link, so we need to check for + // link one more time, before throwing an exception + String zoneIdBack = zoneId; + if (links.containsKey(zoneId)) { + zoneId = links.get(zoneId); + obj = zones.get(zoneId); + } + if (obj == null) { + throw new ZoneRulesException("Unknown time-zone ID: " + zoneIdBack); + } } } if (obj instanceof ZoneRules) {
14-11-2014

The following error was observed during compilation of tzdb.dat with latest JDK9 source: Failed: java.time.zone.ZoneRulesException: Unknown time-zone ID: Africa/Asmera java.time.zone.ZoneRulesException: Unknown time-zone ID: Africa/Asmera at build.tools.tzdb.TzdbZoneRulesProvider.getZoneRules(TzdbZoneRulesProvider.java:98) at build.tools.tzdb.TzdbZoneRulesCompiler.compile(TzdbZoneRulesCompiler.java:194) at build.tools.tzdb.TzdbZoneRulesCompiler.main(TzdbZoneRulesCompiler.java:89) make[3]: *** [/home/aefimov/Oracle/tz/2014j/jdk9/build/linux-x86_64-normal-server-release/jdk/lib/tzdb.dat] Error 1
14-11-2014