2.8.17版本,微服务A首次调用B微服务时,为什么会加载B微服务的线程池信息
還沒有人認領這個 Issue。
評估
- 難度
- 4/5
- 預估耗時
- 3-5 天
- 新手友好度
- 25/100
- Issue 類型
- 缺陷
- 描述清晰度
- 需要釐清
- 活躍度
- 停滯
研究方向
從 OperationMeta.init 和 ExecutorManager.findExecutorById 開始,接著追蹤 CreateMicroserviceVersionEvent 經過 ServiceRegistryListener 和 MicroserviceMeta 的路徑。比較 schemaB 的 executor 設定在 microservices A 和 B 中是如何解析的,並在可能的情況下重現該故障。完成標準是記錄此查找是否符合預期,並找出所需的修正變更。
由索引模型根據 Issue 內容生成。
描述
背景:
- 微服务A首次调用微服务B,此时会有CreateMicroserviceVersionEvent事件,在微服务A中触发微服务B的元数据加载
- 微服务B中定义针对schemaB指定了线程池executorB,但是在微服务A中并未指定
问题:
-
此时微服务A中没有指定特殊线程池,但微服务A在查找schemaB的线程配置
OperationMeta.init
-
微服务A因为找不到schemaB线程池配置,而抛出异常
2025-01-13 18:59:40.905 [group0-1-thread-10] ERROR - [MicroserviceVersions.java:safeSetInstances:210] - [d2dfe91a-eeab-4f57-b731-8189a524f50a] - Failed to setInstances, appId=ApperySecdSerce, microserviceName=ApperySecdServippGallecDroi****Serve.
org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'healthExecutor' available
at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeanDefinition(DefaultListableBeanFactory.java:874) ~[spring-beans-5.3.34.jar!/:5.3.34]
at org.springframework.beans.factory.support.AbstractBeanFactory.getMergedLocalBeanDefinition(AbstractBeanFactory.java:1359) ~[spring-beans-5.3.34.jar!/:5.3.34]
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:310) ~[spring-beans-5.3.34.jar!/:5.3.34]
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:209) ~[spring-beans-5.3.34.jar!/:5.3.34]
at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1171) ~[spring-context-5.3.34.jar!/:5.3.34]
at org.apache.servicecomb.foundation.common.utils.BeanUtils.getBean(BeanUtils.java:139) ~[foundation-common-2.8.17.jar!/:2.8.17]
at org.apache.servicecomb.core.executor.ExecutorManager.findExecutorById(ExecutorManager.java:118) ~[java-chassis-core-2.8.17.jar!/:2.8.17]
at org.apache.servicecomb.core.executor.ExecutorManager.findByKey(ExecutorManager.java:109) ~[java-chassis-core-2.8.17.jar!/:2.8.17]
at org.apache.servicecomb.core.executor.ExecutorManager.findExecutor(ExecutorManager.java:83) ~[java-chassis-core-2.8.17.jar!/:2.8.17]
at org.apache.servicecomb.core.executor.ExecutorManager.findExecutor(ExecutorManager.java:57) ~[java-chassis-core-2.8.17.jar!/:2.8.17]
at org.apache.servicecomb.core.definition.OperationMeta.init(OperationMeta.java:60) ~[java-chassis-core-2.8.17.jar!/:2.8.17]
at org.apache.servicecomb.core.definition.SchemaMeta.initOperationMetas(SchemaMeta.java:63) ~[java-chassis-core-2.8.17.jar!/:2.8.17]
at org.apache.servicecomb.core.definition.SchemaMeta.(SchemaMeta.java:53) ~[java-chassis-core-2.8.17.jar!/:2.8.17]
at org.apache.servicecomb.core.definition.MicroserviceMeta.registerSchemaMeta(MicroserviceMeta.java:122) ~[java-chassis-core-2.8.17.jar!/:2.8.17]
at org.apache.servicecomb.core.definition.ServiceRegistryListener.onCreateMicroserviceVersion(ServiceRegistryListener.java:105) ~[java-chassis-core-2.8.17.jar!/:2.8.17]
at org.apache.servicecomb.foundation.common.event.SimpleSubscriber.syncDispatch(SimpleSubscriber.java:118) ~[foundation-common-2.8.17.jar!/:2.8.17]
at org.apache.servicecomb.foundation.common.event.SimpleSubscriber.dispatchEvent(SimpleSubscriber.java:107) ~[foundation-common-2.8.17.jar!/:2.8.17]
at org.apache.servicecomb.foundation.common.event.SimpleEventBus.post(SimpleEventBus.java:74) ~[foundation-common-2.8.17.jar!/:2.8.17]
at org.apache.servicecomb.registry.consumer.MicroserviceVersion.(MicroserviceVersion.java:58) ~[foundation-registry-2.8.17.jar!/:2.8.17]
at org.apache.servicecomb.registry.consumer.MicroserviceVersions.createMicroserviceVersion(MicroserviceVersions.java:259) ~[foundation-registry-2.8.17.jar!/:2.8.17]
at org.apache.servicecomb.registry.consumer.MicroserviceVersions.lambda$setInstances$1(MicroserviceVersions.java:240) ~[foundation-registry-2.8.17.jar!/:2.8.17]
at java.util.concurrent.ConcurrentHashMap.computeIfAbsent(ConcurrentHashMap.java:1660) ~[?:1.8.0_402]
at org.apache.servicecomb.foundation.common.concurrent.ConcurrentHashMapEx.computeIfAbsent(ConcurrentHashMapEx.java:56) ~[foundation-common-2.8.17.jar!/:2.8.17]
at org.apache.servicecomb.registry.consumer.MicroserviceVersions.setInstances(MicroserviceVersions.java:239) ~[foundation-registry-2.8.17.jar!/:2.8.17]
at org.apache.servicecomb.registry.consumer.MicroserviceVersions.safeSetInstances(MicroserviceVersions.java:207) ~[foundation-registry-2.8.17.jar!/:2.8.17]
at org.apache.servicecomb.registry.consumer.MicroserviceVersions.pullInstances(MicroserviceVersions.java:186) ~[foundation-registry-2.8.17.jar!/:2.8.17]
at org.apache.servicecomb.registry.consumer.MicroserviceManager.getOrCreateMicroserviceVersions(MicroserviceManager.java:66) ~[foundation-registry-2.8.17.jar!/:2.8.17]
at org.apache.servicecomb.registry.consumer.AppManager.getOrCreateMicroserviceVersions(AppManager.java:70) ~[foundation-registry-2.8.17.jar!/:2.8.17]
at org.apache.servicecomb.registry.DiscoveryManager.getOrCreateMicroserviceVersions(DiscoveryManager.java:141) ~[foundation-registry-2.8.17.jar!/:2.8.17]
at org.apache.servicecomb.core.SCBEngine.createMicroserviceReferenceConfig(SCBEngine.java:545) ~[java-chassis-core-2.8.17.jar!/:2.8.17]
at org.apache.servicecomb.core.SCBEngine.createMicroserviceReferenceConfig(SCBEngine.java:516) ~[java-chassis-core-2.8.17.jar!/:2.8.17]
at org.apache.servicecomb.provider.springmvc.reference.CseClientHttpRequest.createRequestMeta(CseClientHttpRequest.java:184) ~[provider-springmvc-2.8.17.jar!/:2.8.17]
at org.apache.servicecomb.provider.springmvc.reference.CseClientHttpRequest.execute(CseClientHttpRequest.java:169) ~[provider-springmvc-2.8.17.jar!/:2.8.17]
at org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:782) ~[spring-web-5.3.34.jar!/:?]
at org.springframework.web.client.RestTemplate.execute(RestTemplate.java:717) ~[spring-web-5.3.34.jar!/:?]
at org.springframework.web.client.RestTemplate.exchange(RestTemplate.java:637) ~[spring-web-5.3.34.jar!/:?]
at org.apache.servicecomb.provider.springmvc.reference.RestTemplateWrapper.exchange(RestTemplateWrapper.java:196) ~[provider-springmvc-2.8.17.jar!/:2.8.17]
疑问:
请帮解答下为什么需要在微服务A中查找微服务B的schemaB配置的线程池?
- 主要語言
- Java
- 星號
- 1.9k
- 分支
- 813
- PR 合併指標
- 30 天內沒有已合併 PR
環境準備
- 沒有 Dockerfile 或 Docker Compose 檔案
- 有 Pull Request 範本
- 沒有貢獻指南
從這裡開始
- 先讀完整個 Issue,再讀專案的貢獻指南。
- 在 Issue 下留言說明你要接手 —— 這能避免兩個人做同樣的事。
- Fork 儲存庫,在一個分支上完成修改。
- 送出 Pull Request,並在描述裡引用這個 Issue 編號。
apache/servicecomb-java-chassis 的其他 Issue
-
bug
難度 2/5 1-3 小時 新手友好度 65/100
apache/servicecomb-java-chassis#5106 ·
-
question
難度 5/5 一週以上 新手友好度 35/100
apache/servicecomb-java-chassis#5153 · 1 則留言 ·
-
question
難度 4/5 3-5 天 新手友好度 25/100
apache/servicecomb-java-chassis#5146 ·
-
[FEATURE] - When will ServiceComb support Spring Boot 4.x, Spring Framework 7.x, and Jackson 3.x?未關閉enhancement
難度 5/5 一週以上 新手友好度 25/100
apache/servicecomb-java-chassis#5145 ·
-
[BUG] - The latest instance information cannot be obtained when cache instances is empty.可能重新可做 @chengyouling 於 155 天前認領,目前沒有進行中的 PR。 未關閉2.x bug
apache/servicecomb-java-chassis#5141 · 已指派 1 人 ·
查看 apache/servicecomb-java-chassis 的全部 Issue
相似的 Issue
-
enhancement feature
難度 2/5 1-3 小時 新手友好度 70/100
rsp777/service-pulse-app#28 ·
-
human-required sync-failed
難度 2/5 1-3 小時 新手友好度 68/100
Azure/osdu-spi-file#63 ·
維護者通常 1 天內回覆
-
area/ysql kind/enhancement priority/medium status/awaiting-triage
難度 2/5 1-3 小時 新手友好度 73/100
yugabyte/yugabyte-db#35578 ·
維護者通常 1 天內回覆
-
frontend quick win
難度 2/5 1-3 小時 新手友好度 65/100
CodeForPhilly/benefit-decision-toolkit#571 ·
維護者通常 1 天內回覆
-
approved
難度 2/5 1-3 小時 新手友好度 67/100
checkstyle/checkstyle#22129 ·
維護者通常 1 天內回覆