Skip to content

调用连接层的写数据方法 WriteMsg 有并发安全问题 #905

@pengzhezp-1

Description

@pengzhezp-1

有两个地方有问题

  1. 连接模块如websocket的 wsModule 在向连接通道写数据的接口 SendMsg,这个接口可被外部service 直接调用,如果service 下的 WsModule 有10000个连接,这里service 协程会串行给所有连接写数据,有阻塞风险。 应该给每一个 socket 开一个协程写 socket数据,而外部service 通过channel 向 socket 写协程投递 写数据消息。
  2. IRpcHandler 模块 RClient 最后调用的 rc.selfClient.rawGo 时,写数据是在当前 gouroutine 直接调用的,如果多个 service 都向同一个目标node发起rpc,这里会有并发风险

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions