func forwardMsgToPool(msg protocol.Message, clusterConnPool connection.Pool, isMaster bool, isAsking bool) (msgAck protocol.Message) { var ( clusterConn connection.Conn err error ) if clusterConn, err = clusterConnPool.Get(); err != nil { logger.Warningf("从连接池中获取句柄出错: %v", err) return protocol.ERR_ClusterSlotsConn } if isMaster { if err = clusterConn.Readwrite(); err != nil { goto failure } } else { if err = clusterConn.Readonly(); err != nil { goto failure } } if isAsking { if err = clusterConn.Asking(); err != nil { goto failure } } if msgAck, err = clusterConn.HandelMessage(msg); err != nil { goto failure } clusterConnPool.Put(clusterConn) return failure: clusterConnPool.Remove(clusterConn) logger.Warningf("转发消息出错: %v", err) return protocol.ERR_ClusterSlotsForward }