RFR: 8146879: Add option for handling existing log files in UL

Gerard Ziemski gerard.ziemski at oracle.com
Tue Mar 15 20:46:42 UTC 2016


hi Marcus,

Sorry for getting back so late, but I got sick last Friday.

> On Mar 14, 2016, at 5:52 AM, Marcus Larsson <marcus.larsson at oracle.com> wrote:
> 
>> 
>> -----------------------------------------------
>> #3 File src/share/vm/logging/log.cpp
>> 
>> The number_of_lines_with_substring_in_file() function will not count the substrings that happen to lay across the boundary at sizeof(buf). For example with:
>> 
>>  char buf[16];
>> 
>> and file consisting of “12345678901234gerard1234567890” it will return 0 for number_of_lines_with_substring_in_file(file, “gerard")
> 
> Yeah I'm aware of this limitation. It's only used in the test though, where I'm hoping it won't be a problem. Would a comment about this be enough?

It would be very unfortunate if the test failed because of some corner case involving this limitation. Since the code is not on a performance path, and only used in the test, couldn’t we use fseek(); rewind(); to find the buffer size we need, and then use NEW_C_HEAP_ARRAY() to allocate exactly as much memory as we need?


cheers


> Seems like a good idea to me.
> 
> Thanks,
> Marcus
> 
>> 
>> 
>>> On Mar 11, 2016, at 8:21 AM, Marcus Larsson <marcus.larsson at oracle.com> wrote:
>>> 
>>> Third time's the charm.
>>> 
>>> Webrev:
>>> http://cr.openjdk.java.net/~mlarsson/8146879/webrev.03/
>>> 
>>> This patch makes log file rotation the default. Default thresholds are 5 rotated files with a target size of 20MiB. Truncating behavior can be achieved by setting filecount to 0 (-Xlog::myfile.log::filecount=0).
>>> 
>>> If a log file already exists during log file initialization it will be rotated. If any of the target file names (file.0 to file.4 in the default case) are available, that filename will be used for the existing log. If all names are taken the VM will attempt to overwrite the oldest file.
>>> 
>>> This should prevent unlimited log file creations and avoid accidental loss of log files from previous runs. The default thresholds (5 files, 20MiB each) is just a suggestion. If you think it should be higher/lower let me know.
>>> 
>>> Tested with included internal VM tests through RBT.
>>> 
>>> Thanks,
>>> Marcus
>>> 
>>> On 2016-03-01 15:05, Marcus Larsson wrote:
>>>> Hi,
>>>> 
>>>> After some offline discussions I'm withdrawing this patch. I will instead investigate if I can achieve similar behavior using log rotation as the default.
>>>> 
>>>> Thanks,
>>>> Marcus
>>>> 
>>>> On 03/01/2016 12:11 PM, Marcus Larsson wrote:
>>>>> Hi again,
>>>>> 
>>>>> Taking a different approach to this.
>>>>> 
>>>>> New webrev:
>>>>> http://cr.openjdk.java.net/~mlarsson/8146879/webrev.01/
>>>>> 
>>>>> Existing files will now by default be renamed/archived with a .X suffix where X is the lowest number such that the resulting file name is available (jvm.log becomes jvm.log.0). A mode option for controlling this behavior has been added as well. It can be set to archive, append, or truncate (i.e. -Xlog::jvm.log::mode=truncate).
>>>>> 
>>>>> Tested with included jtreg test through JPRT.
>>>>> 
>>>>> Thanks,
>>>>> Marcus
>>>>> 
>>>>> On 01/14/2016 04:00 PM, Marcus Larsson wrote:
>>>>>> Hi,
>>>>>> 
>>>>>> Please review the following patch to make sure UL truncates existing log files before writing to them. Since files are opened in append mode, truncation isn't done automatically, so instead the patch adds an attempt to remove the log file before opening it.
>>>>>> 
>>>>>> Webrev:
>>>>>> http://cr.openjdk.java.net/~mlarsson/8146879/webrev.00/
>>>>>> 
>>>>>> Issue:
>>>>>> https://bugs.openjdk.java.net/browse/JDK-8146879
>>>>>> 
>>>>>> Testing:
>>>>>> Included test through JPRT
>>>>>> 
>>>>>> Thanks,
>>>>>> Marcus



More information about the serviceability-dev mailing list