func cleanup(db *mica.DB) { if len(flagCpuProfile) > 0 { pprof.StopCPUProfile() } if len(flagMemProfile) > 0 { writeMemProfile(fmt.Sprintf("%s.last", flagMemProfile)) } db.ReadClose() }
// When the program ends (either by SIGTERM or when all of the input sequences // are compressed), 'cleanup' is executed. It writes all CPU/memory profiles // if they're enabled, waits for the compression workers to finish, saves // the database to disk and closes all file handles. func cleanup(db *mica.DB, pool *compressPool) { mica.Vprintln("Cleaning up and saving.") if len(flagCpuProfile) > 0 { pprof.StopCPUProfile() } if len(flagMemProfile) > 0 { writeMemProfile(fmt.Sprintf("%s.last", flagMemProfile)) } if len(flagMemStats) > 0 { writeMemStats(fmt.Sprintf("%s.last", flagMemStats)) } pool.done() if err := db.Save(); err != nil { fatalf("Could not save database: %s\n", err) } db.WriteClose() }