[
https://issues.apache.org/jira/browse/CAMEL-24038?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=18121595#comment-18121595
]
Guillaume Nodet commented on CAMEL-24038:
-----------------------------------------
This issue is being investigated by a coding agent (on behalf of gnodet).
Root cause identified: thread-safety violations in the test mock
infrastructure. Specifically:
1. *MockTracer.inMemoryStorageMap* is a plain HashMap accessed concurrently
from multiple threads (wiretap creates async exchanges processed on different
threads), causing silent entry loss -- this directly explains the expected: <7>
but was: <6> failures.
2. *MockSpanAdapter.tags* and *DevSpanAdapter.tags* are plain HashMaps whose
isDone tag is set from one thread and read from another without memory barriers.
Fix: replace HashMap with ConcurrentHashMap in the mock test infrastructure
classes in camel-telemetry and camel-telemetry-dev. Single-PR scope.
_Note: This comment was generated by an AI coding agent and requires manual
verification._
> Fix flaky AsyncWiretapTest in camel-telemetry and camel-telemetry-dev
> ---------------------------------------------------------------------
>
> Key: CAMEL-24038
> URL: https://issues.apache.org/jira/browse/CAMEL-24038
> Project: Camel
> Issue Type: Test
> Components: camel-telemetry
> Reporter: Guillaume Nodet
> Assignee: Guillaume Nodet
> Priority: Major
> Labels: test-flaky
> Fix For: 4.22.0
>
>
> AsyncWiretapTest in both camel-telemetry and camel-telemetry-dev modules is
> flaky in CI.
> Root cause: the test sends 10 messages through an async wiretap route with a
> 2-second delay, then asserts on trace data. Traces are written asynchronously
> after exchange processing.
> - camel-telemetry: used Thread.sleep(10000) to wait for traces - brittle and
> slow
> - camel-telemetry-dev: had no wait at all before asserting trace counts
> - Both used mock.assertIsSatisfied(1000) with setAssertPeriod(5000) -
> conflicting and insufficient timeout
> Fix by using Awaitility to poll until all traces with expected span counts
> arrive, and MockEndpoint.assertIsSatisfied with a generous 30-second timeout.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)