diff --git a/agent/agent.go b/agent/agent.go index b2861932..9b861911 100644 --- a/agent/agent.go +++ b/agent/agent.go @@ -134,7 +134,7 @@ func NewAgent( func (a *Agent) send(m pendingMessage) (err error) { defer func() { if e := recover(); e != nil { - err = constants.ErrBrokenPipe + err = errors.NewError(constants.ErrBrokenPipe, errors.ErrClientClosedRequest) } }() a.reportChannelSize() @@ -145,7 +145,7 @@ func (a *Agent) send(m pendingMessage) (err error) { // Push implementation for session.NetworkEntity interface func (a *Agent) Push(route string, v interface{}) error { if a.GetStatus() == constants.StatusClosed { - return constants.ErrBrokenPipe + return errors.NewError(constants.ErrBrokenPipe, errors.ErrClientClosedRequest) } switch d := v.(type) { @@ -167,7 +167,7 @@ func (a *Agent) ResponseMID(ctx context.Context, mid uint, v interface{}, isErro err = isError[0] } if a.GetStatus() == constants.StatusClosed { - err := constants.ErrBrokenPipe + err := errors.NewError(constants.ErrBrokenPipe, errors.ErrClientClosedRequest) tracing.FinishSpan(ctx, err) metrics.ReportTimingFromCtx(ctx, a.metricsReporters, handlerType, err) return err diff --git a/agent/agent_test.go b/agent/agent_test.go index fc3e82b8..24778216 100644 --- a/agent/agent_test.go +++ b/agent/agent_test.go @@ -148,7 +148,7 @@ func TestAgentSend(t *testing.T) { err error }{ {"success", nil}, - {"failure", constants.ErrBrokenPipe}, + {"failure", e.NewError(constants.ErrBrokenPipe, e.ErrClientClosedRequest)}, } for _, table := range tables { @@ -195,7 +195,7 @@ func TestAgentPushFailsIfClosedAgent(t *testing.T) { assert.NotNil(t, ag) ag.state = constants.StatusClosed err := ag.Push("", nil) - assert.Equal(t, constants.ErrBrokenPipe, err) + assert.Equal(t, e.NewError(constants.ErrBrokenPipe, e.ErrClientClosedRequest), err) } func TestAgentPush(t *testing.T) { @@ -206,7 +206,7 @@ func TestAgentPush(t *testing.T) { }{ {"success_raw", []byte("ok"), nil}, {"success_struct", &someStruct{A: "ok"}, nil}, - {"failure", []byte("ok"), constants.ErrBrokenPipe}, + {"failure", []byte("ok"), e.NewError(constants.ErrBrokenPipe, e.ErrClientClosedRequest)}, } for _, table := range tables { @@ -294,7 +294,7 @@ func TestAgentResponseMIDFailsIfClosedAgent(t *testing.T) { mockMetricsReporters[0].(*metricsmocks.MockReporter).EXPECT().ReportSummary(metrics.ResponseTime, gomock.Any(), gomock.Any()) ctx := getCtxWithRequestKeys() err := ag.ResponseMID(ctx, 1, nil) - assert.Equal(t, constants.ErrBrokenPipe, err) + assert.Equal(t, e.NewError(constants.ErrBrokenPipe, e.ErrClientClosedRequest), err) } func TestAgentResponseMID(t *testing.T) { @@ -309,7 +309,8 @@ func TestAgentResponseMID(t *testing.T) { {"success_raw_msg_err", uint(rand.Int()), []byte("ok"), true, nil}, {"success_struct", uint(rand.Int()), &someStruct{A: "ok"}, false, nil}, {"failure_empty_mid", 0, []byte("ok"), false, constants.ErrSessionOnNotify}, - {"failure_send", uint(rand.Int()), []byte("ok"), false, constants.ErrBrokenPipe}, + {"failure_send", uint(rand.Int()), []byte("ok"), false, + e.NewError(constants.ErrBrokenPipe, e.ErrClientClosedRequest)}, } for _, table := range tables { diff --git a/errors/errors.go b/errors/errors.go index 5d1dfa99..c740fb4c 100644 --- a/errors/errors.go +++ b/errors/errors.go @@ -33,6 +33,9 @@ const ErrNotFoundCode = "PIT-404" // ErrBadRequestCode is a string code representing a bad request related error const ErrBadRequestCode = "PIT-400" +// ErrClientClosedRequest is a string code representing the client closed request error +const ErrClientClosedRequest = "PIT-499" + // Error is an error with a code, message and metadata type Error struct { Code string