From df281fd020c11dd5008fe1964bbc19bd8a450d36 Mon Sep 17 00:00:00 2001 From: Torin Sandall Date: Thu, 22 Aug 2019 12:25:01 -0400 Subject: [PATCH] server: Wrap decision log error messages Previously the server didn't wrap the error messages which made it hard to determine the source of internal errors coming back from OPA when deployed with a custom decision logger. Fixes #1367 Signed-off-by: Torin Sandall --- server/server.go | 2 +- server/server_test.go | 16 ++++++++++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/server/server.go b/server/server.go index 00f6b8cefc..4d8835b261 100644 --- a/server/server.go +++ b/server/server.go @@ -2400,7 +2400,7 @@ func (l decisionLogger) Log(ctx context.Context, txn storage.Transaction, decisi if l.logger != nil { if err := l.logger(ctx, info); err != nil { - return err + return errors.Wrap(err, "decision_logs") } } diff --git a/server/server_test.go b/server/server_test.go index 63352f6d15..bde7fa6558 100644 --- a/server/server_test.go +++ b/server/server_test.go @@ -2780,6 +2780,22 @@ func TestDecisionLogging(t *testing.T) { } +func TestDecisionLogErrorMessage(t *testing.T) { + + f := newFixture(t) + + f.server.WithDecisionLoggerWithErr(func(context.Context, *Info) error { + return fmt.Errorf("xxx") + }) + + if err := f.v1(http.MethodPost, "/data", "", 500, `{ + "code": "internal_error", + "message": "decision_logs: xxx" + }`); err != nil { + t.Fatal(err) + } +} + func TestWatchParams(t *testing.T) { f := newFixture(t) r1 := newMockConn()