WSO2 MI 无效请求行上的无限循环
WSO2 MI Infinite loop on invalid request line
我 运行 一个非常简单的微集成器服务,它只有 1 个代理服务和一个序列。在此序列中,传入的 XML 消息被传输到 amazon SQS 服务。
如果我 运行 在内置实例的 Integration Studio 中使用它,我没有问题。但是,当我将文件打包到 CAR 并将其提供给 docker 实例时,它会启动并立即受到请求的轰炸?也就是下面的日志接管,不能再手动停止容器:
[2020-04-15 12:45:44,585] INFO
{org.apache.synapse.transport.passthru.SourceHandler} - Writer null
when calling informWriterError ^[[?62;c^[[?62;c[2020-04-15
12:45:46,589] ERROR
{org.apache.synapse.transport.passthru.SourceHandler} - HttpException
occurred org.apache.http.ProtocolException: Invalid request line:
ÇÃ^ú§ß¡ðO©%åË*29xÙVÀ$À(=À&À*kjÀ at
org.apache.http.impl.nio.codecs.AbstractMessageParser.parse(AbstractMessageParser.java:208)
at
org.apache.synapse.transport.http.conn.LoggingNHttpServerConnection$LoggingNHttpMessageParser.parse(LoggingNHttpServerConnection.java:407)
at
org.apache.synapse.transport.http.conn.LoggingNHttpServerConnection$LoggingNHttpMessageParser.parse(LoggingNHttpServerConnection.java:381)
at
org.apache.http.impl.nio.DefaultNHttpServerConnection.consumeInput(DefaultNHttpServerConnection.java:265)
at
org.apache.synapse.transport.http.conn.LoggingNHttpServerConnection.consumeInput(LoggingNHttpServerConnection.java:114)
at
org.apache.synapse.transport.passthru.ServerIODispatch.onInputReady(ServerIODispatch.java:82)
at
org.apache.synapse.transport.passthru.ServerIODispatch.onInputReady(ServerIODispatch.java:39)
at
org.apache.http.impl.nio.reactor.AbstractIODispatch.inputReady(AbstractIODispatch.java:113)
at
org.apache.http.impl.nio.reactor.BaseIOReactor.readable(BaseIOReactor.java:159)
at
org.apache.http.impl.nio.reactor.AbstractIOReactor.processEvent(AbstractIOReactor.java:338)
at
org.apache.http.impl.nio.reactor.AbstractIOReactor.processEvents(AbstractIOReactor.java:316)
at
org.apache.http.impl.nio.reactor.AbstractIOReactor.execute(AbstractIOReactor.java:277)
at
org.apache.http.impl.nio.reactor.BaseIOReactor.execute(BaseIOReactor.java:105)
at
org.apache.http.impl.nio.reactor.AbstractMultiworkerIOReactor$Worker.run(AbstractMultiworkerIOReactor.java:586)
at java.lang.Thread.run(Thread.java:748) Caused by:
org.apache.http.ParseException: Invalid request line:
ÇÃ^þvHÅFmÉ
(@ë¸'º¯æ¦V
我确保没有可能的外部连接,我还找到了描述这个问题的人的旧线程,但他们的解决方案(更改密钥库中的某些内容)不起作用。
此外,我还确保在容器中包含 SQS 证书。
我没有连接到容器的连接设置,所以这也不在考虑范围之内。
我在这里错过了什么?
我不知道为什么,但我确定罪魁祸首是 none 而不是 Portainer。当我关闭 Portainer 时,请求流停止。
根据 Wireshark,所有请求都是针对
GET
http://172.17.0.1:9000/api/endpoints/< containerID >/docker/< someId >/logs
似乎是因为我正在尝试 运行 的 WSO2 容器是一个使用端点的 ESB,并且 returns 不存在的端点上的 400 状态代码 portainer 将重试直到成功。这只是我的观察,所以我可能是错的。
我已通过将我的容器上传到不存在问题的 AWS 来确认我的发现。
我 运行 一个非常简单的微集成器服务,它只有 1 个代理服务和一个序列。在此序列中,传入的 XML 消息被传输到 amazon SQS 服务。 如果我 运行 在内置实例的 Integration Studio 中使用它,我没有问题。但是,当我将文件打包到 CAR 并将其提供给 docker 实例时,它会启动并立即受到请求的轰炸?也就是下面的日志接管,不能再手动停止容器:
[2020-04-15 12:45:44,585] INFO {org.apache.synapse.transport.passthru.SourceHandler} - Writer null when calling informWriterError ^[[?62;c^[[?62;c[2020-04-15 12:45:46,589] ERROR {org.apache.synapse.transport.passthru.SourceHandler} - HttpException occurred org.apache.http.ProtocolException: Invalid request line: ÇÃ^ú§ß¡ðO©%åË*29xÙVÀ$À(=À&À*kjÀ at org.apache.http.impl.nio.codecs.AbstractMessageParser.parse(AbstractMessageParser.java:208) at org.apache.synapse.transport.http.conn.LoggingNHttpServerConnection$LoggingNHttpMessageParser.parse(LoggingNHttpServerConnection.java:407) at org.apache.synapse.transport.http.conn.LoggingNHttpServerConnection$LoggingNHttpMessageParser.parse(LoggingNHttpServerConnection.java:381) at org.apache.http.impl.nio.DefaultNHttpServerConnection.consumeInput(DefaultNHttpServerConnection.java:265) at org.apache.synapse.transport.http.conn.LoggingNHttpServerConnection.consumeInput(LoggingNHttpServerConnection.java:114) at org.apache.synapse.transport.passthru.ServerIODispatch.onInputReady(ServerIODispatch.java:82) at org.apache.synapse.transport.passthru.ServerIODispatch.onInputReady(ServerIODispatch.java:39) at org.apache.http.impl.nio.reactor.AbstractIODispatch.inputReady(AbstractIODispatch.java:113) at org.apache.http.impl.nio.reactor.BaseIOReactor.readable(BaseIOReactor.java:159) at org.apache.http.impl.nio.reactor.AbstractIOReactor.processEvent(AbstractIOReactor.java:338) at org.apache.http.impl.nio.reactor.AbstractIOReactor.processEvents(AbstractIOReactor.java:316) at org.apache.http.impl.nio.reactor.AbstractIOReactor.execute(AbstractIOReactor.java:277) at org.apache.http.impl.nio.reactor.BaseIOReactor.execute(BaseIOReactor.java:105) at org.apache.http.impl.nio.reactor.AbstractMultiworkerIOReactor$Worker.run(AbstractMultiworkerIOReactor.java:586) at java.lang.Thread.run(Thread.java:748) Caused by: org.apache.http.ParseException: Invalid request line: ÇÃ^þvHÅFmÉ (@ë¸'º¯æ¦V
我确保没有可能的外部连接,我还找到了描述这个问题的人的旧线程,但他们的解决方案(更改密钥库中的某些内容)不起作用。
此外,我还确保在容器中包含 SQS 证书。
我没有连接到容器的连接设置,所以这也不在考虑范围之内。
我在这里错过了什么?
我不知道为什么,但我确定罪魁祸首是 none 而不是 Portainer。当我关闭 Portainer 时,请求流停止。
根据 Wireshark,所有请求都是针对
GET http://172.17.0.1:9000/api/endpoints/< containerID >/docker/< someId >/logs
似乎是因为我正在尝试 运行 的 WSO2 容器是一个使用端点的 ESB,并且 returns 不存在的端点上的 400 状态代码 portainer 将重试直到成功。这只是我的观察,所以我可能是错的。
我已通过将我的容器上传到不存在问题的 AWS 来确认我的发现。