backfill: move checkErr before we close the mmaped file

When printing the error, we still need access to the mmapped byte array
of the file. Therefore, we make sure that we run it before closing the
file.

I could have done something more complex like a defer, or not closing
the file, knowing that we would exit the program anyway. However, I
think that in case we extend this in the future, or this is copy/paster
elsewhere, we should continue closing the file. As it is small enough, I
went for the solution to call the function 3 times instead of playing
with a defer.

Signed-off-by: Julien Pivotto <roidelapluie@inuits.eu>
This commit is contained in:
Julien Pivotto 2021-02-01 21:18:42 +01:00
parent 275f7e7766
commit 9334269f2b
2 changed files with 5 additions and 5 deletions

View File

@ -207,7 +207,7 @@ func main() {
os.Exit(checkErr(dumpSamples(*dumpPath, *dumpMinTime, *dumpMaxTime)))
//TODO(aSquare14): Work on adding support for custom block size.
case openMetricsImportCmd.FullCommand():
os.Exit(checkErr(backfillOpenMetrics(*importFilePath, *importDBPath, *importHumanReadable)))
os.Exit(backfillOpenMetrics(*importFilePath, *importDBPath, *importHumanReadable))
}
}

View File

@ -618,16 +618,16 @@ func checkErr(err error) int {
return 0
}
func backfillOpenMetrics(path string, outputDir string, humanReadable bool) (err error) {
func backfillOpenMetrics(path string, outputDir string, humanReadable bool) int {
inputFile, err := fileutil.OpenMmapFile(path)
if err != nil {
return err
return checkErr(err)
}
defer inputFile.Close()
if err := os.MkdirAll(outputDir, 0777); err != nil {
return errors.Wrap(err, "create output dir")
return checkErr(errors.Wrap(err, "create output dir"))
}
return backfill(5000, inputFile.Bytes(), outputDir, humanReadable)
return checkErr(backfill(5000, inputFile.Bytes(), outputDir, humanReadable))
}