1use std::collections::HashMap;
16use std::sync::Arc;
17
18use store_api::storage::{RegionId, RegionNumber, TableId};
19
20use crate::DatanodeId;
21use crate::cache_invalidator::CacheInvalidatorRef;
22use crate::ddl::flow_meta::FlowMetadataAllocatorRef;
23use crate::ddl::table_meta::TableMetadataAllocatorRef;
24use crate::key::TableMetadataManagerRef;
25use crate::key::flow::FlowMetadataManagerRef;
26use crate::key::table_route::PhysicalTableRouteValue;
27use crate::node_manager::NodeManagerRef;
28use crate::region_keeper::MemoryRegionKeeperRef;
29use crate::region_registry::LeaderRegionRegistryRef;
30
31pub mod alter_database;
32pub mod alter_logical_tables;
33pub mod alter_table;
34pub mod comment_on;
35pub mod create_database;
36pub mod create_flow;
37pub mod create_logical_tables;
38pub mod create_table;
39mod create_table_template;
40pub(crate) use create_table_template::{CreateRequestBuilder, build_template_from_raw_table_info};
41pub mod create_view;
42pub mod drop_database;
43pub mod drop_flow;
44pub mod drop_table;
45pub mod drop_view;
46pub mod flow_meta;
47pub mod table_meta;
48#[cfg(any(test, feature = "testing"))]
49pub mod test_util;
50#[cfg(test)]
51pub(crate) mod tests;
52pub mod truncate_table;
53pub mod utils;
54
55#[derive(Default)]
57pub struct TableMetadata {
58 pub table_id: TableId,
60 pub table_route: PhysicalTableRouteValue,
62 pub region_wal_options: HashMap<RegionNumber, String>,
65}
66
67pub type RegionFailureDetectorControllerRef = Arc<dyn RegionFailureDetectorController>;
68
69pub type DetectingRegion = (DatanodeId, RegionId);
70
71#[async_trait::async_trait]
75pub trait RegionFailureDetectorController: Send + Sync {
76 async fn register_failure_detectors(&self, detecting_regions: Vec<DetectingRegion>);
78
79 async fn deregister_failure_detectors(&self, detecting_regions: Vec<DetectingRegion>);
81}
82
83#[derive(Debug, Clone)]
85pub struct NoopRegionFailureDetectorControl;
86
87#[async_trait::async_trait]
88impl RegionFailureDetectorController for NoopRegionFailureDetectorControl {
89 async fn register_failure_detectors(&self, _detecting_regions: Vec<DetectingRegion>) {}
90
91 async fn deregister_failure_detectors(&self, _detecting_regions: Vec<DetectingRegion>) {}
92}
93
94#[derive(Clone)]
96pub struct DdlContext {
97 pub node_manager: NodeManagerRef,
99 pub cache_invalidator: CacheInvalidatorRef,
101 pub memory_region_keeper: MemoryRegionKeeperRef,
103 pub leader_region_registry: LeaderRegionRegistryRef,
105 pub table_metadata_manager: TableMetadataManagerRef,
107 pub table_metadata_allocator: TableMetadataAllocatorRef,
109 pub flow_metadata_manager: FlowMetadataManagerRef,
111 pub flow_metadata_allocator: FlowMetadataAllocatorRef,
113 pub region_failure_detector_controller: RegionFailureDetectorControllerRef,
115}
116
117impl DdlContext {
118 pub async fn register_failure_detectors(&self, detecting_regions: Vec<DetectingRegion>) {
123 self.region_failure_detector_controller
124 .register_failure_detectors(detecting_regions)
125 .await;
126 }
127
128 async fn deregister_failure_detectors(&self, detecting_regions: Vec<DetectingRegion>) {
133 self.region_failure_detector_controller
134 .deregister_failure_detectors(detecting_regions)
135 .await;
136 }
137}