Hacktoberfest 2026 : les issues que les mainteneurs ont marquées pour octobre, ouvertes et accessibles aux débutants. Parcourir les issues Hacktoberfest

Java-Chassis2.8分支的ServicePathManager初始化流程的健壮性不足

Ouverte
#4,294 1 commentaire 0 réactions 0 personnes assignées Voir sur GitHub

Personne n'a encore pris cette issue.

Évaluation

Difficulté
5/5
Temps estimé
Plus d'une semaine
Accessibilité débutants
25/100
Type d'issue
Bug
Clarté
Plutôt claire
Activité
À l'abandon
Stack technique
java

Piste de recherche

Commencez par suivre RestEngineSchemaListener#onCreateMicroserviceVersion et l’initialisation de MicroserviceVersion, puis examinez EdgeInvocation#edgeInvoke et SCBEngine#ensureStatusUp. Confirmez quels chemins de création peuvent précéder l’enregistrement auprès de EventBus. Le travail est terminé lorsque chaque MicroserviceVersion possède son ServicePathManager et que le répartiteur edge gère la vérification d’état requise.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Description

问题原理分析

Java-Chassis做微服务调用的时候, 要求能从 MicroserviceMeta 中取出 ServicePathManager 实例. 而将 ServicePathManager 设置进 MicroserviceMeta 的逻辑是在 RestEngineSchemaListener#onCreateMicroserviceVersion 方法中执行的. 这个监听器从 guava EventBus 监听 CreateMicroserviceVersionEvent 事件, 并创建 ServicePathManager 与对应的 MicroserviceVersion 关联起来.

RestEngineSchemaListener 是在BEFORE_REGISTRY事件阶段注册到 EventBus 的, 也就是说, 如果有MicroserviceVersion对象是在RestEngineSchemaListener注册到 EventBus 之前创建的, 则它无法触发 RestEngineSchemaListener 执行上述动作, 也就不会有对应的 ServicePathManager 对象. 而且, 这个问题是不可恢复的, 一旦MicroserviceVersion对象有这个问题, 除非重启, 否则它一直会保持有问题的状态, 导致consumer端一直调用不了对应的producer微服务.

例如, EdgeService场景下, EdgeInvocation#edgeInvoke 就会触发创建MicroserviceVersion对象, 这是有可能在 BEFORE_REGISTRY 事件之前触发的(它不在SCBEngine#ensureStatusUp的保护范围之内).

建议

  1. 能否取消RestEngineSchemaListener, 目前它做的事情就是在 MicroserviceVersion 对象创建出来的时候, 创建一个 ServicePathManager 对象与之对应. 这个流程能否挪到 MicroserviceVersion 自身的初始化方法中?
  2. edge Dispatcher中也应该做 SCBEngine#ensureStatusUp 状态检查.

这两条都有价值做, 因为建议2无法完全拦截建议1涉及的场景.

Langage dominant
Java
Étoiles
1.9k
Forks
813
Merge moyen
8 j 23 h
PR mergées (30 j)
1

Préparer son environnement

Nous n'avons pas encore vérifié les fichiers d'installation de ce projet. Commencez par son README, et consultez notre guide de la première contribution pour les étapes générales.

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Autres issues de apache/servicecomb-java-chassis

Toutes les issues de apache/servicecomb-java-chassis

Issues similaires

Plus d'issues Java

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.