pub struct MetadataManager {
pub cluster_controller: ClusterControllerRef,
pub catalog_controller: CatalogControllerRef,
}
Fields§
§cluster_controller: ClusterControllerRef
§catalog_controller: CatalogControllerRef
Implementations§
source§impl MetadataManager
impl MetadataManager
pub fn new( cluster_controller: ClusterControllerRef, catalog_controller: CatalogControllerRef, ) -> Self
pub async fn get_worker_by_id( &self, worker_id: WorkerId, ) -> MetaResult<Option<PbWorkerNode>>
pub async fn count_worker_node(&self) -> MetaResult<HashMap<WorkerType, u64>>
pub async fn get_worker_info_by_id( &self, worker_id: WorkerId, ) -> Option<WorkerExtraInfo>
pub async fn add_worker_node( &self, type: PbWorkerType, host_address: HostAddress, property: AddNodeProperty, resource: PbResource, ) -> MetaResult<WorkerId>
pub async fn list_worker_node( &self, worker_type: Option<WorkerType>, worker_state: Option<State>, ) -> MetaResult<Vec<PbWorkerNode>>
pub async fn subscribe_active_streaming_compute_nodes( &self, ) -> MetaResult<(Vec<WorkerNode>, UnboundedReceiver<LocalNotification>)>
pub async fn list_active_streaming_compute_nodes( &self, ) -> MetaResult<Vec<PbWorkerNode>>
pub async fn list_active_serving_compute_nodes( &self, ) -> MetaResult<Vec<PbWorkerNode>>
pub async fn list_active_database_ids(&self) -> MetaResult<HashSet<DatabaseId>>
pub async fn split_fragment_map_by_database<T: Debug>( &self, fragment_map: HashMap<FragmentId, T>, ) -> MetaResult<HashMap<DatabaseId, HashMap<FragmentId, T>>>
pub async fn list_background_creating_jobs(&self) -> MetaResult<Vec<TableId>>
pub async fn list_sources(&self) -> MetaResult<Vec<PbSource>>
pub async fn post_apply_reschedules( &self, reschedules: HashMap<FragmentId, Reschedule>, table_parallelism_assignment: HashMap<TableId, TableParallelism>, ) -> MetaResult<()>
pub async fn running_fragment_parallelisms( &self, id_filter: Option<HashSet<FragmentId>>, ) -> MetaResult<HashMap<FragmentId, FragmentParallelismInfo>>
sourcepub async fn get_upstream_root_fragments(
&self,
upstream_table_ids: &HashSet<TableId>,
) -> MetaResult<(HashMap<TableId, Fragment>, HashMap<ActorId, WorkerId>)>
pub async fn get_upstream_root_fragments( &self, upstream_table_ids: &HashSet<TableId>, ) -> MetaResult<(HashMap<TableId, Fragment>, HashMap<ActorId, WorkerId>)>
Get and filter the “root” fragments of the specified relations.
The root fragment is the bottom-most fragment of its fragment graph, and can be a MView
or a Source
.
§What can be the root fragment
- For MV, it should have one
MView
fragment. - For table, it should have one
MView
fragment and one or twoSource
fragments.MView
should be the root. - For source, it should have one
Source
fragment.
In other words, it’s the MView
fragment if it exists, otherwise it’s the Source
fragment.
§What do we expect to get for different creating streaming job
- MV/Sink/Index should have MV upstream fragments for upstream MV/Tables, and Source upstream fragments for upstream shared sources.
- CDC Table has a Source upstream fragment.
- Sources and other Tables shouldn’t have an upstream fragment.
pub async fn get_streaming_cluster_info( &self, ) -> MetaResult<StreamingClusterInfo>
pub async fn get_all_table_options( &self, ) -> MetaResult<HashMap<u32, TableOption>>
pub async fn get_table_name_type_mapping( &self, ) -> MetaResult<HashMap<u32, (String, String)>>
pub async fn get_created_table_ids(&self) -> MetaResult<Vec<u32>>
pub async fn get_table_catalog_by_ids( &self, ids: Vec<u32>, ) -> MetaResult<Vec<PbTable>>
pub async fn get_sink_catalog_by_ids( &self, ids: &[u32], ) -> MetaResult<Vec<PbSink>>
pub async fn get_table_catalog_by_cdc_table_id( &self, cdc_table_id: &String, ) -> MetaResult<Vec<PbTable>>
pub async fn get_downstream_chain_fragments( &self, job_id: u32, ) -> MetaResult<(Vec<(PbDispatchStrategy, PbFragment)>, HashMap<ActorId, WorkerId>)>
pub async fn get_worker_actor_ids( &self, job_ids: HashSet<TableId>, ) -> MetaResult<BTreeMap<WorkerId, Vec<ActorId>>>
pub async fn get_job_id_to_internal_table_ids_mapping( &self, ) -> Option<Vec<(u32, Vec<u32>)>>
pub async fn get_job_fragments_by_id( &self, id: &TableId, ) -> MetaResult<TableFragments>
pub async fn get_running_actors_of_fragment( &self, id: FragmentId, ) -> MetaResult<HashSet<ActorId>>
pub async fn get_running_actors_and_upstream_actors_of_fragment( &self, id: FragmentId, ) -> MetaResult<HashSet<(ActorId, Vec<ActorId>)>>
pub async fn get_job_fragments_by_ids( &self, ids: &[TableId], ) -> MetaResult<Vec<TableFragments>>
pub async fn all_active_actors( &self, ) -> MetaResult<HashMap<ActorId, StreamActor>>
pub async fn worker_actor_count(&self) -> MetaResult<HashMap<WorkerId, usize>>
pub async fn count_streaming_job(&self) -> MetaResult<usize>
pub async fn list_stream_job_desc( &self, ) -> MetaResult<Vec<MetaTelemetryJobDesc>>
pub async fn update_source_rate_limit_by_source_id( &self, source_id: SourceId, rate_limit: Option<u32>, ) -> MetaResult<HashMap<FragmentId, Vec<ActorId>>>
pub async fn update_backfill_rate_limit_by_table_id( &self, table_id: TableId, rate_limit: Option<u32>, ) -> MetaResult<HashMap<FragmentId, Vec<ActorId>>>
pub async fn update_actor_splits_by_split_assignment( &self, split_assignment: &SplitAssignment, ) -> MetaResult<()>
pub async fn get_mv_depended_subscriptions( &self, ) -> MetaResult<HashMap<DatabaseId, HashMap<TableId, HashMap<SubscriptionId, u64>>>>
pub async fn get_job_max_parallelism( &self, table_id: TableId, ) -> MetaResult<usize>
pub fn cluster_id(&self) -> &ClusterId
pub async fn list_rate_limits(&self) -> MetaResult<Vec<RateLimitInfo>>
source§impl MetadataManager
impl MetadataManager
sourcepub(crate) async fn wait_streaming_job_finished(
&self,
id: ObjectId,
) -> MetaResult<NotificationVersion>
pub(crate) async fn wait_streaming_job_finished( &self, id: ObjectId, ) -> MetaResult<NotificationVersion>
Wait for job finishing notification in TrackingJob::finish
.
The progress is updated per barrier.
pub(crate) async fn notify_finish_failed(&self, err: &MetaError)
Trait Implementations§
source§impl Clone for MetadataManager
impl Clone for MetadataManager
source§fn clone(&self) -> MetadataManager
fn clone(&self) -> MetadataManager
Returns a copy 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 moreAuto Trait Implementations§
impl Freeze for MetadataManager
impl !RefUnwindSafe for MetadataManager
impl Send for MetadataManager
impl Sync for MetadataManager
impl Unpin for MetadataManager
impl !UnwindSafe for MetadataManager
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§unsafe fn clone_to_uninit(&self, dst: *mut T)
unsafe fn clone_to_uninit(&self, dst: *mut T)
🔬This is a nightly-only experimental API. (
clone_to_uninit
)§impl<T> Conv for T
impl<T> Conv for T
§impl<Choices> CoproductSubsetter<CNil, HNil> for Choices
impl<Choices> CoproductSubsetter<CNil, HNil> for Choices
§impl<T> FmtForward for T
impl<T> FmtForward for T
§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
Causes
self
to use its Binary
implementation when Debug
-formatted.§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
Causes
self
to use its Display
implementation when
Debug
-formatted.§fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
Causes
self
to use its LowerExp
implementation when
Debug
-formatted.§fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
Causes
self
to use its LowerHex
implementation when
Debug
-formatted.§fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
Causes
self
to use its Octal
implementation when Debug
-formatted.§fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
Causes
self
to use its Pointer
implementation when
Debug
-formatted.§fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
Causes
self
to use its UpperExp
implementation when
Debug
-formatted.§fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
Causes
self
to use its UpperHex
implementation when
Debug
-formatted.§fn fmt_list(self) -> FmtList<Self>where
&'a Self: for<'a> IntoIterator,
fn fmt_list(self) -> FmtList<Self>where
&'a Self: for<'a> IntoIterator,
Formats each item in a sequence. Read more
§impl<T> FutureExt for T
impl<T> FutureExt for T
§fn with_context(self, otel_cx: Context) -> WithContext<Self>
fn with_context(self, otel_cx: Context) -> WithContext<Self>
§fn with_current_context(self) -> WithContext<Self>
fn with_current_context(self) -> WithContext<Self>
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
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
§impl<T> IntoResult<T> for T
impl<T> IntoResult<T> for T
type Err = Infallible
fn into_result(self) -> Result<T, <T as IntoResult<T>>::Err>
Creates a shared type from an unshared type.
§impl<T, U, I> LiftInto<U, I> for Twhere
U: LiftFrom<T, I>,
impl<T, U, I> LiftInto<U, I> for Twhere
U: LiftFrom<T, I>,
source§impl<M> MetricVecRelabelExt for M
impl<M> MetricVecRelabelExt for M
source§fn relabel(
self,
metric_level: MetricLevel,
relabel_threshold: MetricLevel,
) -> RelabeledMetricVec<M>
fn relabel( self, metric_level: MetricLevel, relabel_threshold: MetricLevel, ) -> RelabeledMetricVec<M>
Equivalent to
RelabeledMetricVec::with_metric_level
.source§fn relabel_n(
self,
metric_level: MetricLevel,
relabel_threshold: MetricLevel,
relabel_num: usize,
) -> RelabeledMetricVec<M>
fn relabel_n( self, metric_level: MetricLevel, relabel_threshold: MetricLevel, relabel_num: usize, ) -> RelabeledMetricVec<M>
Equivalent to
RelabeledMetricVec::with_metric_level_relabel_n
.source§fn relabel_debug_1(
self,
relabel_threshold: MetricLevel,
) -> RelabeledMetricVec<M>
fn relabel_debug_1( self, relabel_threshold: MetricLevel, ) -> RelabeledMetricVec<M>
Equivalent to
RelabeledMetricVec::with_metric_level_relabel_n
with metric_level
set to
MetricLevel::Debug
and relabel_num
set to 1.§impl<T> Pipe for Twhere
T: ?Sized,
impl<T> Pipe for Twhere
T: ?Sized,
§fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
Pipes by value. This is generally the method you want to use. Read more
§fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
Borrows
self
and passes that borrow into the pipe function. Read more§fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
Mutably borrows
self
and passes that borrow into the pipe function. Read more§fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
§fn pipe_borrow_mut<'a, B, R>(
&'a mut self,
func: impl FnOnce(&'a mut B) -> R,
) -> R
fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R, ) -> R
§fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
Borrows
self
, then passes self.as_ref()
into the pipe function.§fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
Mutably borrows
self
, then passes self.as_mut()
into the pipe
function.§fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
Borrows
self
, then passes self.deref()
into the pipe function.§impl<T> Pointable for T
impl<T> Pointable for T
§impl<Source> Sculptor<HNil, HNil> for Source
impl<Source> Sculptor<HNil, HNil> for Source
§impl<T> Tap for T
impl<T> Tap for T
§fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
Immutable access to the
Borrow<B>
of a value. Read more§fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
Mutable access to the
BorrowMut<B>
of a value. Read more§fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
Immutable access to the
AsRef<R>
view of a value. Read more§fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
Mutable access to the
AsMut<R>
view of a value. Read more§fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
Immutable access to the
Deref::Target
of a value. Read more§fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
Mutable access to the
Deref::Target
of a value. Read more§fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
Calls
.tap()
only in debug builds, and is erased in release builds.§fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
Calls
.tap_mut()
only in debug builds, and is erased in release
builds.§fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
Calls
.tap_borrow()
only in debug builds, and is erased in release
builds.§fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
Calls
.tap_borrow_mut()
only in debug builds, and is erased in release
builds.§fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
Calls
.tap_ref()
only in debug builds, and is erased in release
builds.§fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
Calls
.tap_ref_mut()
only in debug builds, and is erased in release
builds.§fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
Calls
.tap_deref()
only in debug builds, and is erased in release
builds.