// // 目前有两类请求: // 1. ping request // 2. 正常的请求 func (bc *BackendConn) PushBack(r *Request) { if bc.IsConnActive.Get() && !bc.IsMarkOffline.Get() { // 1. 处于Active状态,并且没有标记下线, 则将 Request 添加到 input 中 r.Wait.Add(1) bc.input <- r } else { // 2. 直接报错(返回) r.Response.Err = errors.New(fmt.Sprintf("[%s] Request Assigned to inactive BackendConn", bc.service)) log.Warn(Magenta("Push Request To Inactive Backend")) } }
// // 将Request分配给BackendConnLB // func (bc *BackendConnLB) PushBack(r *Request) { // 关键路径必须有Log, 高频路径的Log需要受verbose状态的控制 if bc.IsConnActive.Get() { r.Service = bc.serviceName r.Wait.Add(1) bc.input <- r } else { r.Response.Err = errors.New(fmt.Sprintf("[%s] Request Assigned to inactive BackendConnLB", bc.serviceName)) log.Warn(Magenta("Push Request To Inactive Backend")) } }