mirror of
https://github.com/GreptimeTeam/greptimedb.git
synced 2026-05-26 09:50:40 +00:00
feat: disable mysql server on datande when running standalone mode (#593)
This commit is contained in:
@@ -15,9 +15,9 @@
|
||||
use std::sync::Arc;
|
||||
|
||||
use common_telemetry::info;
|
||||
use frontend::frontend::Mode;
|
||||
use meta_client::MetaClientOpts;
|
||||
use serde::{Deserialize, Serialize};
|
||||
use servers::Mode;
|
||||
|
||||
use crate::error::Result;
|
||||
use crate::instance::{Instance, InstanceRef};
|
||||
|
||||
@@ -20,7 +20,6 @@ use catalog::remote::MetaKvBackend;
|
||||
use catalog::CatalogManagerRef;
|
||||
use common_grpc::channel_manager::{ChannelConfig, ChannelManager};
|
||||
use common_telemetry::logging::info;
|
||||
use frontend::frontend::Mode;
|
||||
use log_store::fs::config::LogConfig;
|
||||
use log_store::fs::log::LocalFileLogStore;
|
||||
use meta_client::client::{MetaClient, MetaClientBuilder};
|
||||
@@ -31,6 +30,7 @@ use object_store::layers::LoggingLayer;
|
||||
use object_store::services::fs::Builder;
|
||||
use object_store::{util, ObjectStore};
|
||||
use query::query_engine::{QueryEngineFactory, QueryEngineRef};
|
||||
use servers::Mode;
|
||||
use snafu::prelude::*;
|
||||
use storage::config::EngineConfig as StorageEngineConfig;
|
||||
use storage::EngineImpl;
|
||||
|
||||
@@ -17,11 +17,12 @@ use std::net::SocketAddr;
|
||||
use std::sync::Arc;
|
||||
|
||||
use common_runtime::Builder as RuntimeBuilder;
|
||||
use common_telemetry::tracing::log::info;
|
||||
use servers::grpc::GrpcServer;
|
||||
use servers::mysql::server::MysqlServer;
|
||||
use servers::server::Server;
|
||||
use servers::Mode;
|
||||
use snafu::ResultExt;
|
||||
use tokio::try_join;
|
||||
|
||||
use crate::datanode::DatanodeOptions;
|
||||
use crate::error::{ParseAddrSnafu, Result, RuntimeResourceSnafu, StartServerSnafu};
|
||||
@@ -32,7 +33,7 @@ pub mod grpc;
|
||||
/// All rpc services.
|
||||
pub struct Services {
|
||||
grpc_server: GrpcServer,
|
||||
mysql_server: Box<dyn Server>,
|
||||
mysql_server: Option<Box<dyn Server>>,
|
||||
}
|
||||
|
||||
impl Services {
|
||||
@@ -45,17 +46,29 @@ impl Services {
|
||||
.context(RuntimeResourceSnafu)?,
|
||||
);
|
||||
|
||||
let mysql_io_runtime = Arc::new(
|
||||
RuntimeBuilder::default()
|
||||
.worker_threads(opts.mysql_runtime_size as usize)
|
||||
.thread_name("mysql-io-handlers")
|
||||
.build()
|
||||
.context(RuntimeResourceSnafu)?,
|
||||
);
|
||||
let mysql_server = match opts.mode {
|
||||
Mode::Standalone => {
|
||||
info!("Disable MySQL server on datanode when running in standalone mode");
|
||||
None
|
||||
}
|
||||
Mode::Distributed => {
|
||||
let mysql_io_runtime = Arc::new(
|
||||
RuntimeBuilder::default()
|
||||
.worker_threads(opts.mysql_runtime_size as usize)
|
||||
.thread_name("mysql-io-handlers")
|
||||
.build()
|
||||
.context(RuntimeResourceSnafu)?,
|
||||
);
|
||||
Some(MysqlServer::create_server(
|
||||
instance.clone(),
|
||||
mysql_io_runtime,
|
||||
))
|
||||
}
|
||||
};
|
||||
|
||||
Ok(Self {
|
||||
grpc_server: GrpcServer::new(instance.clone(), instance.clone(), grpc_runtime),
|
||||
mysql_server: MysqlServer::create_server(instance, mysql_io_runtime),
|
||||
grpc_server: GrpcServer::new(instance.clone(), instance, grpc_runtime),
|
||||
mysql_server,
|
||||
})
|
||||
}
|
||||
|
||||
@@ -63,15 +76,19 @@ impl Services {
|
||||
let grpc_addr: SocketAddr = opts.rpc_addr.parse().context(ParseAddrSnafu {
|
||||
addr: &opts.rpc_addr,
|
||||
})?;
|
||||
let mysql_addr = &opts.mysql_addr;
|
||||
let mysql_addr: SocketAddr = mysql_addr
|
||||
.parse()
|
||||
.context(ParseAddrSnafu { addr: mysql_addr })?;
|
||||
try_join!(
|
||||
self.grpc_server.start(grpc_addr),
|
||||
self.mysql_server.start(mysql_addr),
|
||||
)
|
||||
.context(StartServerSnafu)?;
|
||||
|
||||
let mut res = vec![self.grpc_server.start(grpc_addr)];
|
||||
if let Some(mysql_server) = &self.mysql_server {
|
||||
let mysql_addr = &opts.mysql_addr;
|
||||
let mysql_addr: SocketAddr = mysql_addr
|
||||
.parse()
|
||||
.context(ParseAddrSnafu { addr: mysql_addr })?;
|
||||
res.push(mysql_server.start(mysql_addr));
|
||||
};
|
||||
|
||||
futures::future::try_join_all(res)
|
||||
.await
|
||||
.context(StartServerSnafu)?;
|
||||
Ok(())
|
||||
}
|
||||
}
|
||||
|
||||
@@ -30,10 +30,10 @@ use client::{Client, Database, ObjectResult};
|
||||
use common_catalog::consts::MIN_USER_TABLE_ID;
|
||||
use common_runtime::Builder as RuntimeBuilder;
|
||||
use frontend::frontend::FrontendOptions;
|
||||
use frontend::frontend::Mode::Standalone;
|
||||
use frontend::grpc::GrpcOptions;
|
||||
use servers::grpc::GrpcServer;
|
||||
use servers::server::Server;
|
||||
use servers::Mode;
|
||||
|
||||
use crate::instance::Instance;
|
||||
use crate::tests::test_util::{self, TestGuard};
|
||||
@@ -62,7 +62,7 @@ async fn setup_grpc_server(
|
||||
|
||||
let fe_grpc_addr = format!("127.0.0.1:{}", frontend_port);
|
||||
let fe_opts = FrontendOptions {
|
||||
mode: Standalone,
|
||||
mode: Mode::Standalone,
|
||||
datanode_rpc_addr: datanode_grpc_addr.clone(),
|
||||
grpc_options: Some(GrpcOptions {
|
||||
addr: fe_grpc_addr.clone(),
|
||||
|
||||
@@ -19,9 +19,9 @@ use catalog::CatalogManagerRef;
|
||||
use common_catalog::consts::{DEFAULT_CATALOG_NAME, DEFAULT_SCHEMA_NAME, MIN_USER_TABLE_ID};
|
||||
use datatypes::data_type::ConcreteDataType;
|
||||
use datatypes::schema::{ColumnSchema, SchemaBuilder};
|
||||
use frontend::frontend::Mode;
|
||||
use mito::config::EngineConfig;
|
||||
use mito::table::test_util::{new_test_object_store, MockEngine, MockMitoEngine};
|
||||
use servers::Mode;
|
||||
use snafu::ResultExt;
|
||||
use table::engine::{EngineContext, TableEngineRef};
|
||||
use table::requests::CreateTableRequest;
|
||||
|
||||
Reference in New Issue
Block a user