Skip to content

Conversation

Kcruz28
Copy link

@Kcruz28 Kcruz28 commented Oct 3, 2025

AsyncThreadContextDefaultTest was a state leak. Since the test is parameterized, the ThreadContext wasn't being reset between runs. This meant data from a previous test execution could sometimes carry over and cause assertions in the next run to fail.

The fix is to ensure the ThreadContext is cleared before every test execution.

I added a @BeforeEach method to the shared base class, AbstractAsyncThreadContextTestBase.java. This new method simply calls ThreadContext.clearAll(), guaranteeing that each test starts with a clean slate.

This change prevents the state leak and makes the test reliable. Placing the fix in the base class also protects other tests that inherit from it against similar issues.

Fixes: #3049

Important

Base your changes on 2.x branch if you are targeting Log4j 2; use main otherwise.

Checklist

Before we can review and merge your changes, please go through the checklist below. If you're still working on some items, feel free to submit your pull request as a draft—our CI will help guide you through the remaining steps.

✅ Required checks

  • License: I confirm that my changes are submitted under the Apache License, Version 2.0.

  • Commit signatures: All commits are signed and verifiable. (See GitHub Docs on Commit Signature Verification).

  • Code formatting: The code is formatted according to the project’s style guide.

    How to check and fix formatting
    • To check formatting: ./mvnw spotless:check
    • To fix formatting: ./mvnw spotless:apply

    See the build instructions for details.

  • Build & Test: I verified that the project builds and all unit tests pass.

    How to build the project

    Run: ./mvnw verify

    See the build instructions for details.

🧪 Tests (select one)

  • I have added or updated tests to cover my changes.
  • No additional tests are needed for this change.

📝 Changelog (select one)

  • I added a changelog entry in src/changelog/.2.x.x. (See Changelog Entry File Guide).
  • This is a trivial change and does not require a changelog entry.

The test  can fail intermittently due to state from  leaking between parameterized test runs.

This commit fixes the issue by adding a  method to the base class  that calls  to ensure each test run starts with a clean state.
@Kcruz28 Kcruz28 changed the title FIX: LOG4J2-XXXX - AsyncThreadContextDefaultTest is flaky Fix: AsyncThreadContextDefaultTest is flaky Oct 3, 2025
@Kcruz28 Kcruz28 changed the title Fix: AsyncThreadContextDefaultTest is flaky Fix: Prevent state leakage in AsyncThreadContext tests Oct 3, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
Status: To triage
Development

Successfully merging this pull request may close these issues.

The test AsyncThreadContextDefaultTest is unreliable
1 participant