RFR: JDK-8143255: Remove debug logging from SymbolTable::unlink() and SymbolTable::possibly_parallel_unlink()

Bengt Rutisson bengt.rutisson at oracle.com
Thu Nov 19 07:41:06 UTC 2015


Hi David,

On 2015-11-18 22:42, David Holmes wrote:
> Hi Bengt,
>
> On 19/11/2015 5:47 AM, Bengt Rutisson wrote:
>>
>> Hi everyone,
>>
>> Could I have a couple of reviews for this patch to remove some debugging
>> code?
>>
>> http://cr.openjdk.java.net/~brutisso/8143255/webrev.00/
>> https://bugs.openjdk.java.net/browse/JDK-8143255
>>
>>  From the bug report:
>>
>> The logging inside SymbolTable::unlink() and
>> SymbolTable::possibly_parallel_unlink() is guarded by Verbose and
>> WizardMode, which are both develop flags. This means that the log output
>> is not available in product builds. So, this logging is most likely just
>> leftover debugging code.
>
> As this is primarily guarded by PrintGCDetails the GC team owns this 
> as far as I am concerned and so they can do as they desire. However ...

This is runtime code, so I think it was a mistake to guard this logging 
with PrintGCDetails. But since I am actively working on replacing the GC 
logging with the new unified logging framework I stumbled across this 
piece of code.

I discussed it with the runtime team and they did not consider the 
logging useful. So, rather than trying to figure out a conversion to the 
new logging framework it seemed better to remove it.

>
> Most, if not all, non-product logging code could be characterized as 
> "leftover debugging code" - but that doesn't mean it should all be 
> ripped out. The use of Verbose && WizardMode does seem a little 
> excessive in this case - one should suffice. As documented the aim is 
> to ensure that this logging, while logically wanted as part of 
> PrintGCDetails, is not included in the product mode because people 
> parse that logging information.
>
>> In the GC team we don't use this logging (even though it is for some
>> reason guarded by PrintGCDetails too) and I discussed it with Coleen and
>> Rachel in the Runtime team. The Runtime team also don't use the logging.
>
> This kind of logging is used to expose additional details while 
> testing/debugging issues. It isn't expected to be used on a regular 
> basis, and may well have not been used for years, or may have last 
> been used extensively by people no longer working on OpenJDK.

Agreed. And unused code is just noise in the code base, so it is nice to 
get it cleaned up.

>
>> It is pretty straight forward to add this logging back if it is ever
>> needed for a debugging session. Until then we should remove this from
>> the code base.
>
> Mostly likely someone would not even know it ever existed and would 
> simply re-write a new piece of logging code - which might even get 
> checked in. And the cycle repeats. ;-)

That's my point. Not that the cycle repeats, but that it is very easy to 
implement this code again if it would ever be needed. The benefit of 
having it checked in is very little compared to the negative effect on 
the reading speed for all developers that have to read this code.

>
> Given the trend elsewhere I'm a little surprised this isn't simply 
> being included in the product mode logging. :)

In my opinion what we are trying do do elsewhere is to say that 
non-product logging should be used only for performance reasons or when 
we worry about the memory footprint. Most of the time we want the 
logging to be available in product builds if it in any way produces 
useful information.

In this case it is not producing useful information in product or 
non-product builds, so there is no reason to move it to product level 
logging.

Cheers,
Bengt

>
> Cheers,
> David
>
>> Thanks,
>> Bengt



More information about the hotspot-runtime-dev mailing list