pub struct SchedulerServer<T: 'static + AsLogicalPlan, U: 'static + AsExecutionPlan> {
pub scheduler_name: String,
pub start_time: u128,
pub state: Arc<SchedulerState<T, U>>,
/* private fields */
}Fields§
§scheduler_name: String§start_time: u128§state: Arc<SchedulerState<T, U>>Implementations§
Source§impl<T: 'static + AsLogicalPlan, U: 'static + AsExecutionPlan> SchedulerServer<T, U>
impl<T: 'static + AsLogicalPlan, U: 'static + AsExecutionPlan> SchedulerServer<T, U>
pub fn new( scheduler_name: String, cluster: KapotCluster, codec: KapotCodec<T, U>, config: Arc<SchedulerConfig>, metrics_collector: Arc<dyn SchedulerMetricsCollector>, ) -> Self
pub fn new_with_task_launcher( scheduler_name: String, cluster: KapotCluster, codec: KapotCodec<T, U>, config: Arc<SchedulerConfig>, metrics_collector: Arc<dyn SchedulerMetricsCollector>, task_launcher: Arc<dyn TaskLauncher>, ) -> Self
pub async fn init(&mut self) -> Result<()>
pub fn pending_job_number(&self) -> usize
pub fn running_job_number(&self) -> usize
Trait Implementations§
Source§impl<T: Clone + 'static + AsLogicalPlan, U: Clone + 'static + AsExecutionPlan> Clone for SchedulerServer<T, U>
impl<T: Clone + 'static + AsLogicalPlan, U: Clone + 'static + AsExecutionPlan> Clone for SchedulerServer<T, U>
Source§fn clone(&self) -> SchedulerServer<T, U>
fn clone(&self) -> SchedulerServer<T, U>
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl<T: 'static + AsLogicalPlan, U: 'static + AsExecutionPlan> ExternalScaler for SchedulerServer<T, U>
impl<T: 'static + AsLogicalPlan, U: 'static + AsExecutionPlan> ExternalScaler for SchedulerServer<T, U>
fn is_active<'life0, 'async_trait>(
&'life0 self,
_request: Request<ScaledObjectRef>,
) -> Pin<Box<dyn Future<Output = Result<Response<IsActiveResponse>, Status>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Source§fn get_metric_spec<'life0, 'async_trait>(
&'life0 self,
_request: Request<ScaledObjectRef>,
) -> Pin<Box<dyn Future<Output = Result<Response<GetMetricSpecResponse>, Status>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn get_metric_spec<'life0, 'async_trait>(
&'life0 self,
_request: Request<ScaledObjectRef>,
) -> Pin<Box<dyn Future<Output = Result<Response<GetMetricSpecResponse>, Status>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Commented out since we aren’t supporting the streaming scaler interface at the moment
rpc StreamIsActive(ScaledObjectRef) returns (stream IsActiveResponse) {}
fn get_metrics<'life0, 'async_trait>(
&'life0 self,
_request: Request<GetMetricsRequest>,
) -> Pin<Box<dyn Future<Output = Result<Response<GetMetricsResponse>, Status>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Source§impl<T: 'static + AsLogicalPlan, U: 'static + AsExecutionPlan> SchedulerGrpc for SchedulerServer<T, U>
impl<T: 'static + AsLogicalPlan, U: 'static + AsExecutionPlan> SchedulerGrpc for SchedulerServer<T, U>
Source§fn poll_work<'life0, 'async_trait>(
&'life0 self,
request: Request<PollWorkParams>,
) -> Pin<Box<dyn Future<Output = Result<Response<PollWorkResult>, Status>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn poll_work<'life0, 'async_trait>(
&'life0 self,
request: Request<PollWorkParams>,
) -> Pin<Box<dyn Future<Output = Result<Response<PollWorkResult>, Status>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Executors must poll the scheduler for heartbeat and to receive tasks
fn register_executor<'life0, 'async_trait>(
&'life0 self,
request: Request<RegisterExecutorParams>,
) -> Pin<Box<dyn Future<Output = Result<Response<RegisterExecutorResult>, Status>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Source§fn heart_beat_from_executor<'life0, 'async_trait>(
&'life0 self,
request: Request<HeartBeatParams>,
) -> Pin<Box<dyn Future<Output = Result<Response<HeartBeatResult>, Status>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn heart_beat_from_executor<'life0, 'async_trait>(
&'life0 self,
request: Request<HeartBeatParams>,
) -> Pin<Box<dyn Future<Output = Result<Response<HeartBeatResult>, Status>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Push-based task scheduler will only leverage this interface
rather than the PollWork interface to report executor states
fn update_task_status<'life0, 'async_trait>(
&'life0 self,
request: Request<UpdateTaskStatusParams>,
) -> Pin<Box<dyn Future<Output = Result<Response<UpdateTaskStatusResult>, Status>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn get_file_metadata<'life0, 'async_trait>(
&'life0 self,
request: Request<GetFileMetadataParams>,
) -> Pin<Box<dyn Future<Output = Result<Response<GetFileMetadataResult>, Status>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn create_session<'life0, 'async_trait>(
&'life0 self,
request: Request<CreateSessionParams>,
) -> Pin<Box<dyn Future<Output = Result<Response<CreateSessionResult>, Status>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn update_session<'life0, 'async_trait>(
&'life0 self,
request: Request<UpdateSessionParams>,
) -> Pin<Box<dyn Future<Output = Result<Response<UpdateSessionResult>, Status>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn remove_session<'life0, 'async_trait>(
&'life0 self,
request: Request<RemoveSessionParams>,
) -> Pin<Box<dyn Future<Output = Result<Response<RemoveSessionResult>, Status>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn execute_query<'life0, 'async_trait>(
&'life0 self,
request: Request<ExecuteQueryParams>,
) -> Pin<Box<dyn Future<Output = Result<Response<ExecuteQueryResult>, Status>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn get_job_status<'life0, 'async_trait>(
&'life0 self,
request: Request<GetJobStatusParams>,
) -> Pin<Box<dyn Future<Output = Result<Response<GetJobStatusResult>, Status>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Source§fn executor_stopped<'life0, 'async_trait>(
&'life0 self,
request: Request<ExecutorStoppedParams>,
) -> Pin<Box<dyn Future<Output = Result<Response<ExecutorStoppedResult>, Status>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn executor_stopped<'life0, 'async_trait>(
&'life0 self,
request: Request<ExecutorStoppedParams>,
) -> Pin<Box<dyn Future<Output = Result<Response<ExecutorStoppedResult>, Status>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Used by Executor to tell Scheduler it is stopped.
fn cancel_job<'life0, 'async_trait>(
&'life0 self,
request: Request<CancelJobParams>,
) -> Pin<Box<dyn Future<Output = Result<Response<CancelJobResult>, Status>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
fn clean_job_data<'life0, 'async_trait>(
&'life0 self,
request: Request<CleanJobDataParams>,
) -> Pin<Box<dyn Future<Output = Result<Response<CleanJobDataResult>, Status>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
Auto Trait Implementations§
impl<T, U> Freeze for SchedulerServer<T, U>
impl<T, U> !RefUnwindSafe for SchedulerServer<T, U>
impl<T, U> Send for SchedulerServer<T, U>
impl<T, U> Sync for SchedulerServer<T, U>
impl<T, U> Unpin for SchedulerServer<T, U>
impl<T, U> !UnwindSafe for SchedulerServer<T, U>
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
Source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
Wrap the input message
T in a tonic::Request