Locale dependency of JMH, div by 0 in ListStatistics
Aleksey Shipilev
aleksey.shipilev at oracle.com
Mon Dec 22 16:29:16 UTC 2014
Ah, I can see now, thanks!
Fixed:
http://hg.openjdk.java.net/code-tools/jmh/rev/21d5793de4c0
Good call on always printing the version, fixed as well.
-Aleksey.
On 12/22/2014 07:03 PM, Erich Schubert wrote:
> Hello Aleksey,
> I get the error message
> # Can not figure out JMH version, unable to parse the build time: Fri
> Dec 19 08:54:04 UTC 2014
>
> And I guess it expects this to be "Fre Dez ..." because I'm in German locale.
>
> If I use this pattern to format, I get
> Mo Dez 22 16:57:48 MEZ 2014
>
> It should be enough to use this:
> new SimpleDateFormat("EEE MMM dd HH:mm:ss zzz yyyy", Locale.ROOT);
>
> (Note the added Locale.ROOT!)
>
> As long as the maven build process also ensures root locale - e.g. by
> setting timestamp.locale.
>
> But IMHO the cleaner approach is to avoid any locale dependant field
> such as EEE MMM and zzz (!) in the timestamp, if you plan on parsing
> it later again.
>
> If parsing fails, it should still report the version number, even when
> the age is not available.
>
> Regards,
> Erich
>
> On Mon, Dec 22, 2014 at 4:09 PM, Aleksey Shipilev
> <aleksey.shipilev at oracle.com> wrote:
>> On 12/22/2014 05:20 PM, Aleksey Shipilev wrote:
>>>>> 1. Running JMH in a different locale prevents it from reporting its
>>>>> version number.
>>>>> I'm using the maven version (1.4) which apparently was built with C
>>>>> locale. But SimpleDateFormat defaults to using the system locale, and
>>>>> thus fails to parse the locale-depedant timestamp format that was
>>>>> used.
>>>>>
>>>>> IMHO the cleanest way is to use a non-locale timestamp, such as RFC 3339.
>>>>
>>>> https://bugs.openjdk.java.net/browse/CODETOOLS-7901226
>>
>> Um. I am trying to understand this bug. Our build emits the timestamp in
>> a preset format:
>>
>> <timestamp>${maven.build.timestamp}</timestamp>
>> <maven.build.timestamp.format>EEE MMM dd HH:mm:ss zzz
>> yyyy</maven.build.timestamp.format>
>>
>> ...and Java code picks up the timestamp in the same format:
>>
>> Date parse = new SimpleDateFormat("EEE MMM dd HH:mm:ss zzz
>> yyyy").parse(time);
>>
>> Does this mean Erich's Maven ignores maven.build.timestamp.format?
>> Erich, can you show the run log?
>>
>> Thanks,
>> -Aleksey.
>>
More information about the jmh-dev
mailing list