Thanks Matt. I was referring to the one in the first email of this thread.

Ralph

> On Nov 1, 2022, at 1:41 PM, Matt Sicker <m...@musigma.org> wrote:
> 
> I’ve reverted the last two commits as they were basically the last commit, 
> though I’m not exactly sure if you’re referring to that one in particular. 
> I’ll break it down into smaller pieces, though, and submit the non-trivial 
> parts as a PR.
> —
> Matt Sicker
> 
>> On Nov 1, 2022, at 10:21, Ralph Goers <ralph.go...@dslextreme.com> wrote:
>> 
>> I have more questions on this.
>> 
>> 1. PropertiesUtil cannot be deprecated. It is used by Spring Boot to 
>> register its PropertiesSource.
>> 2. All these classes that you have marked internal are opened to various 
>> Log4j modules. That means they are NOT open to any other implementation of 
>> the Log4j-API.  Can we really do that?
>> 
>> The more I am looking at this I would prefer that you revert this commit and 
>> put it on a branch as several PRs that split it up into things we can really 
>> review.
>> 
>> So I am -1 on this commit.
>> 
>> Ralph
>> 
>>> On Oct 31, 2022, at 7:40 PM, Apache <ralph.go...@dslextreme.com> wrote:
>>> 
>>> Are you using your old email address? I keep having to moderate them 
>>> through.
>>> 
>>> Yes they should be in an appropriately named package under the internal 
>>> package.
>>> 
>>> Ralph
>>> 
>>>> On Oct 31, 2022, at 7:36 PM, Matt Sicker <mattsic...@sickmatter.com> wrote:
>>>> 
>>>> We could consolidate the Log4j-private classes into the internal package 
>>>> and export it to other Log4j modules. That makes sense.
>>>> 
>>>> And LoggingSystem probably doesn’t need a Lazy instance of itself, right.
>>>> 
>>>> —
>>>> Matt Sicker
>>>> 
>>>>> On Oct 31, 2022, at 20:58, Apache <ralph.go...@dslextreme.com> wrote:
>>>>> 
>>>>> 
>>>>> 
>>>>> See below
>>>>> 
>>>>>>> On Oct 31, 2022, at 6:49 PM, Matt Sicker <mattsic...@sickmatter.com> 
>>>>>>> wrote:
>>>>>> 
>>>>>> The util3 package is a collection of all the private classes we have. 
>>>>>> We discussed the general idea on a recent conference call. These are 
>>>>>> pseudo private classes. They’re meant for internal use only and are 
>>>>>> guarded by the module info. JUnit does the same thing
>>>>> 
>>>>> If they are private then they should be under a package named internal. 
>>>>> It won’t be obvious to devs not using JPMS that they are private.
>>>>> 
>>>>>> The point of Lazy is ensuring thread safe publication of initialized 
>>>>>> variables that may be initialized by multiple threads. There are two 
>>>>>> main variants: one that guarantees the supplier function is executed 
>>>>>> only once and one that may run the supplier more than once but has a 
>>>>>> single return value.
>>>>> 
>>>>> But why is it necessary? When getInstance is called that operation should 
>>>>> only be performed once. GetInstance is already lazy so why do we need 
>>>>> lazy initialization of the stuff in it?
>>>>> 
>>>>> Ralph
>>>>> 
>>>>>> 
>>>>>> —
>>>>>> Matt Sicker
>>>>>> 
>>>>>>>> On Oct 31, 2022, at 17:53, Ralph Goers <ralph.go...@dslextreme.com> 
>>>>>>>> wrote:
>>>>>>> 
>>>>>>> Also, in LoggingSystem.java
>>>>>>> 
>>>>>>> private static final String[] COMPATIBLE_API_VERSIONS = {"2.6.0"};
>>>>>>> 
>>>>>>> absolutely needs to be changed to version “3.0.0”.
>>>>>>> 
>>>>>>> Ralph
>>>>>>> 
>>>>>>>>> On Oct 31, 2022, at 3:49 PM, Ralph Goers <ralph.go...@dslextreme.com> 
>>>>>>>>> wrote:
>>>>>>>> 
>>>>>>>> Matt,
>>>>>>>> 
>>>>>>>> I absolutely would have preferred that you had created a PR for this 
>>>>>>>> and asked for a review before committing it as I have a few concerns:
>>>>>>>> 
>>>>>>>> 1. It is a massive commit. It is going to take time to digest exactly 
>>>>>>>> what you have done.
>>>>>>>> 2. You have created a util3 package in API with no discussion of this 
>>>>>>>> on the dev list. I assume that it contains artifacts that were cleaned 
>>>>>>>> up from util and are now no longer compatible? Or does it only contain 
>>>>>>>> classes that are exportable to other Log4j artifacts (I do see that in 
>>>>>>>> module-info.java). If these classes are meant to be private then I 
>>>>>>>> would have preferred that it be moved to internal/util. 
>>>>>>>> 3. I no longer understand the point of Lazy<>. LogManager now performs 
>>>>>>>> no static initialization that I can see. Instead, it calls 
>>>>>>>> LoggingSystem.getInstance(). What is the point of making 
>>>>>>>> initialization of INSTANCE lazy? You accomplished what you wanted to 
>>>>>>>> by moving the static initialization to another class.
>>>>>>>> 4-10. I have no idea as it will take me a week to muddle through the 
>>>>>>>> rest of all these changes to figure out what happened.
>>>>>>>> 
>>>>>>>> Ralph
>>>>>>>> 
>>>>>>>>>> On Oct 30, 2022, at 6:24 PM, mattsic...@apache.org wrote:
>>>>>>>>> 
>>>>>>>>> This is an automated email from the ASF dual-hosted git repository.
>>>>>>>>> 
>>>>>>>>> mattsicker pushed a commit to branch master
>>>>>>>>> in repository https://gitbox.apache.org/repos/asf/logging-log4j2.git
>>>>>>>>> 
>>>>>>>>> 
>>>>>>>>> The following commit(s) were added to refs/heads/master by this push:
>>>>>>>>> new aab23d5c05 [LOG4J2-3459] - Add LoggingSystemProvider SPI
>>>>>>>>> aab23d5c05 is described below
>>>>>>>>> 
>>>>>>>>> commit aab23d5c05bff2915c290dff3e73a0ae03caf43a
>>>>>>>>> Author: Matt Sicker <mattsic...@apache.org>
>>>>>>>>> AuthorDate: Sun Oct 30 20:24:17 2022 -0500
>>>>>>>>> 
>>>>>>>>> [LOG4J2-3459] - Add LoggingSystemProvider SPI
>>>>>>>>> 
>>>>>>>>> This helps clean up a lot of static state in Log4j API along with 
>>>>>>>>> enabling further extensibility by exposing 
>>>>>>>>> LoggingSystemProvider::getInstance which can be implemented using 
>>>>>>>>> Injector in Log4j Core. The general utility class for working with 
>>>>>>>>> this provider is available as an internal (util3) class in 
>>>>>>>>> LoggingSystem. Test fixture helper classes have also been updated to 
>>>>>>>>> use LoggingSystem directly.
>>>>>>>>> 
>>>>>>>>> Signed-off-by: Matt Sicker <mattsic...@apache.org>
>>>>>>>>> ---
>>>>>>>>> .../junit/LogManagerLoggerContextFactoryRule.java  |  11 +-
>>>>>>>>> .../test/junit/LoggerContextFactoryExtension.java  |  12 +-
>>>>>>>>> .../{TestProvider.java => TestSystemProvider.java} |  23 +-
>>>>>>>>> .../log4j/spi/DefaultThreadContextMapTest.java     |  10 +-
>>>>>>>>> ....apache.logging.log4j.spi.LoggingSystemProvider |  17 ++
>>>>>>>>> .../services/org.apache.logging.log4j.spi.Provider |   1 -
>>>>>>>>> log4j-api/src/main/java/module-info.java           |   5 +-
>>>>>>>>> .../java/org/apache/logging/log4j/LogManager.java  |  76 +------
>>>>>>>>> .../org/apache/logging/log4j/ThreadContext.java    | 133 +++++------
>>>>>>>>> .../org/apache/logging/log4j/internal/Binding.java |  32 ++-
>>>>>>>>> .../apache/logging/log4j/internal/BindingMap.java  |  59 +++++
>>>>>>>>> .../log4j/simple/SimpleLoggingSystemProvider.java  |  24 +-
>>>>>>>>> .../log4j/spi/AbstractLoggingSystemProvider.java   |  60 +++++
>>>>>>>>> .../CopyOnWriteSortedArrayThreadContextMap.java    |  68 ++----
>>>>>>>>> .../log4j/spi/DefaultContextMapFactory.java        | 102 +++++++++
>>>>>>>>> .../log4j/spi/DefaultContextStackFactory.java      |  50 ++++
>>>>>>>>> .../logging/log4j/spi/DefaultThreadContextMap.java |  36 +--
>>>>>>>>> .../GarbageFreeSortedArrayThreadContextMap.java    |  51 ++---
>>>>>>>>> .../log4j/spi/LegacyLoggingSystemProvider.java     | 125 ++++++++++
>>>>>>>>> .../logging/log4j/spi/LoggingSystemProvider.java   |  82 +++++++
>>>>>>>>> .../org/apache/logging/log4j/spi/Provider.java     | 253 
>>>>>>>>> ---------------------
>>>>>>>>> .../logging/log4j/spi/ThreadContextMapFactory.java | 134 -----------
>>>>>>>>> .../org/apache/logging/log4j/util/LazyInt.java     |  52 -----
>>>>>>>>> .../org/apache/logging/log4j/util3/Activator.java  |  57 +++--
>>>>>>>>> .../org/apache/logging/log4j/util3/Constants.java  |  43 ++--
>>>>>>>>> .../apache/logging/log4j/util3/LoggingSystem.java  | 223 
>>>>>>>>> ++++++++++++++++++
>>>>>>>>> .../apache/logging/log4j/util3/PropertiesUtil.java |  31 +--
>>>>>>>>> .../apache/logging/log4j/util3/ProviderUtil.java   | 143 ------------
>>>>>>>>> .../core/test/junit/ContextSelectorCallback.java   |   9 +-
>>>>>>>>> .../core/test/junit/LoggerContextResolver.java     |  10 +-
>>>>>>>>> .../log4j/core/test/junit/LoggerContextRule.java   |   5 +-
>>>>>>>>> ....apache.logging.log4j.spi.LoggingSystemProvider |  17 ++
>>>>>>>>> .../services/org.apache.logging.log4j.spi.Provider |   1 -
>>>>>>>>> log4j-core/src/main/java/module-info.java          |   7 +-
>>>>>>>>> .../log4j/core/impl/Log4jSystemProvider.java       |  75 ++++++
>>>>>>>>> .../apache/logging/log4j/core/osgi/Activator.java  |   4 +-
>>>>>>>>> ....apache.logging.log4j.spi.LoggingSystemProvider |  17 ++
>>>>>>>>> .../services/org.apache.logging.log4j.spi.Provider |   1 -
>>>>>>>>> .../CopyOnWriteOpenHashMapThreadContextMap.java    |   3 +-
>>>>>>>>> .../GarbageFreeOpenHashMapThreadContextMap.java    |   3 +-
>>>>>>>>> log4j-to-jul/src/main/java/module-info.java        |   7 +-
>>>>>>>>> .../{JULProvider.java => JULSystemProvider.java}   |  24 +-
>>>>>>>>> ....apache.logging.log4j.spi.LoggingSystemProvider |  17 ++
>>>>>>>>> .../services/org.apache.logging.log4j.spi.Provider |  18 --
>>>>>>>>> .../org/apache/logging/slf4j/MDCContextMap.java    |  19 +-
>>>>>>>>> .../apache/logging/slf4j/SLF4JSystemProvider.java  |  30 ++-
>>>>>>>>> ....apache.logging.log4j.spi.LoggingSystemProvider |  17 ++
>>>>>>>>> .../services/org.apache.logging.log4j.spi.Provider |   1 -
>>>>>>>>> src/changes/changes.xml                            |   3 +
>>>>>>>>> src/site/asciidoc/manual/extending.adoc            |  20 +-
>>>>>>>>> src/site/asciidoc/runtime-dependencies.adoc        |   4 +-
>>>>>>>>> 51 files changed, 1202 insertions(+), 1023 deletions(-)
>>>>>>>> 
>>>>>>> 
>>>>> 
>>> 
>> 
> 

Reply via email to