From 750ab8f60fb5957a199846e24d6f95529133bf6b Mon Sep 17 00:00:00 2001 From: Andrea Luzzardi Date: Wed, 14 Jan 2015 08:35:07 -0800 Subject: [PATCH] Store: Improve error handling. Signed-off-by: Andrea Luzzardi --- state/store.go | 16 +++++++++++++--- state/store_test.go | 3 +++ 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/state/store.go b/state/store.go index 89526f0bb5..224d501330 100644 --- a/state/store.go +++ b/state/store.go @@ -9,11 +9,14 @@ import ( "path" "path/filepath" "sync" + + log "github.com/Sirupsen/logrus" ) var ( ErrNotFound = errors.New("not found") ErrAlreadyExists = errors.New("already exists") + ErrInvalidKey = errors.New("invalid key") ) // A simple key<->RequestedState store. @@ -63,19 +66,22 @@ func (s *Store) restore() error { // Verify the file extension. extension := filepath.Ext(file) if extension != ".json" { - return fmt.Errorf("invalid file extension for filename %s (%s)", file, extension) + log.Errorf("invalid file extension for filename %s (%s)", file, extension) + continue } // Load the object back. value, err := s.load(path.Join(s.RootDir, file)) if err != nil { - return err + log.Errorf(err.Error()) + continue } // Extract the key. key := file[0 : len(file)-len(extension)] if len(key) == 0 { - return fmt.Errorf("invalid filename %s", file) + log.Errorf("invalid filename %s", file) + continue } // Store it back. @@ -122,6 +128,10 @@ func (s *Store) All() []*RequestedState { } func (s *Store) set(key string, value *RequestedState) error { + if len(key) == 0 { + return ErrInvalidKey + } + data, err := json.MarshalIndent(value, "", " ") if err != nil { return err diff --git a/state/store_test.go b/state/store_test.go index 78b28edc83..7eb379cb91 100644 --- a/state/store_test.go +++ b/state/store_test.go @@ -20,6 +20,9 @@ func TestStore(t *testing.T) { var ret *RequestedState + // Add an invalid key + assert.EqualError(t, store.Add("", c1), ErrInvalidKey.Error()) + // Add "foo" into the store. assert.NoError(t, store.Add("foo", c1))