func btcdbSetup(dataDir, dbType string) (log btclog.Logger, db btcdb.Db, cleanup func()) { // Setup logging backendLogger := btclog.NewDefaultBackendLogger() log = btclog.NewSubsystemLogger(backendLogger, "") btcdb.UseLogger(log) // Setup database access blockDbNamePrefix := "blocks" dbName := blockDbNamePrefix + "_" + dbType if dbType == "sqlite" { dbName = dbName + ".db" } dbPath := filepath.Join(dataDir, "mainnet", dbName) log.Infof("loading db %v", dbType) db, err := btcdb.OpenDB(dbType, dbPath) if err != nil { log.Warnf("db open failed: %v", err) return } log.Infof("db load complete") cleanup = func() { db.Close() backendLogger.Flush() } return }
func main() { var ( dataDir = flag.String("datadir", filepath.Join(btcutil.AppDataDir("btcd", false), "data"), "BTCD: Data directory") dbType = flag.String("dbtype", "leveldb", "BTCD: Database backend") ) flag.Parse() if *cpuprofile != "" { f, err := os.Create(*cpuprofile) if err != nil { log.Fatal(err) } pprof.StartCPUProfile(f) defer pprof.StopCPUProfile() } // Setup btcdb log, db, dbCleanup := btcdbSetup(*dataDir, *dbType) defer dbCleanup() duplicates := search(log, db) realDuplicates := make(map[string][]*rData) for k, v := range duplicates { if len(v) > 1 { realDuplicates[k] = v } } resultsFile, err := os.Create("blockchainr.json") if err != nil { log.Warnf("failed to create blockchainr.json: %v", err) return } if json.NewEncoder(resultsFile).Encode(realDuplicates) != nil { log.Warnf("failed to Encode the result: %v", err) return } }
func main() { // initialize logger log := logger.Logger() defer log.Close() defer log.Flush() // parse input parameters parseFlags(log) // check whether this is an interactive session isIntSess, err := svc.IsAnInteractiveSession() if err != nil { log.Warnf("Failed to determine if we are running in an interactive session: %v", err) } // isIntSess is false by default (after declaration), this fits the use // case that agent is running as Windows service most of times switch isIntSess { case true: run(log) case false: svc.Run(serviceName, &amazonSSMAgentService{log: log}) } }