code: @Override
    public synchronized void start() {
      LOGGER.info("Starting the Gobblin Cluster Manager");
  
      this.eventBus.register(this);
      this.multiManager.connect();
  
      configureHelixQuotaBasedTaskScheduling();
  
      if (this.isStandaloneMode) {
        // standalone mode starts non-daemon threads later, so need to have this thread to keep process up
        this.idleProcessThread = new Thread(new Runnable() {
          @Override
          public void run() {
            while (!GobblinClusterManager.this.stopStatus.isStopInProgress() && !GobblinClusterManager.this.stopIdleProcessThread) {
              try {
                Thread.sleep(300);
              } catch (InterruptedException e) {
                Thread.currentThread().interrupt();
                break;
              }
            }
          }
        });
  
        this.idleProcessThread.start();
  
        // Need this in case a kill is issued to the process so that the idle thread does not keep the process up
        // since GobblinClusterManager.stop() is not called this case.
        Runtime.getRuntime().addShutdownHook(new Thread() {
          @Override
          public void run() {
            GobblinClusterManager.this.stopIdleProcessThread = true;
          }
        });
      } else {
        startAppLauncherAndServices();
      }
    }
docs: Start the Gobblin Cluster Manager.