From b740ef891477496d27e09679cde39e5ab53b674c Mon Sep 17 00:00:00 2001 From: Jake Skelcy Date: Wed, 15 Aug 2018 16:35:57 -0400 Subject: [PATCH] return 404 on not found errors when fetching a namespace (#72) --- glide.lock | 8 ++++---- glide.yaml | 2 +- service/r2/store/kv/store.go | 2 ++ service/r2/store/kv/store_test.go | 26 ++++++++++++++++++++++++++ 4 files changed, 33 insertions(+), 5 deletions(-) diff --git a/glide.lock b/glide.lock index dc1f0be..6510da9 100644 --- a/glide.lock +++ b/glide.lock @@ -1,5 +1,5 @@ -hash: 4f67b873a28771150911f28bae53e4929d46479208cd779cdc485c77b13ec734 -updated: 2018-07-31T15:48:48.159283502-04:00 +hash: ec48fe1a733b21470b5278b90f2840d56d381d3ebf434300be8fbc62746b2469 +updated: 2018-08-15T15:57:21.988995415-04:00 imports: - name: github.com/apache/thrift version: 9549b25c77587b29be4e0b5c258221a4ed85d37a @@ -82,7 +82,7 @@ imports: - services/leader/election - shard - name: github.com/m3db/m3metrics - version: 115abc5764862381dcba3ef30cd0b42026bd69fe + version: dcfe68fe112095f688cbaa1b0aa4c4ac65922e84 subpackages: - aggregation - errors @@ -165,7 +165,7 @@ imports: - name: go.uber.org/multierr version: 3c4937480c32f4c13a875a1829af76c98ca3d40a - name: go.uber.org/zap - version: eeedf312bc6c57391d84767a4cd413f02a917974 + version: ff33455a0e382e8a81d14dd7c922020b6b5e7982 subpackages: - buffer - internal/bufferpool diff --git a/glide.yaml b/glide.yaml index f446e7d..88ec5e2 100644 --- a/glide.yaml +++ b/glide.yaml @@ -4,7 +4,7 @@ import: - package: github.com/m3db/m3cluster version: 53fc512c11e1ed03db2d65dac4c139a3c2ff2eda - package: github.com/m3db/m3metrics - version: 115abc5764862381dcba3ef30cd0b42026bd69fe + version: dcfe68fe112095f688cbaa1b0aa4c4ac65922e84 - package: github.com/m3db/m3x version: a5cc485300c733558a25e1e6c5e9dcf4dbc241c4 - package: github.com/apache/thrift diff --git a/service/r2/store/kv/store.go b/service/r2/store/kv/store.go index c8ab5c5..9d8045e 100644 --- a/service/r2/store/kv/store.go +++ b/service/r2/store/kv/store.go @@ -478,6 +478,8 @@ func handleUpstreamError(err error) error { return r2.NewConflictError(err.Error()) case merrors.ValidationError: return r2.NewBadInputError(err.Error()) + case merrors.NotFoundError: + return r2.NewNotFoundError(err.Error()) default: return r2.NewInternalError(err.Error()) } diff --git a/service/r2/store/kv/store_test.go b/service/r2/store/kv/store_test.go index 41c44ad..d2861c0 100644 --- a/service/r2/store/kv/store_test.go +++ b/service/r2/store/kv/store_test.go @@ -117,6 +117,32 @@ func TestUpdateRuleSetVersionMisMatch(t *testing.T) { require.IsType(t, r2.NewConflictError(""), err) } +func TestUpdateRuleSetFetchNotFound(t *testing.T) { + rsChanges := newTestRuleSetChanges( + view.MappingRules{}, + view.RollupRules{}, + ) + + ctrl := gomock.NewController(t) + defer ctrl.Finish() + mockedStore := rules.NewMockStore(ctrl) + mockedStore.EXPECT().ReadRuleSet("testNamespace").Return( + nil, + merrors.NewNotFoundError("something bad has happened"), + ) + + storeOpts := NewStoreOptions().SetClockOptions( + clock.NewOptions().SetNowFn(func() time.Time { + return time.Unix(0, 200) + }), + ) + rulesStore := NewStore(mockedStore, storeOpts) + uOpts := r2store.NewUpdateOptions().SetAuthor("validUser") + _, err := rulesStore.UpdateRuleSet(rsChanges, 1, uOpts) + require.Error(t, err) + require.IsType(t, r2.NewNotFoundError(""), err) +} + func TestUpdateRuleSetFetchFailure(t *testing.T) { rsChanges := newTestRuleSetChanges( view.MappingRules{},