10484: Track non-s3 errors by Go type.
[arvados.git] / services / datamanager / summary / file.go
index 7ed9765c13f5a64351796c870fa2b23c49527a3a..6e463d7670b25fb4579292fd765a8470ada0b449 100644 (file)
@@ -9,7 +9,6 @@ import (
        "git.curoverse.com/arvados.git/sdk/go/logger"
        "git.curoverse.com/arvados.git/services/datamanager/collection"
        "git.curoverse.com/arvados.git/services/datamanager/keep"
-       "git.curoverse.com/arvados.git/services/datamanager/loggerutil"
        "log"
        "os"
 )
@@ -29,7 +28,7 @@ var (
 // DataFetcher to fetch data from keep servers
 type DataFetcher func(arvLogger *logger.Logger,
        readCollections *collection.ReadCollections,
-       keepServerInfo *keep.ReadServers)
+       keepServerInfo *keep.ReadServers) error
 
 func init() {
        flag.StringVar(&WriteDataTo,
@@ -51,13 +50,13 @@ func init() {
 // working with stale data.
 func MaybeWriteData(arvLogger *logger.Logger,
        readCollections collection.ReadCollections,
-       keepServerInfo keep.ReadServers) (bool, error) {
+       keepServerInfo keep.ReadServers) error {
        if WriteDataTo == "" {
-               return false, nil
+               return nil
        }
        summaryFile, err := os.Create(WriteDataTo)
        if err != nil {
-               return false, err
+               return err
        }
        defer summaryFile.Close()
 
@@ -67,10 +66,10 @@ func MaybeWriteData(arvLogger *logger.Logger,
                KeepServerInfo:  keepServerInfo}
        err = enc.Encode(data)
        if err != nil {
-               return false, err
+               return err
        }
        log.Printf("Wrote summary data to: %s", WriteDataTo)
-       return true, nil
+       return nil
 }
 
 // ShouldReadData should not be used outside of development
@@ -87,33 +86,30 @@ func ShouldReadData() bool {
 // working with stale data.
 func ReadData(arvLogger *logger.Logger,
        readCollections *collection.ReadCollections,
-       keepServerInfo *keep.ReadServers) {
+       keepServerInfo *keep.ReadServers) error {
        if readDataFrom == "" {
-               loggerutil.FatalWithMessage(arvLogger,
-                       "ReadData() called with empty filename.")
-       } else {
-               summaryFile, err := os.Open(readDataFrom)
-               if err != nil {
-                       loggerutil.FatalWithMessage(arvLogger,
-                               fmt.Sprintf("Failed to open %s: %v", readDataFrom, err))
-               }
-               defer summaryFile.Close()
+               return fmt.Errorf("ReadData() called with empty filename.")
+       }
+       summaryFile, err := os.Open(readDataFrom)
+       if err != nil {
+               return err
+       }
+       defer summaryFile.Close()
 
-               dec := gob.NewDecoder(summaryFile)
-               data := serializedData{}
-               err = dec.Decode(&data)
-               if err != nil {
-                       loggerutil.FatalWithMessage(arvLogger,
-                               fmt.Sprintf("Failed to read summary data: %v", err))
-               }
+       dec := gob.NewDecoder(summaryFile)
+       data := serializedData{}
+       err = dec.Decode(&data)
+       if err != nil {
+               return err
+       }
 
-               // re-summarize data, so that we can update our summarizing
-               // functions without needing to do all our network i/o
-               data.ReadCollections.Summarize(arvLogger)
-               data.KeepServerInfo.Summarize(arvLogger)
+       // re-summarize data, so that we can update our summarizing
+       // functions without needing to do all our network i/o
+       data.ReadCollections.Summarize(arvLogger)
+       data.KeepServerInfo.Summarize(arvLogger)
 
-               *readCollections = data.ReadCollections
-               *keepServerInfo = data.KeepServerInfo
-               log.Printf("Read summary data from: %s", readDataFrom)
-       }
+       *readCollections = data.ReadCollections
+       *keepServerInfo = data.KeepServerInfo
+       log.Printf("Read summary data from: %s", readDataFrom)
+       return nil
 }