Mail client selected the wrong email, whoops. Anyways, I’ll revert and break up into more commits and put the more interesting changes into 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(-) >>>>>>> >>>>>> >>>> >> >