On Wed, 23 Aug 2023 17:15:03 GMT, Daniel Fuchs <dfu...@openjdk.org> wrote:

>> Recursive initialization calls possible during loading of LoggerFinder 
>> service.  
>> 
>> This fix detects the recursive call and returns a temporary LoggerFinder 
>> that is backed by a lazy logger. Automated test case developed to simulate 
>> loading of an external LoggerFinder service while also having other threads 
>> poke System.getLogger during this framework initialization.
>
> src/java.base/share/classes/jdk/internal/logger/LoggerFinderLoader.java line 
> 83:
> 
>> 81:             Thread currentThread = Thread.currentThread();
>> 82:             if (loadingThread == currentThread) {
>> 83:                 return new TemporaryLoggerFinder();
> 
> Suggestion:
> 
>                 // recursive ttempt to load the backend while loading the 
> backend
>                 // use a temporary logger finder that returns special 
> BootsrtapLoggers
>                 // which will wait until loading is finished
>                 return new TemporaryLoggerFinder();

We could create a singleton instance of TemporaryLoggerFinder in the 
TemporaryLoggerFinder class and return that.
Suggestion:

                return new TemporaryLoggerFinder.INSTANCE;

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

PR Review Comment: https://git.openjdk.org/jdk/pull/15404#discussion_r1303321618

Reply via email to