fix(notify): 根治低带宽控制面阻塞与传输写入卡死

- 为控制消息增加优先级、公平调度、队列字节预算和自适应批处理
- 支持可取消的写门等待,收紧 shared/dedicated bulk、stream 和 Reply 写入边界
- 修复 bulk reset/close、连接 handoff 和安全 profile 切换时序
- 保留旧取消与超时错误契约,新增阶段化 TransportSendError
- 增加 ReplyCtx、ReplyObjCtx、写超时配置及黑洞连接和竞态回归测试
This commit is contained in:
2026-08-14 10:16:37 +08:00
parent 98ef9e7fcc
commit 0826e17063
45 changed files with 4231 additions and 293 deletions
+33 -6
View File
@@ -793,31 +793,58 @@ func sendBulkResetServerTransport(ctx context.Context, s Server, transport *Tran
return decodeBulkResetResponse(msg)
}
func sendBulkReleaseClient(c Client, req BulkReleaseRequest) error {
func sendBulkReleaseClient(ctx context.Context, c *ClientCommon, req BulkReleaseRequest) error {
if c == nil {
return errBulkClientNil
}
return c.SendObj(BulkReleaseSignalKey, req)
data, err := encode(req)
if err != nil {
return err
}
_, err = c.sendWithContext(ctx, TransferMsg{
Key: BulkReleaseSignalKey,
Value: data,
Type: MSG_ASYNC,
})
return err
}
func sendBulkReleaseServerLogical(s Server, logical *LogicalConn, req BulkReleaseRequest) error {
func sendBulkReleaseServerLogical(ctx context.Context, s *ServerCommon, logical *LogicalConn, req BulkReleaseRequest) error {
if s == nil {
return errBulkServerNil
}
if logical == nil {
return errBulkLogicalConnNil
}
return s.SendObjLogical(logical, BulkReleaseSignalKey, req)
data, err := encode(req)
if err != nil {
return err
}
_, err = s.sendLogicalContext(ctx, logical, TransferMsg{
Key: BulkReleaseSignalKey,
Value: data,
Type: MSG_ASYNC,
}, 0)
return err
}
func sendBulkReleaseServerTransport(s Server, transport *TransportConn, req BulkReleaseRequest) error {
func sendBulkReleaseServerTransport(ctx context.Context, s *ServerCommon, transport *TransportConn, req BulkReleaseRequest) error {
if s == nil {
return errBulkServerNil
}
if transport == nil {
return errBulkTransportNil
}
return s.SendObjTransport(transport, BulkReleaseSignalKey, req)
data, err := encode(req)
if err != nil {
return err
}
_, err = s.sendTransportContext(ctx, transport, TransferMsg{
Key: BulkReleaseSignalKey,
Value: data,
Type: MSG_ASYNC,
})
return err
}
func decodeBulkOpenRequest(msg *Message) (BulkOpenRequest, error) {