-
Notifications
You must be signed in to change notification settings - Fork 498
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
springboot 版本升级,启动报错 #1210
Comments
我从3.1.5升到3.1.6也是同样的错误,退回3.1.5就全部OK。 |
我也遇到错误,不过和上面两位的不同。 错误日志
错误分析最初还是以为是自己的代码没有更新及时,或者哪里配置不对,还参照官网文档,一步一步重新搭建了一个 spring boot 工程验证。这里面有一个需要注意的点。 最初我是各个包独立依赖,如下面所示: <dependency>
<groupId>com.tencent.cloud</groupId>
<artifactId>spring-cloud-starter-tencent-polaris-discovery</artifactId>
</dependency>
<dependency>
<groupId>com.tencent.cloud</groupId>
<artifactId>spring-cloud-starter-tencent-polaris-config</artifactId>
</dependency>
<dependency>
<groupId>com.tencent.cloud</groupId>
<artifactId>spring-cloud-starter-tencent-polaris-circuitbreaker</artifactId>
</dependency>
<dependency>
<groupId>com.tencent.cloud</groupId>
<artifactId>spring-cloud-starter-tencent-polaris-ratelimit</artifactId>
</dependency>
<dependency>
<groupId>com.tencent.cloud</groupId>
<artifactId>spring-cloud-starter-tencent-metadata-transfer</artifactId>
</dependency> 使用上面的依赖,只要 spring boot 从 3.1.5 改到 3.1.6 就会抛错。 但是官网文档中,建议依赖 经过测试发现使用 临时解决按照上面的思路进行了部分跟踪,目前发现,升级 spring boot 版本会导致依赖的 netty 版本,从 4.1.100.Final 升级到 4.1.101.Final。这就导致了出错。 奈何能力有限,具体原因还不清楚,更不知道怎么改。目前能想到的临时解决办法:
具体怎么解决就得麻烦项目大佬了。 |
目前看是netty版本的冲突,可以现在polaris-java项目尝试升级,不过不确定这个netty版本能否兼容旧版本。 |
是的。核心是 grpc 依赖了 netty。升级了 Spring Boot 版本,就将netty 的版本同步给升。之前初步跟了一下代码,是netty的一个类在新版有了一些变化,拿不到 content-type header 出现抛错。后面我也再详细研究研究。 |
@herodotus-cloud 看了一下,是netty-codec-http2的4.1.101.Final版本中的 } else if (validateHeaders && !headers.isEmpty()) {
// Need to check trailers don't contain pseudo headers. According to RFC 9113
// Trailers MUST NOT include pseudo-header fields (Section 8.3).
for (Iterator<Entry<CharSequence, CharSequence>> iterator =
headers.iterator(); iterator.hasNext();) {
CharSequence name = iterator.next().getKey();
if (Http2Headers.PseudoHeaderName.hasPseudoHeaderFormat(name)) {
throw streamError(stream.id(), PROTOCOL_ERROR,
"Found invalid Pseudo-Header in trailers: %s", name);
}
}
} |
对的,就是这里。4.1.100.Final 是没有 else if 这段代码的。 |
应该是 Netty 为了解决这个问题 grpc/grpc-java#13647,所以在 Netty 4.1.101 Final 中增加了 else if 这个判断。 而 grpc 中,目前是不支持 isEmpty 这个操作的。 |
看了一下grpc-java的社区,这个问题已经修复了,后面就等发布相应的更新。grpc/grpc-java#10663 |
哦,好的。感谢!辛苦啦。 |
grpc-java 1.59.1已发布,使用新版本spring boot时,可以指定grpc-java的版本到最新的,https://github.com/grpc/grpc-java/releases/tag/v1.59.1 <dependency>
<groupId>io.grpc</groupId>
<artifactId>grpc-all</artifactId>
<version>1.59.1</version>
<exclusions>
<exclusion>
<groupId>io.grpc</groupId>
<artifactId>grpc-xds</artifactId>
</exclusion>
</exclusions>
</dependency> |
Describe the bug
springboot 2.7.17 启动正常,springboot 2.7.18 启动报错,错误信息:ERR-1004(API_TIMEOUT): instance register request timeout.
To Reproduce
Steps to reproduce the behavior.
Expected behavior
A clear and concise description of what you expected to happen.
Environment
Additional context
Add any other context about the problem here.
The text was updated successfully, but these errors were encountered: