feat: update physical table schema on alter logical tables (#3585)

* feat: update physical table schema on alter

* feat: alter logical table in sql path

* feat: invalidate cache step1

* feat: invalidate cache step2

* feat: invalidate cache step3

* feat: invalidate cache step4

* fix: failed ut

* fix: standalone cache invalidator

* feat: log the count of already finished

* feat: re-invalidate cache

* chore: by comment

* chore: Update src/common/meta/src/ddl/create_logical_tables.rs

---------

Co-authored-by: Yingwen <realevenyag@gmail.com>
This commit is contained in:
JeremyHi
2024-03-26 22:29:53 +08:00
committed by GitHub
parent dd18d8c97b
commit 58c7858cd4
20 changed files with 548 additions and 159 deletions

View File

@@ -20,7 +20,7 @@ use std::time::Duration;
use api::v1::meta::Role;
use api::v1::region::region_server::RegionServer;
use arrow_flight::flight_service_server::FlightServiceServer;
use catalog::kvbackend::{CachedMetaKvBackendBuilder, MetaKvBackend};
use catalog::kvbackend::{CachedMetaKvBackendBuilder, KvBackendCatalogManager, MetaKvBackend};
use client::client_manager::DatanodeClients;
use client::Client;
use common_base::Plugins;
@@ -353,11 +353,12 @@ impl GreptimeDbClusterBuilder {
let cached_meta_backend =
Arc::new(CachedMetaKvBackendBuilder::new(meta_client.clone()).build());
let catalog_manager =
KvBackendCatalogManager::new(cached_meta_backend.clone(), cached_meta_backend.clone());
let handlers_executor = HandlerGroupExecutor::new(vec![
Arc::new(ParseMailboxMessageHandler),
Arc::new(InvalidateTableCacheHandler::new(
cached_meta_backend.clone(),
)),
Arc::new(InvalidateTableCacheHandler::new(catalog_manager.clone())),
]);
let heartbeat_task = HeartbeatTask::new(
@@ -366,13 +367,17 @@ impl GreptimeDbClusterBuilder {
Arc::new(handlers_executor),
);
let instance =
FrontendBuilder::new(cached_meta_backend.clone(), datanode_clients, meta_client)
.with_cache_invalidator(cached_meta_backend)
.with_heartbeat_task(heartbeat_task)
.try_build()
.await
.unwrap();
let instance = FrontendBuilder::new(
cached_meta_backend.clone(),
catalog_manager.clone(),
datanode_clients,
meta_client,
)
.with_cache_invalidator(catalog_manager)
.with_heartbeat_task(heartbeat_task)
.try_build()
.await
.unwrap();
Arc::new(instance)
}

View File

@@ -14,6 +14,7 @@
use std::sync::Arc;
use catalog::kvbackend::KvBackendCatalogManager;
use cmd::options::MixOptions;
use common_base::Plugins;
use common_catalog::consts::MIN_USER_TABLE_ID;
@@ -124,6 +125,9 @@ impl GreptimeDbStandaloneBuilder {
let table_metadata_manager = Arc::new(TableMetadataManager::new(kv_backend.clone()));
table_metadata_manager.init().await.unwrap();
let catalog_manager =
KvBackendCatalogManager::new(kv_backend.clone(), Arc::new(DummyCacheInvalidator));
let datanode_manager = Arc::new(StandaloneDatanodeManager(datanode.region_server()));
let table_id_sequence = Arc::new(
@@ -154,12 +158,17 @@ impl GreptimeDbStandaloneBuilder {
.unwrap(),
);
let instance =
FrontendBuilder::new(kv_backend.clone(), datanode_manager, ddl_task_executor)
.with_plugin(plugins)
.try_build()
.await
.unwrap();
let instance = FrontendBuilder::new(
kv_backend.clone(),
catalog_manager.clone(),
datanode_manager,
ddl_task_executor,
)
.with_plugin(plugins)
.with_cache_invalidator(catalog_manager)
.try_build()
.await
.unwrap();
procedure_manager.start().await.unwrap();
wal_options_allocator.start().await.unwrap();