RFR: 8349206: j.u.l.Handler classes create deadlock risk via synchronized publish() method [v2]

Daniel Fuchs dfuchs at openjdk.org
Fri Feb 14 15:53:13 UTC 2025


On Fri, 14 Feb 2025 15:18:56 GMT, David Beaumont <duke at openjdk.org> wrote:

>> 8349206: j.u.l.Handler classes create deadlock risk via synchronized publish() method.
>> 
>> 1. Remove synchronization of calls to publish() in Handlers in java.util.logging package.
>> 2. Add explanatory comments to various affected methods.
>> 3. Add a test to ensure deadlocks no longer occur.
>> 
>> Note that this change does not address issue in MemoryHandler (see JDK-8349208).
>
> David Beaumont has updated the pull request incrementally with one additional commit since the last revision:
> 
>   Reworking FileHandler so rotation occurs synchronously after the last log entry is written.

src/java.logging/share/classes/java/util/logging/FileHandler.java line 193:

> 191:             out.write(b);
> 192:             written++;
> 193:             flushOrRotateIfFull();

I don't think that's correct. You don't want to flush and rotate in the middle of publishing a LogRecord. You want to flush and rotate either before or after - but not in the middle.

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

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


More information about the core-libs-dev mailing list