refactor: Singletonize OkHttpClient for better reuse #372
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Refactor: Singletonize OkHttpClient for better reuse
Summary
This PR refactors the OkHttpClient instantiation in MultiAgentServiceImpl from per-request creation to a singleton pattern managed by Spring, significantly improving performance and resource utilization.
Problem Statement
Performance Issues:
OkHttpClientinstance was created for every SSE requestResource Management Issues:
BufferedReaderwas not properly closed, leading to potential file descriptor leaksSolution
1. OkHttpClient Configuration Class
@PreDestroyhook for graceful shutdown of resources2. MultiAgentServiceImpl Refactoring
@Autowired3. Comprehensive Unit Tests
Performance Improvements
Files Changed
Added:
genie-backend/src/main/java/com/jd/genie/config/OkHttpClientConfig.java
genie-backend/src/test/java/com/jd/genie/config/OkHttpClientConfigTest.java
genie-backend/src/test/java/com/jd/genie/service/impl/OkHttpClientIntegrationTest.java
Modified:
Test Results
All tests passed successfully: