On Fri, 14 Feb 2025 10:39:54 GMT, David Beaumont <d...@openjdk.org> wrote:

>>>Yes, it's certainly something you can deliberately provoke in a way that 
>>>wasn't possible before.
>> 
>> Setting limit to 1 byte with a large count is a way to make sure each log 
>> file contains 0 or 1 log record.  I think this patch breaks that behavior 
>> when threads pile up resulting files containing 2 or more log records.  If 
>> so that is a breaking incompatibility that should be avoided as some formats 
>> only make sense to contain a single record or require post processing to be 
>> one record per file.
>> 
>> I'll answer your other questions as soon as I can.
>
> I've looked through a lot of github logging properties files and see no 
> evidence that the pattern of use you're suggesting is ever actually done, and 
> any such attempt to force one-log-per-file is entirely unsupported by the 
> existing specification already. Can you give me an example of a real-world 
> case where there's a debug log format which "only makes sense to contain a 
> single record"?
> I'm not doubting that you've seen this, but if we're going to complicate the 
> code somewhat over this issue, I need to be able to explain that it's 
> actually likely to affect real-world users, rather than purely hypothetical 
> ones.

The reason I'm pushing back a little here is that the idea of making a "secret 
handshake" method between StreamHandler and FileHandler isn't a solution for 
anyone who made their own handler (e.g. an "EncryptedLogFileHandler" that's not 
a sub-class of FileHandler). The shape of the existing public API makes the 
additional promise that "post-processing" occurs synchronously with the last 
log written hard/impossible, and having it so only JDK classes can do this 
feels a bit wrong to me.

In other words, if you can convince me it's worth doing something to make 
FileHandler "more synchronized" in this way, I think we should change the API 
or find another way to allow any third-party sub-classes to also solve the 
issue. This is why I'm seeking real world examples of actual code that appear 
to rely on the invariant we're discussing.

-------------

PR Review Comment: https://git.openjdk.org/jdk/pull/23491#discussion_r1955940900

Reply via email to