// handleRequest runs the task-specific handler and sends the results to the // request's response hook. func (t *task) handleRequest(req *acomm.Request) { defer t.waitgroup.Done() // Run the task-specific request handler result, streamAddr, taskErr := t.handler(req) // Note: The acomm calls log the error already, but we want to have a log // of the request and response data as well. resp, err := acomm.NewResponse(req, result, streamAddr, taskErr) if err != nil { log.WithFields(log.Fields{ "task": t.name, "req": req, "taskResult": result, "taskErr": taskErr, "error": err, }).Error("failed to create response") return } if err := req.Respond(resp); err != nil { log.WithFields(log.Fields{ "task": t.name, "req": req, "taskResult": result, "taskErr": taskErr, "error": err, }).Error("failed to send response") return } }