docs: private Acknowledge suspendExecution(final Exception cause) {
  		validateRunsInMainThread();
  
  		if (getFencingToken() == null) {
  			log.debug("Job has already been suspended or shutdown.");
  			return Acknowledge.get();
  		}
  
  		// not leader anymore --> set the JobMasterId to null
  		setFencingToken(null);
  
  		try {
  			resourceManagerLeaderRetriever.stop();
  			resourceManagerAddress = null;
  		} catch (Throwable t) {
  			log.warn("Failed to stop resource manager leader retriever when suspending.", t);
  		}
  
  		suspendAndClearExecutionGraphFields(cause);
  
  		// the slot pool stops receiving messages and clears its pooled slots
  		slotPool.suspend();
  
  		// disconnect from resource manager:
  		closeResourceManagerConnection(cause);
  
  		return Acknowledge.get();
  	}