diff --git a/resource-managers/kubernetes/core/src/main/scala/org/apache/spark/scheduler/cluster/k8s/AbstractPodsAllocator.scala b/resource-managers/kubernetes/core/src/main/scala/org/apache/spark/scheduler/cluster/k8s/AbstractPodsAllocator.scala index 8803d3d031e47..cae58c34a185a 100644 --- a/resource-managers/kubernetes/core/src/main/scala/org/apache/spark/scheduler/cluster/k8s/AbstractPodsAllocator.scala +++ b/resource-managers/kubernetes/core/src/main/scala/org/apache/spark/scheduler/cluster/k8s/AbstractPodsAllocator.scala @@ -18,7 +18,7 @@ package org.apache.spark.scheduler.cluster.k8s import io.fabric8.kubernetes.api.model.Pod -import org.apache.spark.annotation.DeveloperApi +import org.apache.spark.annotation.{DeveloperApi, Since} import org.apache.spark.resource.ResourceProfile @@ -26,47 +26,72 @@ import org.apache.spark.resource.ResourceProfile * :: DeveloperApi :: * A abstract interface for allowing different types of pods allocation. * - * The internal Spark implementations are [[StatefulSetPodsAllocator]] - * and [[ExecutorPodsAllocator]]. This may be useful for folks integrating with custom schedulers. - * - * This API may change or be removed at anytime. + * The internal Spark implementations are [[StatefulSetPodsAllocator]], + * [[DeploymentPodsAllocator]], and [[ExecutorPodsAllocator]]. + * This may be useful for folks integrating with custom schedulers. * * @since 3.3.0 */ @DeveloperApi +@Since("3.3.0") abstract class AbstractPodsAllocator { - /* + /** * Optional lifecycle manager for tracking executor pod lifecycle events. * Set via setExecutorPodsLifecycleManager for backward compatibility. + * + * @since 4.2.0 */ + @Since("4.2.0") protected var executorPodsLifecycleManager: Option[ExecutorPodsLifecycleManager] = None - /* + /** * Set the lifecycle manager for tracking executor pod lifecycle events. * This method is optional and may not exist in custom implementations based on older versions. + * + * @since 4.2.0 */ + @Since("4.2.0") def setExecutorPodsLifecycleManager(manager: ExecutorPodsLifecycleManager): Unit = { executorPodsLifecycleManager = Some(manager) } - /* + /** * Set the total expected executors for an application + * + * @since 3.3.0 */ + @Since("3.3.0") def setTotalExpectedExecutors(resourceProfileToTotalExecs: Map[ResourceProfile, Int]): Unit - /* + + /** * Reference to driver pod. + * + * @since 3.3.0 */ + @Since("3.3.0") def driverPod: Option[Pod] - /* + + /** * If the pod for a given exec id is deleted. + * + * @since 3.3.0 */ + @Since("3.3.0") def isDeleted(executorId: String): Boolean - /* + + /** * Start hook. + * + * @since 3.3.0 */ + @Since("3.3.0") def start(applicationId: String, schedulerBackend: KubernetesClusterSchedulerBackend): Unit - /* + + /** * Stop hook + * + * @since 3.3.0 */ + @Since("3.3.0") def stop(applicationId: String): Unit }