-
Notifications
You must be signed in to change notification settings - Fork 163
Description
Describe the bug
参见这里 对connection, stream, message 的定义。在一个TCP connection上,Kindling不能正确处理下面两种类型的通信场景
case1: 两个流的response message 逆序
case2: client发起的流包裹 server 发起的流
图示如下

case1: Client 连续向Server发送两个请求request1 和 request2,Server先响应了response2,后响应response1。 按照当前 Network.ConsumeEvent的处理逻辑:request2 报文会被merge到request1的尾部(即request2被隐藏),response1 会被丢弃,request1 和response2会被错误的配对在一起,进行 NetworkAnalyzer.distributeTraceMetric分析
case2: Client 首先向Server发送request1,Server收到request1 没有立即响应,而是向Client发送了request2, Client响应了response2 后,Server才响应response1。 按照当前 Network.ConsumeEvent 的处理逻辑:request1 和response2 会被配对,进行NetworkAnalyzer.distributeTraceMetric分析,response2 和response1 也会被配对,进行NetworkAnalyzer.distributeTraceMetric分析。错误的配对,必然导致解析失败
Additional context
这两个case,是我用kindling解析公司自研协议观察到的,我设计了对这个问题的解决方案,正在编码实现。本周我会把解决方案提交成proposal
