spring-cloud / spring-cloud/spring-cloud-commons
Occasionally, deadlocks occur when the main thread and asynchronous thread initialize the same Feign Api call
@OlgaMaciaszek is already working on this.
Since Jun 25, 2024.
- Dominant language
- Java
- Stars
- 751
- Forks
- 744
- Avg merge
- 1d 14h
- Merged PRs (30d)
- 9
Description
When I initiate a remote call for initialization using a Feign API in the main thread, and perform similar operations using the same Feign API in an asynchronous thread in the initialization of another class.
I am following org.springframework.cloud.context.named.NamedContextFactory#getContext obtains the lock, there will be a call to the context.refresh(), which in turn will contain another lock. At certain times, due to uncontrollable sequence, the main thread may experience a deadlock and fail to start.
Sample
@Component
Class A {
@PostConstruct
public void init() {
// Feign Api remote call
}
}
@Component
Class B {
@PostConstruct
public void init() {
Executors.newSingleThreadExecutor().execute(() -> {
// Same feign API calls
});
}
}
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Assessment
This issue has not been assessed yet.