func main() { flag.Parse() rand.Seed(time.Now().UnixNano()) if !strings.HasSuffix(*unpackedPath, "/") { *unpackedPath = *unpackedPath + "/" } fmt.Println("Debian Code Search source-backend") if err := ranking.ReadRankingData(*rankingDataPath); err != nil { log.Fatal(err) } conn, err := grpcutil.DialTLS("localhost:28081", *tlsCertPath, *tlsKeyPath) if err != nil { log.Fatalf("could not connect to %q: %v", "localhost:28081", err) } defer conn.Close() indexBackend = proto.NewIndexBackendClient(conn) http.Handle("/metrics", prometheus.Handler()) log.Fatal(grpcutil.ListenAndServeTLS(*listenAddress, *tlsCertPath, *tlsKeyPath, func(s *grpc.Server) { proto.RegisterSourceBackendServer(s, &server{}) })) }
func main() { flag.Parse() // Allow as many concurrent unpackAndIndex goroutines as we have cores. runtime.GOMAXPROCS(runtime.NumCPU()) if err := os.MkdirAll(*unpackedPath, 0755); err != nil { log.Fatal(err) } setupFilters() var err error tmpdir, err = ioutil.TempDir("", "dcs-importer") if err != nil { log.Fatal(err) } indexQueue = make(chan string) mergeQueue = make(chan bool) for i := 0; i < runtime.NumCPU(); i++ { go unpackAndIndex() } go func() { for _ = range mergeQueue { mergeToShard() } }() conn, err := grpcutil.DialTLS("localhost:28081", *tlsCertPath, *tlsKeyPath) if err != nil { log.Fatalf("could not connect to %q: %v", "localhost:28081", err) } defer conn.Close() indexBackend = proto.NewIndexBackendClient(conn) http.HandleFunc("/import/", importPackage) http.HandleFunc("/merge", mergeOrError) http.HandleFunc("/listpkgs", listPackages) http.HandleFunc("/garbagecollect", garbageCollect) http.HandleFunc("/goroutinez", goroutinez.Goroutinez) http.Handle("/metrics", prometheus.Handler()) log.Fatal(http.ListenAndServe(*listenAddress, nil)) }
// Must be called after flag.Parse() func Init(tlsCertPath, tlsKeyPath, staticPath string) { loadTemplates() b, err := ioutil.ReadFile(filepath.Join(staticPath, "critical.min.css")) if err != nil { log.Fatal(err) } CriticalCss = template.CSS(string(b)) addrs := strings.Split(*sourceBackends, ",") SourceBackendStubs = make([]proto.SourceBackendClient, len(addrs)) for idx, addr := range addrs { conn, err := grpcutil.DialTLS(addr, tlsCertPath, tlsKeyPath) if err != nil { log.Fatalf("could not connect to %q: %v", addr, err) } SourceBackendStubs[idx] = proto.NewSourceBackendClient(conn) } }