From c6aa3e01382f98b27bff06914d3ea7d4d4258068 Mon Sep 17 00:00:00 2001 From: Carson Ip Date: Fri, 31 May 2024 17:47:08 +0100 Subject: [PATCH] Remove item.Error.Reason for unavailable_shards_exception (#174) --- appender_test.go | 15 +++++++++++---- bulk_indexer.go | 5 +++++ 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/appender_test.go b/appender_test.go index 3ee76b2..25e9b12 100644 --- a/appender_test.go +++ b/appender_test.go @@ -563,11 +563,16 @@ func TestAppenderIndexFailedLogging(t *testing.T) { for i, item := range result.Items { itemResp := item["create"] itemResp.Index = "an_index" - itemResp.Error.Type = "error_type" - if i%2 == 0 { + switch i % 3 { + case 0: + itemResp.Error.Type = "error_type" itemResp.Error.Reason = "error_reason_even. Preview of field's value: 'abc def ghi'" - } else { + case 1: + itemResp.Error.Type = "error_type" itemResp.Error.Reason = "error_reason_odd. Preview of field's value: some field value" + case 2: + itemResp.Error.Type = "unavailable_shards_exception" + itemResp.Error.Reason = "this reason should not be logged" } item["create"] = itemResp } @@ -583,7 +588,7 @@ func TestAppenderIndexFailedLogging(t *testing.T) { require.NoError(t, err) defer indexer.Close(context.Background()) - const N = 4 + const N = 3 * 2 for i := 0; i < N; i++ { addMinimalDoc(t, indexer, "logs-foo-testing") } @@ -599,6 +604,8 @@ func TestAppenderIndexFailedLogging(t *testing.T) { assert.Equal(t, int64(2), entries[0].Context[0].Integer) assert.Equal(t, "failed to index documents in 'an_index' (error_type): error_reason_odd", entries[1].Message) assert.Equal(t, int64(2), entries[1].Context[0].Integer) + assert.Equal(t, "failed to index documents in 'an_index' (unavailable_shards_exception): ", entries[2].Message) + assert.Equal(t, int64(2), entries[2].Context[0].Integer) } func TestAppenderRetryLimit(t *testing.T) { diff --git a/bulk_indexer.go b/bulk_indexer.go index 4d55bb2..ec4df21 100644 --- a/bulk_indexer.go +++ b/bulk_indexer.go @@ -117,6 +117,11 @@ func init() { } return true }) + // For unavailable_shards_exception, remove item.Error.Reason as it may contain sensitive request content. + if item.Error.Type == "unavailable_shards_exception" { + item.Error.Reason = "" + } + item.Position = idx idx++ if item.Error.Type != "" || item.Status > 201 {