Hacktoberfest 2026: as issues que os mantenedores marcaram para outubro, abertas e boas para iniciantes. Ver issues do Hacktoberfest

[BUG] - 契约加载问题

Aberta
#4,995 0 comentários 0 reações 0 responsáveis Ver no GitHub

Ninguém assumiu esta issue ainda.

Avaliação

Dificuldade
3/5
Tempo estimado
1-2 dias
Facilidade para iniciantes
48/100
Tipo de issue
Bug
Clareza
Razoavelmente clara
Status de atividade
Estagnada
Stack de tecnologia
java

Direção de pesquisa

Comece lendo findLatest, initData e createDataByOtherRule em MicroserviceVersionRule e, em seguida, compare o comportamento deles com a documentação vinculada sobre regras de versão. Reproduza o caso 0.0.0.0+ usando as versões de serviço online e offline indicadas. Está concluído quando a regra configurada carrega os contratos necessários para a nova interface e a chamada do consumidor é bem-sucedida.

Escrita pelo modelo de indexação a partir do texto da issue.

Descrição

bug
Steps to Reproduce

一、问题

  1. 设置versionRule=0.0.0.0+,而非latest
  2. B作为服务端,高版本离线,低版本在线,且低版本存在新接口,
    A作为消费端,测试调用新接口的情况,报契约问题;
    将B的低版本号改为更高版本号,测试通过。

二、怀疑原因
在findLatest函数中只加载了最大版本的契约,不符合文档描述
findLatest:170, MicroserviceVersionRule (org.apache.servicecomb.registry.consumer)
initData:150, MicroserviceVersionRule (org.apache.servicecomb.registry.consumer)
createDataByOtherRule:229, MicroserviceVersionRule (org.apache.servicecomb.registry.consumer)

日志打印:
[oup0-1-thread-1] [ MicroserviceVersions] --- create MicroserviceVersionRule, appId=XXX, microserviceName=XXX, versionRule=0.0.0.0+.

三、文档描述
https://servicecomb.incubator.apache.org/references/java-chassis/2.x/zh_CN/build-consumer/with-contract.html
version-rule是版本匹配规则,有四种格式:
精确版本匹配:例如version-rule: 0.0.1,表示只匹配版本号为0.0.1的服务提供者
后续版本匹配:例如version-rule: 1.0.0+,表示匹配版本号大于或等于1.0.0的服务提供者
最新版本:version-rule: latest,表示匹配最新版本的服务提供者
版本范围:例如1.0.0-2.0.2,表示匹配版本号在1.0.0至2.0.2之间的服务提供者,包含1.0.0和2.0.2
此配置项默认为latest

Expected Behavior

期望在配置0+的versionRule时,能加载所有契约或加载在线实例的契约

Servicecomb Version

2.8.24

Additional Context

业务有诉求,不能保证单个微服务每次升级的版本号是递增的

No response

Linguagem predominante
Java
Estrelas
1.9k
Forks
813
Métricas de merge de PRs
Nenhum PR com merge em 30d

Preparar o ambiente

  • Sem Dockerfile nem arquivo Docker Compose
  • Tem um modelo de pull request
  • Sem guia de contribuição

Primeiros passos

  1. Leia a issue inteira e depois o guia de contribuição do projeto.
  2. Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
  3. Faça um fork do repositório e trabalhe em uma branch.
  4. Abra um pull request que referencie o número da issue.

Mais de apache/servicecomb-java-chassis

Todas as issues de apache/servicecomb-java-chassis

Issues semelhantes

Mais issues de Java

Receba novas issues na sua caixa de entrada

Um resumo curto de issues do GitHub para quem está começando.