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