//
// 目前有两类请求:
// 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"))
	}
}
Example #2
0
//
// 将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"))
	}

}