Skip to content

[ISSUE #1207] Add Fallback ClassLoader Strategy for ClientServiceProvider SPI Loading#1208

Open
alwaysmil wants to merge 1 commit intoapache:masterfrom
alwaysmil:master
Open

[ISSUE #1207] Add Fallback ClassLoader Strategy for ClientServiceProvider SPI Loading#1208
alwaysmil wants to merge 1 commit intoapache:masterfrom
alwaysmil:master

Conversation

@alwaysmil
Copy link
Copy Markdown

@alwaysmil alwaysmil commented Mar 26, 2026

[ISSUE 1207] Add Fallback ClassLoader Strategy for ClientServiceProvider SPI Loading

When sending messages in multi-threaded environments, the first few message send attempts may fail intermittently due to ClientServiceProvider.loadService() initialization. Once successfully initialized, subsequent message sends work correctly.

This PR introduces a fallback mechanism in ClientServiceProvider.doLoad() to enhance service provider loading reliability across different classloader environments. When the default ServiceLoader fails to locate an implementation, we attempt loading with an explicit ClassLoader as a degradation strategy.

@lizhimins
Copy link
Copy Markdown
Member

The intermittent failures in multi-threaded environments are more likely caused by a race condition during initialization rather than a ClassLoader issue. The actual fix should be ensuring ClientServiceProvider is initialized in a thread-safe manner.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants