+ os.Setenv("ARVADOS_EXTERNAL_CLIENT", "")
+ } else {
+ logger.Warnf("Client credentials missing from config, so falling back on environment variables (deprecated).")
+ }
+
+ arv, err := arvadosclient.MakeArvadosClient()
+ if err != nil {
+ logger.Errorf("error making Arvados client: %v", err)
+ return err
+ }
+ arv.Retries = 25
+
+ ctx, cancel := context.WithCancel(context.Background())
+
+ dispatcher := dispatch.Dispatcher{
+ Logger: logger,
+ Arv: arv,
+ RunContainer: (&LocalRun{startFunc, make(chan bool, 8), ctx, cluster}).run,
+ PollPeriod: time.Duration(*pollInterval) * time.Second,
+ }
+
+ err = dispatcher.Run(ctx)
+ if err != nil {
+ return err
+ }
+
+ c := make(chan os.Signal, 1)
+ signal.Notify(c, os.Interrupt, syscall.SIGTERM, syscall.SIGQUIT)
+ sig := <-c
+ logger.Printf("Received %s, shutting down", sig)
+ signal.Stop(c)