You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
if triggerWrite {
if operator.OnWrite != nil {
// for non-connection
operator.OnWrite(p)
} else {
// only for connection
var bs, supportZeroCopy = operator.Outputs(barriers[i].bs)
if len(bs) > 0 {
// TODO: Let the upper layer pass in whether to use ZeroCopy.
var n, err = iosend(operator.FD, bs, barriers[i].ivs, false && supportZeroCopy)
operator.OutputAck(n)
if err != nil {
p.appendHup(operator)
continue
}
}
}
}
operator.done()
}
我们在使用read-throttle的分支,发现eventloop崩溃了。
原因在于:
上述这段代码在read-throttle和develop分支是一样的。触发bug的原因是,添加限流以后,var n, err = iosend(operator.FD, bs, barriers[i].ivs, false && supportZeroCopy) 触发了内核关闭连接,然而这里没有对iosend返回的错误进行判断(可能连接已经不可用了),直接outputAck了,导致panic.
The text was updated successfully, but these errors were encountered: