X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/f09da35ed284ebc1ed1e941f3e3cb63b06a35d51..2255281ed7406e7c10027ed778f53ee28e6869fa:/services/datamanager/summary/file.go diff --git a/services/datamanager/summary/file.go b/services/datamanager/summary/file.go index 15c369900c..18b3aec819 100644 --- a/services/datamanager/summary/file.go +++ b/services/datamanager/summary/file.go @@ -26,6 +26,11 @@ var ( readDataFrom string ) +// DataFetcher to fetch data from keep servers +type DataFetcher func(arvLogger *logger.Logger, + readCollections *collection.ReadCollections, + keepServerInfo *keep.ReadServers) + func init() { flag.StringVar(&writeDataTo, "write-data-to", @@ -37,7 +42,7 @@ func init() { "Avoid network i/o and read summary data from this file instead. Used for development only.") } -// Writes data we've read to a file. +// MaybeWriteData writes data we've read to a file. // // This is useful for development, so that we don't need to read all // our data from the network every time we tweak something. @@ -49,40 +54,45 @@ func MaybeWriteData(arvLogger *logger.Logger, keepServerInfo keep.ReadServers) bool { if writeDataTo == "" { return false - } else { - summaryFile, err := os.Create(writeDataTo) - if err != nil { - loggerutil.FatalWithMessage(arvLogger, - fmt.Sprintf("Failed to open %s: %v", writeDataTo, err)) - } - defer summaryFile.Close() + } + summaryFile, err := os.Create(writeDataTo) + if err != nil { + loggerutil.FatalWithMessage(arvLogger, + fmt.Sprintf("Failed to open %s: %v", writeDataTo, err)) + } + defer summaryFile.Close() - enc := gob.NewEncoder(summaryFile) - data := serializedData{ - ReadCollections: readCollections, - KeepServerInfo: keepServerInfo} - err = enc.Encode(data) - if err != nil { - loggerutil.FatalWithMessage(arvLogger, - fmt.Sprintf("Failed to write summary data: %v", err)) - } - log.Printf("Wrote summary data to: %s", writeDataTo) - return true + enc := gob.NewEncoder(summaryFile) + data := serializedData{ + ReadCollections: readCollections, + KeepServerInfo: keepServerInfo} + err = enc.Encode(data) + if err != nil { + loggerutil.FatalWithMessage(arvLogger, + fmt.Sprintf("Failed to write summary data: %v", err)) } + log.Printf("Wrote summary data to: %s", writeDataTo) + return true } -// Reads data that we've written to a file. +// ShouldReadData should not be used outside of development +func ShouldReadData() bool { + return readDataFrom != "" +} + +// ReadData reads data that we've written to a file. // // This is useful for development, so that we don't need to read all // our data from the network every time we tweak something. // // This should not be used outside of development, since you'll be // working with stale data. -func MaybeReadData(arvLogger *logger.Logger, +func ReadData(arvLogger *logger.Logger, readCollections *collection.ReadCollections, - keepServerInfo *keep.ReadServers) bool { + keepServerInfo *keep.ReadServers) { if readDataFrom == "" { - return false + loggerutil.FatalWithMessage(arvLogger, + "ReadData() called with empty filename.") } else { summaryFile, err := os.Open(readDataFrom) if err != nil { @@ -101,12 +111,11 @@ func MaybeReadData(arvLogger *logger.Logger, // re-summarize data, so that we can update our summarizing // functions without needing to do all our network i/o - data.ReadCollections.Summarize() - keep.ComputeBlockReplicationCounts(&data.KeepServerInfo) + data.ReadCollections.Summarize(arvLogger) + data.KeepServerInfo.Summarize(arvLogger) *readCollections = data.ReadCollections *keepServerInfo = data.KeepServerInfo log.Printf("Read summary data from: %s", readDataFrom) - return true } }