apache / apache/servicecomb-java-chassis

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

Đang mở
#3,467 1 bình luận 0 reaction 0 người được giao Xem trên GitHub
Ngôn ngữ chính
Java
Star
1.9k
Fork
814
Merge trung bình
8 ngày 23 giờ
Pull request đã merge (30 ngày)
1

Mô tả

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的问题 ?

Hướng dẫn đóng góp

Chưa lập chỉ mục được hướng dẫn đóng góp cho kho mã nguồn này

Hướng nghiên cứu

Bắt đầu bằng cách lần theo onlineSchemaIsModifiable() và ServiceRegistryConfig.INSTANCE.isAlwaysOverrideSchema() trong SDK, sau đó so sánh hành vi đó với việc từ chối ở chế độ production được thể hiện trong service/schema.go. Xác định cách thiết lập SDK và policy của registry nên tương tác với nhau để các lần triển khai thử nghiệm có thể ghi đè một schema hiện có mà không tăng version của nó, đồng thời xác minh hành vi đăng ký thu được.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Đánh giá

Công nghệ
java
Lĩnh vực
backend
Loại issue
Lỗi
Độ khó
4/5
Thời gian dự kiến
3-5 ngày
Mức độ hoạt động
Đình trệ
Độ rõ ràng
Khá rõ ràng
Mức phù hợp với người mới
35/100

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.