PING: RFR: JDK-8153073: UL: Set filesize option with k/m/g
David Holmes
david.holmes at oracle.com
Tue May 3 12:25:32 UTC 2016
Adding in the runtime team as they now own UL.
I've reviewed the change from a coding perspective - the question for
the UL owners is whether the change in semantics is appropriate:
previously the filesize was interpreted as a value in KB, whereas now,
without a suffix, it is just bytes.
Thanks,
David
On 3/05/2016 9:44 PM, Yasumasa Suenaga wrote:
> PING: Could you review and sponsor it?
>
>> http://cr.openjdk.java.net/~ysuenaga/JDK-8153073/webrev.04/
>
>
> Thanks,
>
> Yasumasa
>
>
> On 2016/04/21 18:37, Yasumasa Suenaga wrote:
>> Hi David,
>>
>>> So it just registered with me that currently filesize is interpreted
>>> as a value in KB. With this change it will be in bytes - that means
>>> tests will need fixing eg:
>>>
>>> hotspot/test/serviceability/logging/TestLogRotation.java
>>
>> Thanks!
>> I've fixed it in new webrev:
>>
>> http://cr.openjdk.java.net/~ysuenaga/JDK-8153073/webrev.04/
>>
>> Following jtreg tests are passed:
>>
>> - hotspot/test/gc/logging
>> - hotspot/test/runtime/logging
>> - hotspot/test/serviceability/logging
>>
>>
>> Yasumasa
>>
>>
>> On 2016/04/21 14:43, David Holmes wrote:
>>> Hi Yasumasa,
>>>
>>> On 20/04/2016 7:15 PM, Yasumasa Suenaga wrote:
>>>> Hi David,
>>>>
>>>>> ... on 32-bit size_t and julong are not the same size so we would
>>>>> still need to ensure we don't specify a filesize that is greater than
>>>>> SIZE_MAX on 32-bit.
>>>>
>>>> Oh... I understood.
>>>> I've fixed and uploaded new webrev. Could you review again?
>>>>
>>>> http://cr.openjdk.java.net/~ysuenaga/JDK-8153073/webrev.03/
>>>
>>> So it just registered with me that currently filesize is interpreted
>>> as a value in KB. With this change it will be in bytes - that means
>>> tests will need fixing eg:
>>>
>>> hotspot/test/serviceability/logging/TestLogRotation.java
>>>
>>> That change in semantics may not be desirable, but I'll leave that to
>>> the owners of this code to decide (and I hope they jump in soon!)
>>>
>>> I note that in the existing range check:
>>>
>>> if (value == SIZE_MAX || value > SIZE_MAX / K) {
>>>
>>> the first clause is redundant. So your change seems okay.
>>>
>>> Thanks,
>>> David
>>> -----
>>>
>>>>
>>>> Thanks,
>>>>
>>>> Yasumasa
>>>>
>>>>
>>>> On 2016/04/20 15:04, David Holmes wrote:
>>>>> On 20/04/2016 3:25 PM, Yasumasa Suenaga wrote:
>>>>>> Hi David,
>>>>>>
>>>>>> > You still removed the size bounds checks:
>>>>>> >
>>>>>> > 190 size_t value = parse_value(value_str);
>>>>>> > 191 if (value == SIZE_MAX || value > SIZE_MAX / K) {
>>>>>> > 192 errstream->print_cr("Invalid option: %s must be in
>>>>>> range
>>>>>> [0, "
>>>>>> > 193 SIZE_FORMAT "]",
>>>>>> FileSizeOptionKey,
>>>>>> SIZE_MAX / K);
>>>>>> > 194 success = false;
>>>>>>
>>>>>> SIZE_MAX is defined as ULONG_MAX in stdint.h [1].
>>>>>
>>>>> Ah I hadn't realized this was an external value, I thought it was some
>>>>> internally enforced maximum file size limit. So this is just an
>>>>> overflow check really, and ...
>>>>>
>>>>>> Arguments::atojulong(atomull) checks value range [2].
>>>>>
>>>>> ... we already do an overflow check in here, but ...
>>>>>
>>>>>> Thus I do not think we do not need to check value range in
>>>>>> LogFileOutput::parse_options().
>>>>>
>>>>> ... on 32-bit size_t and julong are not the same size so we would
>>>>> still need to ensure we don't specify a filesize that is greater than
>>>>> SIZE_MAX on 32-bit.
>>>>>
>>>>>>
>>>>>> > Thanks, I had missed that example usage buried in there, but am
>>>>>> still
>>>>>> > surprised none of these "options" for the handling the file are
>>>>>> > explicitly documented.
>>>>>>
>>>>>> I do not know how we can documented about it.
>>>>>> (Is it internal process in Oracle?)
>>>>>
>>>>> No I just meant that amongst all that help text you already modified,
>>>>> there is nothing, that I could see, that actually describes the
>>>>> possible options for filesize.
>>>>>
>>>>> Thanks,
>>>>> David
>>>>>
>>>>>> I can help for it if I can
>>>>>>
>>>>>> Thanks,
>>>>>>
>>>>>> Yasumasa
>>>>>>
>>>>>> [1]
>>>>>> https://sourceware.org/git/?p=glibc.git;a=blob;f=sysdeps/generic/stdint.h;h=442762728b899aa8ec219299692fce5953d796b0;hb=HEAD#l259
>>>>>>
>>>>>>
>>>>>> [2]
>>>>>> http://hg.openjdk.java.net/jdk9/hs/hotspot/file/8005261869c9/src/share/vm/runtime/arguments.cpp#l804
>>>>>>
>>>>>>
>>>>>>
>>>>>> 2016/04/20 11:24 "David Holmes" <david.holmes at oracle.com
>>>>>> <mailto:david.holmes at oracle.com>>:
>>>>>>
>>>>>> Hi Yasumasa,
>>>>>>
>>>>>> On 19/04/2016 11:50 PM, Yasumasa Suenaga wrote:
>>>>>> > Hi David,
>>>>>> >
>>>>>> > Thank you for your comment.
>>>>>> >
>>>>>> > I uploaded new webrev. Could you review again?
>>>>>> > http://cr.openjdk.java.net/~ysuenaga/JDK-8153073/webrev.02/
>>>>>>
>>>>>> You still removed the size bounds checks:
>>>>>>
>>>>>> 190 size_t value = parse_value(value_str);
>>>>>> 191 if (value == SIZE_MAX || value > SIZE_MAX / K) {
>>>>>> 192 errstream->print_cr("Invalid option: %s must be in
>>>>>> range [0, "
>>>>>> 193 SIZE_FORMAT "]",
>>>>>> FileSizeOptionKey,
>>>>>> SIZE_MAX / K);
>>>>>> 194 success = false;
>>>>>>
>>>>>> >> Which makes me wonder if atomull needs renaming - does the
>>>>>> "m" mean
>>>>>> >> memory? atojulong would seem more appropriate regardless.
>>>>>> >
>>>>>> > I renamed to atojulong() in new webrev.
>>>>>> >
>>>>>> >> Not directly related to your change but I was surprised
>>>>>> that the
>>>>>> >> various log file options don't seem to be documented anywhere
>>>>>> in the
>>>>>> >> -Xlog:help output.
>>>>>> >
>>>>>> > I updated help message in new webrev.
>>>>>>
>>>>>> Thanks, I had missed that example usage buried in there, but am
>>>>>> still
>>>>>> surprised none of these "options" for the handling the file are
>>>>>> explicitly documented.
>>>>>>
>>>>>> Thanks,
>>>>>> David
>>>>>>
>>>>>> >
>>>>>> > Thanks,
>>>>>> >
>>>>>> > Yasumasa
>>>>>> >
>>>>>> >
>>>>>> > On 2016/04/19 10:14, David Holmes wrote:
>>>>>> >> Hi Yasumasa,
>>>>>> >>
>>>>>> >> On 19/04/2016 12:06 AM, Yasumasa Suenaga wrote:
>>>>>> >>> PING:
>>>>>> >>>
>>>>>> >>> I've sent review request for JDK-8153073.
>>>>>> >>> Could you review it?
>>>>>> >>>
>>>>>> >>> http://cr.openjdk.java.net/~ysuenaga/JDK-8153073/webrev.01/
>>>>>> >>>
>>>>>> >>> If this patch is merged, user can set logfile size with
>>>>>> k/m/g.
>>>>>> >>
>>>>>> >> Your webrev seems out of date with respect to the current
>>>>>> code - the
>>>>>> >> logfile size processing is done in
>>>>>> LogFileOutput::parse_options not
>>>>>> >> configure_rotation. And of course you now need to work with
>>>>>> jdk9/hs not
>>>>>> >> hs-rt.
>>>>>> >>
>>>>>> >> That aside:
>>>>>> >>
>>>>>> >> src/share/vm/runtime/arguments.cpp
>>>>>> >>
>>>>>> >> I don't think you need to add the Arguments:: to the atomull
>>>>>> calls when
>>>>>> >> you are executing in Arguments code - lines 2643, 2660
>>>>>> >>
>>>>>> >> This comment could be updated to delete "memory"
>>>>>> >>
>>>>>> >> 788 // Parses a memory size specification string.
>>>>>> >>
>>>>>> >> Which makes me wonder if atomull needs renaming - does the
>>>>>> "m" mean
>>>>>> >> memory? atojulong would seem more appropriate regardless.
>>>>>> >>
>>>>>> >> ---
>>>>>> >>
>>>>>> >> src/share/vm/logging/logFileOutput.cpp
>>>>>> >>
>>>>>> >> You removed the size checking logic.
>>>>>> >>
>>>>>> >> Not directly related to your change but I was surprised
>>>>>> that the
>>>>>> >> various log file options don't seem to be documented anywhere
>>>>>> in the
>>>>>> >> -Xlog:help output.
>>>>>> >>
>>>>>> >> Thanks,
>>>>>> >> David
>>>>>> >> -----
>>>>>> >>
>>>>>> >>>
>>>>>> >>> Please review it.
>>>>>> >>>
>>>>>> >>>
>>>>>> >>> Thanks,
>>>>>> >>>
>>>>>> >>> Yasumasa
>>>>>> >>>
>>>>>> >>>
>>>>>> >>> On 2016/04/11 18:28, Yasumasa Suenaga wrote:
>>>>>> >>>> PING: Could you review it?
>>>>>> >>>> We need more reviewer.
>>>>>> >>>>
>>>>>> >>>>>>
>>>>>> http://cr.openjdk.java.net/~ysuenaga/JDK-8153073/webrev.01/
>>>>>> >>>>
>>>>>> >>>>
>>>>>> >>>> Thanks,
>>>>>> >>>>
>>>>>> >>>> Yasumasa
>>>>>> >>>>
>>>>>> >>>>
>>>>>> >>>> On 2016/03/31 22:33, Yasumasa Suenaga wrote:
>>>>>> >>>>> CC'ed to serviceability-dev.
>>>>>> >>>>>
>>>>>> >>>>> Could you review it?
>>>>>> >>>>>
>>>>>> >>>>>>
>>>>>> http://cr.openjdk.java.net/~ysuenaga/JDK-8153073/webrev.01/
>>>>>> >>>>>
>>>>>> >>>>>
>>>>>> >>>>> Thanks,
>>>>>> >>>>>
>>>>>> >>>>> Yasumasa
>>>>>> >>>>>
>>>>>> >>>>>
>>>>>> >>>>> On 2016/03/31 18:24, Yasumasa Suenaga wrote:
>>>>>> >>>>>> Hi Marcus,
>>>>>> >>>>>>
>>>>>> >>>>>>> You're missing an include of arguments.hpp in
>>>>>> logFileOutput.cpp.
>>>>>> >>>>>>
>>>>>> >>>>>> arguments.hpp is included in precompiled.hpp . So
>>>>>> build was
>>>>>> succeeded.
>>>>>> >>>>>> However, it should be included in logFileOutput.cpp .
>>>>>> >>>>>>
>>>>>> >>>>>> I uploaded a new webrev. Could you review again?
>>>>>> >>>>>>
>>>>>> >>>>>>
>>>>>> http://cr.openjdk.java.net/~ysuenaga/JDK-8153073/webrev.01/
>>>>>> >>>>>>
>>>>>> >>>>>>
>>>>>> >>>>>> Thanks,
>>>>>> >>>>>>
>>>>>> >>>>>> Yasumasa
>>>>>> >>>>>>
>>>>>> >>>>>>
>>>>>> >>>>>> On 2016/03/31 16:48, Marcus Larsson wrote:
>>>>>> >>>>>>> Hi,
>>>>>> >>>>>>>
>>>>>> >>>>>>> On 03/30/2016 04:09 PM, Yasumasa Suenaga wrote:
>>>>>> >>>>>>>> Hi all,
>>>>>> >>>>>>>>
>>>>>> >>>>>>>> This request review is related to [1].
>>>>>> >>>>>>>>
>>>>>> >>>>>>>> I want to set filesize option with k/m/g as below:
>>>>>> >>>>>>>>
>>>>>> -Xlog:gc=trace:file=gc.log:time:filecount=5,filesize=10m
>>>>>> >>>>>>>>
>>>>>> >>>>>>>> Memory size option (e.g. -Xmx) can be set with k/m/g .
>>>>>> >>>>>>>> I think we can use option parser in arguments.cpp .
>>>>>> >>>>>>>>
>>>>>> >>>>>>>> I uploaded webrev. Could you review it?
>>>>>> >>>>>>>>
>>>>>> >>>>>>>>
>>>>>> http://cr.openjdk.java.net/~ysuenaga/JDK-8153073/webrev.00/
>>>>>> >>>>>>>
>>>>>> >>>>>>> You're missing an include of arguments.hpp in
>>>>>> logFileOutput.cpp.
>>>>>> >>>>>>>
>>>>>> >>>>>>> Apart from that, this looks good to me.
>>>>>> >>>>>>>
>>>>>> >>>>>>> Thanks,
>>>>>> >>>>>>> Marcus
>>>>>> >>>>>>>
>>>>>> >>>>>>>>
>>>>>> >>>>>>>>
>>>>>> >>>>>>>> I cannot access JPRT. So I need a sponsor.
>>>>>> >>>>>>>>
>>>>>> >>>>>>>>
>>>>>> >>>>>>>> Thanks,
>>>>>> >>>>>>>>
>>>>>> >>>>>>>> Yasumasa
>>>>>> >>>>>>>>
>>>>>> >>>>>>>>
>>>>>> >>>>>>>> [1]
>>>>>>
>>>>>> http://mail.openjdk.java.net/pipermail/hotspot-runtime-dev/2016-March/018704.html
>>>>>>
>>>>>>
>>>>>> >>>>>>>>
>>>>>> >>>>>>>
>>>>>>
More information about the serviceability-dev
mailing list