RFR: 8141211: Convert TraceExceptions to Unified Logging
Bengt Rutisson
bengt.rutisson at oracle.com
Fri Dec 18 09:14:47 UTC 2015
On 2015-12-18 06:44, David Holmes wrote:
> On 17/12/2015 6:41 PM, Bengt Rutisson wrote:
>> On 2015-12-16 22:43, Coleen Phillimore wrote:
>>> On 12/16/15 4:01 PM, John Rose wrote:
>>>> On Dec 15, 2015, at 12:26 PM, Rachel Protacio
>>>> <rachel.protacio at oracle.com> wrote:
>>>>> - each incident of ttyLocker that involved separate logging lines
>>>>> for the same message have been consolidated to one line
>>>>> - each incident of ttyLocker that involved separate print statements
>>>>> to one logging line has been changed to write to a buffer first,
>>>>> then print the entire line at once to the log stream
>>>> This is a strong argument for putting such functionality into the UL
>>>> framework,
>>>> instead of giving developers the unfortunate choice of either (a)
>>>> doing it right
>>>> with a bunch of random logic (Rachel's choice here) or (b) sweeping
>>>> it under
>>>> the carpet by breaking up a multi-part message into several log
>>>> messages.
>>>>
>>>> We need to admit this is the Achilles Heel of logging as normally
>>>> conceived
>>>> (especially for very long multi-part messages like disassembler
>>>> output,
>>>> backtraces, or compilation logs), and just fix it in the UL frameowrk.
>>>
>>> Yes, I agree. We should file a high priority RFE against UL for this
>>> if one isn't filed already. The runtime only uses ttyLocker (as far
>>> as I found) for TraceExceptions but the compiler uses it more often to
>>> aggregate messages. The lack of a locking mechanism seems to be one
>>> of the factors blocking the compiler group adoption of this feature.
>>> And will block more complex runtime logging conversions.
>>>
>>> So what do people vote that we do? Should we log the messages
>>> separately until this is fixed? I agreed with making these logs one
>>> line because even though they wrap, they weren't that long. It would
>>> be nice to be able to do the conversion work to UL concurrently while
>>> finding problems in the framework, and not be stuck.
>>
>> From my point of view it would be very unfortunate to require all
>> logging to take an extra lock. If the multiline support can be
>> implemented in the UL framework without any extra cost for "normal"
>> logging I would be fine with it. But if it would slow down the normal
>> logging, which I assume would be the case if we require an extra lock,
>> then I would prefer to push the responsibility up to the users of the UL
>> framework to synchronize properly.
>
> How would users of the framework synchronize access to a shared
> resource where some of the users of the resource are not party to the
> synchronization process? AFAICS the synchronization has to be at the
> resource-level.
I think it depends on what problem we are trying to solve. In most cases
I have seen so far it would be fine for two different activities to log
their output interleaved. If for example the compiler would log
something during a GC I wouldn't see that as a serious problem. It is
easy for a reader of the log file (human or machine) to sort out the
logging since logging is never interleaved on the same line. And there
is also the possibility for a user to pipe the logging to different
files based on their tags.
The problem I thought this email thread was about was when the same type
of logging is done from multiple threads. Having multiple threads log
multiple lines of similar data at the same time will be very hard to
sort out after-the-fact in the log file. But since it is the same
subsystem that does the logging that subsystem could introduce its own
synchronization. It would of course not be synchronized with all other
users of the UL framework, but I don't think that is such a big problem.
Having said that, I am not against introducing multi-line logging
support in the UL framework. I just would like to make sure that it does
not come with a too high cost for all the use cases where the
synchronization is not a problem.
Using a buffered logger, as is being discussed now, would probably be a
good solution since it wouldn't introduce a cost for the other logging.
Bengt
>
> David
> -----
>
>> Bengt
>>
>>>
>>> Thanks,
>>> Coleen
>>>>
>>>> — John
>>>
>>
More information about the serviceability-dev
mailing list