apache / apache/servicecomb-java-chassis

SDK支持契约每次启动覆盖(和environment无关),但是注册中心不支持非开发环境覆盖

Abierto
#3,467 1 comentario 0 reacciones 0 asignados Ver en GitHub
Lenguaje dominante
Java
Estrellas
1.9k
Forks
814
Merge medio
8 d 23 h
PR fusionados (30 d)
1

Descripción

SDK在检测到契约不一致时,判断是否可以注册契约是或的关系,从代码看可以理解为环境为开发环境或者配置servicecomb.service.registry.instance.alwaysOverrideSchema为true就可以覆盖契约。

```
if (onlineSchemaIsModifiable()) {
LOGGER.warn(
"schema[{}]'s content is changed and the current environment is [{}], so re-register it. It's recommended "
+ " to change servicecomb_description.version after schema change, or restart consumer to"
+ " make changes get notified.",
localSchemaEntry.getKey(),
microservice.getEnvironment());
return registerSingleSchema(localSchemaEntry.getKey(), localSchemaEntry.getValue());
}
```

```
private boolean onlineSchemaIsModifiable() {
return ServiceCombConstants.DEVELOPMENT_SERVICECOMB_ENV.equalsIgnoreCase(microservice.getEnvironment())
|| ServiceRegistryConfig.INSTANCE.isAlwaysOverrideSchema();
}
```

但是注册中心会给出报错:
2022-11-09T10:19:21.431+0800 ERROR service/schema.go:638 production mode, schema[47c80fa9eb5be73c2a7a7f6a1fa5e8bb70c2e9de/*_mgr] already exist, can not be changed, operator: 10.30.116.57
2022-11-09T10:19:21.431+0800 ERROR service/schema.go:547 modify schema[47c80fa9eb5be73c2a7a7f6a1fa5e8bb70c2e9de/*_mgr] failed, operator: 10.30.116.57 {"error": "Not allowed to modify schema(schema already exist, can not be changed in production)"}

这个问题应该如何解决或者规避 ?避免测试环境每次部署环境需要版本号+1的问题 ?

Guía de contribución

No hay ninguna guía de contribución indexada para este repositorio

Línea de trabajo

Comienza rastreando onlineSchemaIsModifiable() y ServiceRegistryConfig.INSTANCE.isAlwaysOverrideSchema() en el SDK; después, compara ese comportamiento con el rechazo en modo de producción mostrado en service/schema.go. Determina cómo deberían interactuar la configuración del SDK y la política del registro para que las implementaciones de prueba puedan sobrescribir un esquema existente sin incrementar su versión, y verifica el comportamiento de registro resultante.

Escrito por el modelo de indexación a partir del texto del issue.

Evaluación

Stack tecnológico
java
Área
backend
Tipo de issue
Error
Dificultad
4/5
Tiempo estimado
3-5 días
Estado de actividad
Estancado
Claridad
Bastante claro
Aptitud para principiantes
35/100

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.