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
+5
View File
@@ -22,6 +22,7 @@ type ServerCommon struct {
stopCtx context.Context
maxReadTimeout time.Duration
maxWriteTimeout time.Duration
replyWriteTimeout atomic.Int64
parallelNum int
wg stario.WaitGroup
peerRegistry *serverPeerRegistry
@@ -47,6 +48,7 @@ type ServerCommon struct {
peerAttachAuthRejectCount atomic.Int64
peerAttachDowngradeRejectCount atomic.Int64
peerAttachBindingRejectCount atomic.Int64
linkMu sync.RWMutex
linkFns map[string]func(message *Message)
defaultFns func(message *Message)
noFinSyncMsgMaxKeepSeconds int64
@@ -62,6 +64,8 @@ type ServerCommon struct {
recordRuntime *recordRuntime
bulkRuntime *bulkRuntime
bulkOpenTuning BulkOpenTuning
udpWriteGateOnce sync.Once
udpWriteGate chan struct{}
bulkDedicatedSidecarMu sync.Mutex
bulkDedicatedSidecars map[*LogicalConn]map[uint32]*bulkDedicatedSidecar
connectionRetryState *connectionRetryState
@@ -78,6 +82,7 @@ func NewServer() Server {
server.parallelNum = 0
server.noFinSyncMsgMaxKeepSeconds = 0
server.maxHeartbeatLostSeconds = 300
server.replyWriteTimeout.Store(int64(defaultMessageReplyWriteTimeout))
server.stopCtx, server.stopFn = context.WithCancel(context.Background())
server.SecretKey = nil
server.handshakeRsaKey = defaultRsaKey