From b0360539371e7c0e1ff564acbeaa46eb54c052cc Mon Sep 17 00:00:00 2001 From: Rob Mulholand Date: Mon, 29 Apr 2019 14:20:57 -0500 Subject: [PATCH] Queue storage diffs if transformer execution fails - For any error, not just if key isn't recognized - Means we don't lose track of diffs on random ephemeral errors --- libraries/shared/watcher/storage_watcher.go | 11 ++++------ .../shared/watcher/storage_watcher_test.go | 20 ++----------------- 2 files changed, 6 insertions(+), 25 deletions(-) diff --git a/libraries/shared/watcher/storage_watcher.go b/libraries/shared/watcher/storage_watcher.go index fdc773fa..7b2c5362 100644 --- a/libraries/shared/watcher/storage_watcher.go +++ b/libraries/shared/watcher/storage_watcher.go @@ -79,13 +79,10 @@ func (storageWatcher StorageWatcher) processRow(row utils.StorageDiffRow) { } executeErr := storageTransformer.Execute(row) if executeErr != nil { - if isKeyNotFound(executeErr) { - queueErr := storageWatcher.Queue.Add(row) - if queueErr != nil { - logrus.Warn(fmt.Sprintf("error queueing storage diff with unrecognized key: %s", queueErr)) - } - } else { - logrus.Warn(fmt.Sprintf("error executing storage transformer: %s", executeErr)) + logrus.Warn(fmt.Sprintf("error executing storage transformer: %s", executeErr)) + queueErr := storageWatcher.Queue.Add(row) + if queueErr != nil { + logrus.Warn(fmt.Sprintf("error queueing storage diff: %s", queueErr)) } } } diff --git a/libraries/shared/watcher/storage_watcher_test.go b/libraries/shared/watcher/storage_watcher_test.go index 3dfef667..6c12358d 100644 --- a/libraries/shared/watcher/storage_watcher_test.go +++ b/libraries/shared/watcher/storage_watcher_test.go @@ -109,8 +109,8 @@ var _ = Describe("Storage Watcher", func() { close(done) }) - It("queues row for later processing if row's key not recognized", func(done Done) { - mockTransformer.ExecuteErr = utils.ErrStorageKeyNotFound{} + It("queues row for later processing if transformer execution fails", func(done Done) { + mockTransformer.ExecuteErr = fakes.FakeError go storageWatcher.Execute(rows, errs, time.Hour) @@ -143,22 +143,6 @@ var _ = Describe("Storage Watcher", func() { }).Should(ContainSubstring(fakes.FakeError.Error())) close(done) }) - - It("logs error if transformer execution fails for reason other than key not found", func(done Done) { - mockTransformer.ExecuteErr = fakes.FakeError - tempFile, fileErr := ioutil.TempFile("", "log") - Expect(fileErr).NotTo(HaveOccurred()) - defer os.Remove(tempFile.Name()) - logrus.SetOutput(tempFile) - - go storageWatcher.Execute(rows, errs, time.Hour) - - Eventually(func() (string, error) { - logContent, err := ioutil.ReadFile(tempFile.Name()) - return string(logContent), err - }).Should(ContainSubstring(fakes.FakeError.Error())) - close(done) - }) }) Describe("transforming queued storage diffs", func() {