Interface JobTable

All Superinterfaces:
AutoCloseable
All Known Implementing Classes:
DefaultJobTable

public interface JobTable extends AutoCloseable
A JobTable's task is to manage the lifecycle of a job on the TaskExecutor.

There can always only be at most one job per JobID. In order to create a JobTable.Job one needs to provide a JobTable.JobServices instance which is owned by the job.

A job can be connected to a leading JobManager or can be disconnected. In order to establish a connection, one needs to call JobTable.Job.connect(org.apache.flink.runtime.clusterframework.types.ResourceID, org.apache.flink.runtime.jobmaster.JobMasterGateway, org.apache.flink.runtime.taskmanager.TaskManagerActions, org.apache.flink.runtime.taskmanager.CheckpointResponder, org.apache.flink.runtime.taskexecutor.GlobalAggregateManager, org.apache.flink.runtime.taskexecutor.PartitionProducerStateChecker). Once a job is connected, the respective JobTable.Connection can be retrieved via its JobID or via the ResourceID of the leader. A connection can be disconnected via JobTable.Connection.disconnect().

In order to clean up a JobTable.Job one first needs to disconnect from the leading JobManager. In order to completely remove the JobTable.Job from the JobTable, one needs to call JobTable.Job.close() which also closes the associated JobTable.JobServices instance.

  • Method Details

    • getOrCreateJob

      <E extends Exception> JobTable.Job getOrCreateJob(org.apache.flink.api.common.JobID jobId, org.apache.flink.util.function.SupplierWithException<? extends JobTable.JobServices,E> jobServicesSupplier) throws E
      Gets a registered JobTable.Job or creates one if not present.
      Parameters:
      jobId - jobId identifies the job to get
      jobServicesSupplier - jobServicesSupplier create new JobTable.JobServices if a new job needs to be created
      Returns:
      the current job (existing or created) registered under jobId
      Throws:
      E - if the job services could not be created
    • getJob

      Optional<JobTable.Job> getJob(org.apache.flink.api.common.JobID jobId)
      Gets the job registered under jobId.
      Parameters:
      jobId - jobId identifying the job to get
      Returns:
      an Optional containing the JobTable.Job registered under jobId, or an empty Optional if no job has been registered
    • getConnection

      Optional<JobTable.Connection> getConnection(org.apache.flink.api.common.JobID jobId)
      Gets the connection registered under jobId.
      Parameters:
      jobId - jobId identifying the connection to get
      Returns:
      an Optional containing the JobTable.Connection registered under jobId, or an empty Optional if no connection has been registered (this could also mean that a job which has not been connected exists)
    • getConnection

      Optional<JobTable.Connection> getConnection(ResourceID resourceId)
      Gets the connection registered under resourceId.
      Parameters:
      resourceId - resourceId identifying the connection to get
      Returns:
      an Optional containing the JobTable.Connection registered under resourceId, or an empty Optional if no connection has been registered
    • getJobs

      Gets all registered jobs.
      Returns:
      collection of registered jobs
    • isEmpty

      boolean isEmpty()
      Returns true if the job table does not contain any jobs.
      Returns:
      true if the job table does not contain any jobs, otherwise false