It's a race condition in how GfshRule, GfshExecution, and ProcessLogger
fork a process before attaching the stdout and stderr listeners. The
changes for geode-log4j caused this race condition window to take slightly
longer. I'll have a fix soon and ConnectCommandAcceptanceTest should then
be back to consistently green

On Tue, Sep 24, 2019 at 12:23 PM Kirk Lund <kl...@apache.org> wrote:

> It's not a problem in TomcatInstall. Nothing obvious anywhere. Even the
> output that GfshRule says is missing the string actually does contain the
> missing text. I have no idea why this passed in precheckin but fails now...
>
> On Tue, Sep 24, 2019 at 11:16 AM Kirk Lund <kl...@apache.org> wrote:
>
>> ConnectCommandAcceptanceTest is now failing on develop. Looks like the
>> test is using Geode 1.3.0 (not sure why).
>>
>> It also looks like my commit and the following commit didn't merge
>> properly despite not having any conflicts. Looking into how to fix it now.
>>
>> It's possible that GEODE-7168 removed geode-log4j from the Tomcat
>> classpath...
>>
>> commit a0f7a0f041c47830053b0fd1c8d9c4e51fb9a058
>> Author: Bruce Schuchardt <bschucha...@pivotal.io>
>> Date:   Wed Sep 11 15:49:35 2019 -0700
>>
>>     GEODE-7168 tomcat rolling upgrade test failure
>>
>>     This PR reinstates the changes to this test and modifies the
>>     geode-old-versions subproject to preserve the full version string
>> (with
>>     periods) for older versions.  This lets the tomcat test build a
>>     classpath without requiring the target version to have representation
>> in
>>     Version.java.
>>
>> On Tue, Sep 24, 2019 at 10:24 AM Kirk Lund <kl...@apache.org> wrote:
>>
>>> All classes that use *log4j-core* have now moved to the new module 
>>> *geode-log4j
>>> *on develop. The default log4j2.xml configuration file for Geode
>>> Locators and Servers has also moved to geode-log4j.
>>>
>>> The first Geode release expected to include this change is 1.11.0.
>>>
>>> The geode-log4j module is included in geode-dependencies.jar so that
>>> Locators and Servers will continue to use the code and configuration in
>>> geode-log4j by default. It is also included in the classpath of most
>>> *integrationTest* and *distributedTest* targets to facilitate non-unit
>>> test debugging, support *dunit grep for suspect strings*, and also to
>>> avoid moving or changing tests that involve or require Geode Alerting or
>>> Logging functionality.
>>>
>>> Precheckin was GREEN before merging to develop, so all Geode tests
>>> should be unaffected.
>>>
>>> *A. The effects of not having geode-log4j on the classpath
>>> (client/server/locator) are:*
>>>
>>> 1) Log4j will not be configurable by Geode
>>>
>>> 2) Log4j will print out an error message if not configured by User or
>>> Geode
>>>
>>> This is printed out by Apache Log4j (not by Geode):
>>>
>>> ERROR StatusLogger No Log4j 2 configuration file found. Using default
>>> configuration (logging only errors to the console), or user
>>> programmatically provided configurations. Set system property
>>> 'log4j2.debug' to show Log4j 2 internal initialization logging. See
>>> https://logging.apache.org/log4j/2.x/manual/configuration.html for
>>> instructions on how to configure Log4j 2
>>>
>>> 3) Geode will not create a log file by default (when starting a server
>>> or locator using GFSH)
>>>
>>> 4) Logging configuration properties do nothing
>>>
>>> Logging configuration properties include:
>>> * log-disk-space-limit
>>> * log-file
>>> * log-file-size-limit
>>> * log-level
>>>
>>> 5) Geode Alerts will never be generated
>>>
>>> Geode Alerts are exposed primarily exposed via:
>>> * DistributedSystemMXBean JMX Notifications
>>> * Viewable in Pulse (via DistributedSystemMXBean)
>>> * (Deprecated) Admin API support for Alert Listening
>>>
>>> 6) GFSH commands or options involving Logging and Alerting do nothing
>>>
>>> GFSH commands or options involving Logging and Alerting:
>>> * alter runtime (log-disk-space-limit, log-file, log-file-size-limit,
>>> log-level)
>>> * export logs
>>> * show log
>>> * start locator (log-level, redirect-output)
>>> * start server (log-level, redirect-output)
>>>
>>> *B. The primary reasons a user might not include geode-log4j in their
>>> classpath:*
>>>
>>> a) User wants to use Logback or other backend instead of log4j-core
>>> (especially true for users of Spring Boot)
>>>
>>> b) User wants greater control over logging, especially in a client or
>>> embedded application
>>>
>>> Since Geode uses log4j-api Loggers for its internal logging, swapping
>>> out log4j-core for logback as the backend imposes a significant performance
>>> penalty. Although, the logging APIs and backends are interchangeable, using
>>> the intended backend with its matching API provides the best performance
>>> for both log4j-api/log4j-core and slf4j/logback.
>>>
>>> *C. Impact on IDE usage*
>>>
>>> IntelliJ projects for Geode should automatically pull in geode-log4j
>>> when it re-imports from gradle. Note that may see warnings about *"**No
>>> Log4j 2 configuration file found.**"* if you're running a test that
>>> doesn't have geode-log4j on its classpath.
>>>
>>> For more advanced projects in IntelliJ with additional non-Geode
>>> modules, you might benefit from using *-Dclasspath* (or other
>>> proprietary/environment options) in *Gradle VM options*.
>>>
>>> The commit on develop:
>>>
>>> commit efc2362d2bae0877a427ce2c29beae94118d6567
>>> Author: Kirk Lund <kl...@apache.org>
>>> Date:   Thu Aug 8 15:17:54 2019 -0700
>>>
>>>     GEODE-6964: Move geode log4j core classes to geode-log4j
>>>
>>>     Introduce new Logging and Alerting SPIs. Extract all log4j-core code
>>> to
>>>     geode-log4j module.
>>>
>>>     The geode-core module no longer contains log4j2.xml and no longer
>>> has a
>>>     dependency on log4j-core.
>>>
>>>     All code that uses log4j-core has moved to the new module
>>> geode-log4j.
>>>     The log4j2.xml for Geode now lives in geode-log4j as well. These
>>>     changes ensure that users have better control over logging including
>>>     which backend to use. This should improve user experience when using
>>>     Spring Boot.
>>>
>>>     Co-authored-by: Mark Hanson <mhan...@pivotal.io>
>>>
>>> Let me know if there are any questions or if anyone runs into anything
>>> interesting because of these changes.
>>>
>>>

Reply via email to