Andrea Cosentino created CAMEL-26762:
----------------------------------------
Summary: camel-test-infra-common - SingletonService shuts a
singleton service down once per test class, at the same time
Key: CAMEL-26762
URL: https://issues.apache.org/jira/browse/CAMEL-26762
Project: Camel
Issue Type: Test
Components: camel-test-infra
Reporter: Andrea Cosentino
Assignee: Andrea Cosentino
{{SingletonService.addToStore}} registers a JVM shutdown hook on every
{{beforeAll}}, outside the {{computeIfAbsent}} that creates the singleton once.
A singleton service used by three test classes is therefore shut down three
times, by three hooks that run at the same time:
{noformat}
initialize() on main
shutdown() entered on Thread-3, concurrent calls now 1
shutdown() entered on Thread-2, concurrent calls now 2
shutdown() entered on Thread-4, concurrent calls now 3
{noformat}
Found by Croway in the review of
[#29245|https://github.com/apache/camel/pull/29245] (CAMEL-26618), whose Event
Hubs service guards its {{shutdown()}} with a flag and {{synchronized}} for
this reason. The other singleton services (Blob, Queue, Data Lake, Key Vault,
Event Grid, Cosmos DB, and most test-infra services of other modules) have no
such guard.
*Fix:* register the shutdown hook once, when the singleton is created (for
example in {{doInitializeService}}), and drop the guard of the Event Hubs
service.
_Claude Code on behalf of Andrea Cosentino_
--
This message was sent by Atlassian Jira
(v10.3.26#10030026)