You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@ignite.apache.org by "Dmitry Pavlov (Jira)" <ji...@apache.org> on 2023/05/19 10:21:00 UTC

[jira] [Updated] (IGNITE-19063) Fix incorrect behaviour of MemorizingAppender with MutableLogEvent

     [ https://issues.apache.org/jira/browse/IGNITE-19063?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Dmitry Pavlov updated IGNITE-19063:
-----------------------------------
    Labels:   (was: ise)

> Fix incorrect behaviour of MemorizingAppender with MutableLogEvent
> ------------------------------------------------------------------
>
>                 Key: IGNITE-19063
>                 URL: https://issues.apache.org/jira/browse/IGNITE-19063
>             Project: Ignite
>          Issue Type: Test
>            Reporter: Ilya Shishkov
>            Priority: Minor
>         Attachments: MemorizingAppenderTest.patch
>
>
> Since 2.6 version by default Log4j2 utilizes {{MutableLogEvent}} [1], which is a reusable implementation of {{LogEvent}}. 
> Test Log4j2 appender {{MemorizingAppener}} in Ignite captures such events "as is", which can lead to mutation of captured events.
> Currently, it is not happened, because Log4j2 implicitly considers, that it is initialized in web application environment, as we can see in static initialization of Log4j2 {{ReusableLogEventFactory}} and configuration constants and here: [2-5].
> As we can see in [5], availability of {{javax.servlet.Servlet}} or {{jakarta.servlet.Servlet}} (the first one is available in Ignite) classes is a sufficient condition _to eliminate utilization of_ {{ReusableLogEventFactory}}.
> If we turn off "web app mode" by setting up system property "log4j2.is.webapp" to "false", than events in {{MemorizingAppener}} will be mutated after some invocations of logger methods.
> Here is a reproducer patch:  [^MemorizingAppenderTest.patch] 
> Problem can be fixed by if we will store immutable version of events ({{LogEvent#toImmutable}}) in {{MemorizingAppender#append}}.
> Links:
>  # https://issues.apache.org/jira/browse/LOG4J2-1334
>  # [https://github.com/apache/logging-log4j2/blob/e8fba8caf1ffab6dc0161f8f48611dadedb86b2c/log4j-core/src/main/java/org/apache/logging/log4j/core/config/LoggerConfig.java#L101]
>  # [https://github.com/apache/logging-log4j2/blob/b69b7b802539d87aab6b51aca0a0df8a669ce6ee/log4j-core/src/main/java/org/apache/logging/log4j/core/util/Constants.java#L90]
>  # [https://github.com/apache/logging-log4j2/blob/c6fd104ebc14d53ea2adce9f9e6fde9a167529b4/log4j-api/src/main/java/org/apache/logging/log4j/util/Constants.java#L41]
>  # [https://github.com/apache/logging-log4j2/blob/c6fd104ebc14d53ea2adce9f9e6fde9a167529b4/log4j-api/src/main/java/org/apache/logging/log4j/util/Constants.java#L30]



--
This message was sent by Atlassian Jira
(v8.20.10#820010)