Hi Masayoshi, Volker, Thanks a lot for reviewing ! Is it OK for me to push the change into JDK9 directly ? or need another reviewer's approval ?
Many thanks Jonathan On Mon, Apr 14, 2014 at 2:03 PM, Masayoshi Okutsu < masayoshi.oku...@oracle.com> wrote: > Looks good to me. > > Thanks, > Masayoshi > > > On 4/11/2014 10:46 PM, Volker Simonis wrote: > > Hi Jonathan, > > thank you for fixing all the remaining issues. From my point of view this > change looks good now. > > @Masayoshi: can I please get a final approval from you for pushing the > change? I also want to downport this to 8u-dev but I don't think that's a > big deal as this only touches AX code. > > Thank you and best regards, > Volker > > On Thu, Apr 10, 2014 at 11:44 AM, Jonathan Lu > <luc...@linux.vnet.ibm.com>wrote: > >> Hi Volker, >> >> Thanks a lot for your comments, I've made another patch, >> >> http://cr.openjdk.java.net/~luchsh/JDK-8Masayoshi034220.v4/<http://cr.openjdk.java.net/%7Eluchsh/JDK-8034220.v4/> >> >> >> On Fri, Apr 4, 2014 at 9:22 PM, Volker Simonis >> <volker.simo...@gmail.com>wrote: >> >>> Hi Jonathan, >>> >>> sorry, but I found a few more issues: >>> >>> - please use strncpy instead of strcpy in TimeZone_md.c:798 otherwise >>> somebody could easily crash the VM by specifying a TZ with more than >>> 100 characters. >>> >> >> Right, I've fix it by using strncpy, and also updated another usage of >> strcmp(). >> >> >> >>> >>> - you can delete the lines 871-872 because the variables are actually >>> not used and you can also remove the handling for "timezone == 0" >>> because that is actually done in getGMTOffsetID() anyway. >>> >> >> Nice catch, have deleted those in latest patch. >> >> >>> >>> - could you please avoid the usage of strtok. It is not intended for >>> usage in a multithreaded environment (see for example "man strtok" on >>> AIX). strtok_r is probably overkill, but you could use for example >>> strchr. >>> >> >> I've changed it to strtok_r in this patch, >> although strtok was only used once here, it may still impact other >> threads. >> >> >>> did you check the build on Windows? >>> >> >> Yes, both patches got built on Windows. >> >> >>> >>> Thank you and best regards, >>> Volker >>> >>> >>> On Fri, Apr 4, 2014 at 10:18 AM, Jonathan Lu <luc...@linux.vnet.ibm.com> >>> wrote: >>> > Hi Volker, Masayoshi, >>> > >>> > I made another patch which fixed the problems mentioned in last mail, >>> > >>> > http://cr.openjdk.java.net/~luchsh/JDK-8034220.v3/ >>> > >>> > Could you pls help to take a look? >>> > >>> > Many thanks >>> > Jonathan >>> > >>> > >>> > >>> > On Thu, Apr 3, 2014 at 12:34 AM, Jonathan Lu < >>> luc...@linux.vnet.ibm.com> >>> > wrote: >>> >> >>> >> Hi Volker, >>> >> >>> >> >>> >> On 2014年04月02日 23:07, Volker Simonis wrote: >>> >> >>> >> Hi Jonathan, >>> >> >>> >> thanks for updating the change. Please find my comments inline: >>> >> >>> >> On Tue, Apr 1, 2014 at 4:52 PM, Jonathan Lu < >>> luc...@linux.vnet.ibm.com> >>> >> wrote: >>> >> >>> >> Hi Volker, Masayoshi, >>> >> >>> >> Thanks a lot for your review, here's the updated patch, could you pls >>> take >>> >> a >>> >> look? >>> >> >>> >> http://cr.openjdk.java.net/~luchsh/JDK-8034220.v2/ >>> >> >>> >> >>> >> On Thu, Mar 27, 2014 at 1:48 AM, Volker Simonis < >>> volker.simo...@gmail.com> >>> >> wrote: >>> >> >>> >> Hi Jonathan, >>> >> >>> >> thanks for doing this change. Please find some comments below: >>> >> >>> >> 1. please update the copyright year to 2014 in every file you touch >>> >> >>> >> Updated in new patch. >>> >> >>> >> 2. in CopyFiles.gmk you can simplify the change by joining the windows >>> >> and aix cases because on Windows OPENJDK_TARGET_OS is the same like >>> >> OPENJDK_TARGET_OS_API_DIR. So you can write: >>> >> >>> >> ifneq ($(findstring $(OPENJDK_TARGET_OS), windows aix), ) >>> >> >>> >> TZMAPPINGS_SRC := $(JDK_TOPDIR)/src/$(OPENJDK_TARGET_OS)/lib >>> >> >>> >> $(LIBDIR)/tzmappings: $(TZMAPPINGS_SRC)/tzmappings >>> >> $(call install-file) >>> >> >>> >> COPY_FILES += $(LIBDIR)/tzmappings >>> >> >>> >> endif >>> >> >>> >> I've tried that approach before, but OPENJDK_TARGET_OS_API_DIR is >>> >> 'solaris' >>> >> as I observed on my AIX box, >>> >> solaris/lib is not the directory where tzmappings was stored for AIX. >>> >> So I'm keeping this change, please fix me if I was wrong about the >>> config. >>> >> >>> >> Yes, but my point was to actually use OPENJDK_TARGET_OS for the >>> >> construction of TZMAPPINGS_SRC as shown in the code snippet above. >>> >> OPENJDK_TARGET_OS is "windows" on Windows platforms and "aix" on AIX >>> >> and that should be just enough here. >>> >> >>> >> >>> >> That's right, let me try that and also build/test on Windows >>> platform. >>> >> >>> >> >>> >> 3. regarding the changes proposed by Masayoshi: I agree that we should >>> >> put the AIX timezone mapping code in its own function, but I don't >>> >> think that getPlatformTimeZoneID() would be the right place. As far as >>> >> I understand, getPlatformTimeZoneID() is used to get a platform time >>> >> zone id if the environment variable "TZ" is not set. I don't know a >>> >> way how this could be done on AIX (@Jonathan: maybe you know?). If >>> >> there would be a way to get the time zone from some system files or >>> >> so, then we should put this code into the AIX version of >>> >> getPlatformTimeZoneID(). >>> >> >>> >> I guess we may try to use /etc/envrionment file, which is basic >>> setting >>> >> for >>> >> all processes, >>> >> see >>> >> >>> >> >>> http://publib.boulder.ibm.com/infocenter/aix/v7r1/index.jsp?topic=%2Fcom.ibm.aix.files%2Fdoc%2Faixfiles%2Fenvironment.htm >>> >> The implementation of getPlatformTimeZoneID() has been updated. >>> >> >>> >> That's good! >>> >> >>> >> But the current AIX code contributed by Jonathan, actually uses the >>> >> time zone id from the "TZ" environment variable and just maps it to a >>> >> Java compatible time zone id. So I'd suggest to refactor this code >>> >> into a function like for example "static const char* >>> >> mapPlatformToJavaTimzone(const char* tz)" and call that from >>> >> findJavaTZ_md(). I think that would make the code easier to >>> >> understand. >>> >> >>> >> Agree, and have split the code into a separate static method to do the >>> >> mapping work. >>> >> >>> >> Good. But there's still one error in findJavaTZ_md(): >>> >> >>> >> 706 #ifdef _AIX >>> >> 707 javatz = mapPlatformToJavaTimezone(java_home_dir, tz); >>> >> 708 #endif >>> >> >>> >> This should read: >>> >> >>> >> 706 #ifdef _AIX >>> >> 707 javatz = mapPlatformToJavaTimezone(java_home_dir, >>> javatz); >>> >> 708 #endif >>> >> >>> >> because in line 703 you free 'tz' via its alias 'freetz' if 'tz' came >>> >> from getPlatformTimeZoneID(). >>> >> >>> >> >>> >> Right, but with the second approach, there may be a minor memory leak >>> >> here, >>> >> as javatz was not freed before being overwritten on AIX. will post >>> another >>> >> patch on this soon. >>> >> >>> >> >>> >> With the above fixed I'll push this one we get one more review from a >>> >> reviewer (I'm currently not an official reviewer). >>> >> >>> >> Regards, >>> >> Volker >>> >> >>> >> >>> >> @Masayoshi: what do you think, would you agree with such a solution. >>> >> >>> >> 4. I agree with Masayoshi that you should use the existing >>> >> getGMTOffsetID() >>> >> >>> >> Updated in new patch to eliminate duplication. >>> >> >>> >> 5. Please notice that your change breaks all Unix builds except AIX >>> >> because of: >>> >> >>> >> 759 } >>> >> 760 tzerr: >>> >> 761 if (javatz == NULL) { >>> >> 762 time_t offset; >>> >> ... >>> >> 782 } >>> >> 783 #endif >>> >> >>> >> I think that should read: >>> >> >>> >> 759 >>> >> 760 tzerr: >>> >> 761 if (javatz == NULL) { >>> >> 762 time_t offset; >>> >> ... >>> >> 782 } >>> >> 783 #endif >>> >> 784 } >>> >> >>> >> Refactoring the code in an extra function will make that error more >>> >> evident anyway. >>> >> >>> >> But please always build at least on one different platform (i.e. >>> >> Linux) to prevent such errors in the future. >>> >> >>> >> My fault, sorry for the failure, should take no chance after any >>> manual >>> >> alteration. >>> >> >>> >> Regards, >>> >> Volker >>> >> >>> >> >>> >> On Wed, Mar 26, 2014 at 10:27 AM, Masayoshi Okutsu >>> >> <masayoshi.oku...@oracle.com> wrote: >>> >> >>> >> Hi Jonathan, >>> >> >>> >> The AIX specific code looks OK to me. But I'd suggest the code be >>> moved >>> >> to >>> >> getPlatformTimeZoneID() for AIX, which just returns NULL currently. >>> Also >>> >> there's a function for producing a fallback ID in "GMT±hh:mm", >>> >> getGMTOffsetID() which can be called in tzerr. >>> >> >>> >> Thanks, >>> >> Masayoshi >>> >> >>> >> >>> >> On 3/26/2014 3:47 PM, Jonathan Lu wrote: >>> >> >>> >> Hi ppc-aix-port-dev, core-libs-dev, >>> >> >>> >> Here's a patch for JDK-8034220, >>> >> >>> >> http://cr.openjdk.java.net/~luchsh/JDK-8034220/ >>> >> >>> >> It is trying to add the a more complete timezone mapping mechanism for >>> >> AIX >>> >> platform. >>> >> the changes are primarily based on IBM's commercial JDK code, which >>> >> includes: >>> >> >>> >> - A new timezone mapping file added under directory jdk/src/aix/lib/ >>> >> - Code to parse above config file, changed file is >>> >> src/solaris/native/java/util/TimeZone_md.c >>> >> - And also makefile change in make/CopyFiles.gmk to copy the config >>> >> file >>> >> >>> >> Could you pls help to review and give comments ? >>> >> >>> >> Cheers >>> >> - Jonathan >>> >> >>> >> Many thanks >>> >> Jonathan >>> >> >>> >> Regards >>> >> Jonathan >>> > >>> > >>> >> >> Regards >> Jonathan >> > > >