[
https://issues.apache.org/jira/browse/HDDS-17209?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
ASF GitHub Bot updated HDDS-17209:
----------------------------------
Labels: pull-request-available (was: )
> Intermittent failure in TestOMBootstrap#testBootstrapFollower
> -------------------------------------------------------------
>
> Key: HDDS-17209
> URL: https://issues.apache.org/jira/browse/HDDS-17209
> Project: Apache Ozone
> Issue Type: Sub-task
> Components: test
> Reporter: Siyao Meng
> Assignee: Siyao Meng
> Priority: Major
> Labels: pull-request-available
>
> {code}
> [ERROR] Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 44.33
> s <<< FAILURE! -- in org.apache.hadoop.ozone.om.TestOMBootstrap
> [ERROR] org.apache.hadoop.ozone.om.TestOMBootstrap.testBootstrapFollower()[2]
> -- Time elapsed: 44.29 s <<< ERROR!
> java.util.concurrent.TimeoutException:
> Timed out waiting for condition. Thread diagnostics:
> Timestamp: 2026-10-21 04:24:31,393
> ...
> at
> org.apache.hadoop.ozone.om.TestOMBootstrap.assertLogCapture(TestOMBootstrap.java:201)
> at
> org.apache.hadoop.ozone.om.TestOMBootstrap.testBootstrapFollower(TestOMBootstrap.java:168)
> {code}
> The follower did log the expected line ({{2026-10-21 04:24:01,589 ...
> om.OzoneManager (OzoneManager.java:installCheckpoint(4892)) - Install
> Checkpoint is finished with Term: 1 and Index: 64}}), 30 seconds before the
> wait timed out, but the {{LogCapturer}} never received it.
> h3. Root cause
> {{Log4j1Capturer}} reuses the layout instance of the root {{stdout}} appender
> for its own {{WriterAppender}}. Log4j 1 {{PatternLayout}} is not thread-safe:
> {{format()}} resets and fills a single shared {{StringBuffer}}, relying on
> the owning appender's lock. With two appenders sharing one layout, a thread
> logging through the capturer and another thread logging through {{stdout}}
> format into the same buffer concurrently, so the captured text can be
> replaced by, or mixed with, another event. The same run shows this on the
> console as two events garbled into one line
> ({{[omNode-3-SstFilteringService#0] 2026-10-21 04:23:46,625
> [omNode-3-InstallSnapshotThread] INFOINFO ...}}). This affects every test
> that uses {{LogCapturer.captureLogs(...)}} while other threads are logging.
> h3. Fix
> Give each {{Log4j1Capturer}} its own {{PatternLayout}} with the same
> conversion pattern instead of sharing the default appender's instance.
> - https://github.com/apache/ozone/actions/runs/39536954941/job/119025384824
--
This message was sent by Atlassian Jira
(v8.20.10#820010)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]