jetty - Jetty 中 HttpChannel.handle 中的 IllegalStateException
问题描述
我的日志充满了这样的异常:
8884902 [qtp1075738627-4458] WARN o.eclipse.jetty.server.HttpChannel - /upload
java.lang.NullPointerException: null
78884902 [qtp1075738627-4458] WARN o.e.j.u.t.strategy.EatWhatYouKill -
java.lang.IllegalStateException: s=IDLE rs=COMPLETED os=ABORTED is=READY awp=false se=false i=false al=0
at org.eclipse.jetty.server.HttpChannelState.unhandle(HttpChannelState.java:416)
at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:538)
即使系统似乎工作正常。有点担心“正常”操作将包括大量此类日志。我找不到其他人得到这样的例外。这都是在当前版本的 Jetty 上,带有 Spring Boot 2.3.1 应用程序,使用 http2 连接器。它发生在应用程序中的几个不同的 URI 上,没有明确的模式。对此有什么想法吗?我不想接受有不间断的异常作为这个系统的正常行为。
查看 HttpChannelState 的源代码,我可以看到异常来自:
("s=%s i=%b a=%s",_state,_initial,_async);
但我无法进一步追踪这意味着什么。
解决方案
您对 Servlet Async Processing 或 Servlet Async I/O 的使用可能是原因。
像这样中止的输出流也很奇怪。
的来源(在代码中)8884902 [qtp1075738627-4458] WARN o.eclipse.jetty.server.HttpChannel - /upload java.lang.NullPointerException: null
但是为什么它没有堆栈跟踪也很奇怪。
您应该在 Eclipse Jetty 问题跟踪器https://github.com/eclipse/jetty.project/issues将此作为问题提交,并与我们一起找出问题的根源。
如果您可以足够容易地复制,那将使事情更容易排除故障。
由于您使用的是 HTTP2,因此请确保同时升级您的 Java 版本和 Eclipse Jetty。
推荐阅读
- bash - 如何将 bash 中的某个输入映射到命令?
- javascript - 防止在点击 VuetifyJS 组合框后调用软键盘
- ios - Swift为透明导航栏创建子类
- rust - 具有对内部闭包的引用的迭代器的智能构造函数
- objective-c - 来自旧数据库的 csv 转储的 nsdate
- apache-spark - Spark 结构化流 Kinesis 数据源
- sql - Rails 中的 SQL 关系。尝试为一个表关系创建两个不同的引用。非常混乱的情况
- regex - 如何在 HTML 中选择文本的特定部分并使用正则表达式将其转换为大写?
- reactjs - 如何使用 babel 配置 Webpack 以识别类的静态属性?
- c# - EF 问题添加带有子实体列表的实体