// ResetConfig accepts a full-set or subset of global configuration // and updates projector related fields. func (p *Projector) ResetConfig(config c.Config) { p.rw.Lock() defer p.rw.Unlock() defer logging.Infof("%v\n", c.LogRuntime()) // reset configuration. if cv, ok := config["projector.settings.log_level"]; ok { logging.SetLogLevel(logging.Level(cv.String())) } if cv, ok := config["projector.maxCpuPercent"]; ok { c.SetNumCPUs(cv.Int()) } p.config = p.config.Override(config) // CPU-profiling cpuProfile, ok := config["projector.cpuProfile"] if ok && cpuProfile.Bool() && p.cpuProfFd == nil { cpuProfFname, ok := config["projector.cpuProfFname"] if ok { fname := cpuProfFname.String() logging.Infof("%v cpu profiling => %q\n", p.logPrefix, fname) p.cpuProfFd = p.startCPUProfile(fname) } else { logging.Errorf("Missing cpu-profile o/p filename\n") } } else if ok && !cpuProfile.Bool() { if p.cpuProfFd != nil { pprof.StopCPUProfile() logging.Infof("%v cpu profiling stopped\n", p.logPrefix) } p.cpuProfFd = nil } else if ok { logging.Warnf("%v cpu profiling already active !!\n", p.logPrefix) } // MEM-profiling memProfile, ok := config["projector.memProfile"] if ok && memProfile.Bool() { memProfFname, ok := config["projector.memProfFname"] if ok { fname := memProfFname.String() if p.takeMEMProfile(fname) { logging.Infof("%v mem profile => %q\n", p.logPrefix, fname) } } else { logging.Errorf("Missing mem-profile o/p filename\n") } } }
func main() { platform.HideConsole(true) defer platform.HideConsole(false) common.SeedProcess() logging.Infof("Indexer started with command line: %v\n", os.Args) flag.Parse() logging.SetLogLevel(logging.Level(*logLevel)) forestdb.Log = &logging.SystemLogger // setup cbauth if *auth != "" { up := strings.Split(*auth, ":") logging.Tracef("Initializing cbauth with user %v for cluster %v\n", up[0], *cluster) if _, err := cbauth.InternalRetryDefaultInit(*cluster, up[0], up[1]); err != nil { logging.Fatalf("Failed to initialize cbauth: %s", err) } } go platform.DumpOnSignal() go common.ExitOnStdinClose() config := common.SystemConfig config.SetValue("indexer.clusterAddr", *cluster) config.SetValue("indexer.numVbuckets", *numVbuckets) config.SetValue("indexer.enableManager", *enableManager) config.SetValue("indexer.adminPort", *adminPort) config.SetValue("indexer.scanPort", *scanPort) config.SetValue("indexer.httpPort", *httpPort) config.SetValue("indexer.streamInitPort", *streamInitPort) config.SetValue("indexer.streamCatchupPort", *streamCatchupPort) config.SetValue("indexer.streamMaintPort", *streamMaintPort) config.SetValue("indexer.storage_dir", *storageDir) storage_dir := config["indexer.storage_dir"].String() if err := os.MkdirAll(storage_dir, 0755); err != nil { common.CrashOnError(err) } _, msg := indexer.NewIndexer(config) if msg.GetMsgType() != indexer.MSG_SUCCESS { logging.Warnf("Indexer Failure to Init %v", msg) } logging.Infof("Indexer exiting normally\n") }
func main() { platform.HideConsole(true) defer platform.HideConsole(false) c.SeedProcess() logging.Infof("Projector started with command line: %v\n", os.Args) cluster := argParse() // eg. "localhost:9000" config := c.SystemConfig.Clone() logging.SetLogLevel(logging.Level(options.loglevel)) config.SetValue("maxVbuckets", options.numVbuckets) if f := getlogFile(); f != nil { fmt.Printf("Projector logging to %q\n", f.Name()) logging.SetLogWriter(f) config.SetValue("log.file", f.Name()) } config.SetValue("projector.clusterAddr", cluster) config.SetValue("projector.adminport.listenAddr", options.adminport) // setup cbauth if options.auth != "" { up := strings.Split(options.auth, ":") if _, err := cbauth.InternalRetryDefaultInit(cluster, up[0], up[1]); err != nil { logging.Fatalf("Failed to initialize cbauth: %s", err) } } epfactory := NewEndpointFactory(cluster, options.numVbuckets) config.SetValue("projector.routerEndpointFactory", epfactory) logging.Infof("%v\n", c.LogOs()) logging.Infof("%v\n", c.LogRuntime()) go c.ExitOnStdinClose() projector.NewProjector(options.numVbuckets, config) <-done }
func main() { help := flag.Bool("help", false, "Help") config := flag.String("configfile", "config.json", "Scan load config file") outfile := flag.String("resultfile", "results.json", "Result report file") cpus := flag.Int("cpus", runtime.NumCPU(), "Number of CPUs") cluster := flag.String("cluster", "127.0.0.1:9000", "Cluster server address") auth := flag.String("auth", "Administrator:asdasd", "Auth") statsfile := flag.String("statsfile", "", "Periodic statistics report file") cpuprofile := flag.String("cpuprofile", "", "write cpu profile to file") memprofile := flag.String("memprofile", "", "write mem profile to file") logLevel := flag.String("logLevel", "error", "Log Level") flag.Parse() logging.SetLogLevel(logging.Level(*logLevel)) fmt.Println("Log Level =", *logLevel) if *help { flag.PrintDefaults() os.Exit(0) } if *cpuprofile != "" { fd, err := os.Create(*cpuprofile) if err != nil { fmt.Println("Failed create cpu profile file") os.Exit(1) } pprof.StartCPUProfile(fd) defer pprof.StopCPUProfile() } if *memprofile != "" { fd, err := os.Create(*memprofile) if err != nil { fmt.Println("Failed create mem profile file") os.Exit(1) } defer pprof.WriteHeapProfile(fd) } runtime.GOMAXPROCS(*cpus) up := strings.Split(*auth, ":") _, err := cbauth.InternalRetryDefaultInit(*cluster, up[0], up[1]) if err != nil { fmt.Println("Failed to initialize cbauth: %s\n", err) os.Exit(1) } cfg, err := parseConfig(*config) handleError(err) var statsW io.Writer if *statsfile != "" { if f, err := os.Create(*statsfile); err != nil { handleError(err) } else { statsW = f defer f.Close() } } t0 := time.Now() res, err := RunCommands(*cluster, cfg, statsW) handleError(err) dur := time.Now().Sub(t0) totalRows := uint64(0) for _, result := range res.ScanResults { totalRows += result.Rows } res.Rows = totalRows res.Duration = dur.Seconds() - res.WarmupDuration rate := int(float64(totalRows) / res.Duration) fmt.Printf("Throughput = %d rows/sec\n", rate) os.Remove(*outfile) err = writeResults(res, *outfile) handleError(err) }
func setLogger(config common.Config) { logLevel := config["indexer.settings.log_level"].String() level := logging.Level(logLevel) logging.Infof("Setting log level to %v", level) logging.SetLogLevel(level) }