code: public CompletableFuture<Acknowledge> suspend(final Exception cause) {
  		CompletableFuture<Acknowledge> suspendFuture = callAsyncWithoutFencing(
  				() -> suspendExecution(cause),
  				RpcUtils.INF_TIMEOUT);
  
  		return suspendFuture.whenComplete((acknowledge, throwable) -> stop());
  	}
docs: Suspending job, all the running tasks will be cancelled, and communication with other components
  will be disposed.
  
  <p>Mostly job is suspended because of the leadership has been revoked, one can be restart this job by
  calling the {@link #start(JobMasterId)} method once we take the leadership back again.
  
  <p>This method is executed asynchronously
  
  @param cause The reason of why this job been suspended.
  @return Future acknowledge indicating that the job has been suspended. Otherwise the future contains an exception