Skip to content

Commit 9ea37e8

Browse files
authored
chore: optimize compilation cache hit rate (#18529)
1 parent b98558b commit 9ea37e8

File tree

177 files changed

+1219
-778
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

177 files changed

+1219
-778
lines changed

.config/version-schema.json

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
{
2+
"$schema": "http://json-schema.org/draft-07/schema#",
3+
"type": "object",
4+
"properties": {
5+
"dependencies": {
6+
"type": "object",
7+
"properties": {
8+
"databend-common-version": false
9+
}
10+
}
11+
}
12+
}

Cargo.lock

Lines changed: 6 additions & 4 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 16 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -219,7 +219,7 @@ databend-storages-common-stage = { path = "src/query/storages/common/stage" }
219219
databend-storages-common-table-meta = { path = "src/query/storages/common/table_meta" }
220220

221221
# Crates.io dependencies
222-
ahash = "0.8"
222+
ahash = { version = "0.8", features = ["no-rng"] }
223223
aho-corasick = { version = "1.0.1" } #
224224
anyerror = { version = "=0.1.13" }
225225
anyhow = { version = "1.0.65" }
@@ -231,11 +231,11 @@ arrow-buffer = { version = "55" }
231231
arrow-cast = { version = "55", features = ["prettyprint"] }
232232
arrow-data = { version = "55" }
233233
arrow-flight = { version = "55", features = ["flight-sql-experimental", "tls"] }
234-
arrow-ipc = { version = "55" }
234+
arrow-ipc = { version = "55", features = ["lz4", "zstd"] }
235235
arrow-ord = { version = "55" }
236236
arrow-schema = { version = "55", features = ["serde"] }
237237
arrow-select = { version = "55" }
238-
arrow-udf-runtime = { version = "0.8.0", default-features = false }
238+
arrow-udf-runtime = { version = "0.8.0", default-features = false, features = ["javascript", "wasm"] }
239239
async-backtrace = "0.2"
240240
async-channel = "1.7.1"
241241
async-compat = { version = "0.2" }
@@ -246,7 +246,7 @@ async-compression = { git = "https://github.com/datafuse-extras/async-compressio
246246
async-recursion = "1.1.1"
247247
async-stream = "0.3.3"
248248
async-trait = { version = "0.1.88" }
249-
backoff = "0.4" # FIXME: use backon to replace this.
249+
backoff = { version = "0.4", features = ["futures", "tokio"] } # FIXME: use backon to replace this.
250250
backon = "1"
251251
backtrace = { version = "0.3.73", features = [
252252
"std",
@@ -260,12 +260,12 @@ bitvec = "1.0.1"
260260
blake3 = "1.3.1"
261261
bollard = { version = "0.17" }
262262
borsh = { version = "1.2.1", features = ["derive"] }
263-
brotli = "3.3"
263+
brotli = { version = "3.3", features = ["std"] }
264264
bstr = "1"
265265
buf-list = "1.0.3"
266266
bumpalo = "3.12.0"
267267
byte-unit = "5.1.6"
268-
bytemuck = { version = "1", features = ["derive"] }
268+
bytemuck = { version = "1", features = ["derive", "extern_crate_alloc", "must_cast", "transparentwrapper_extra"] }
269269
byteorder = "1.4.3"
270270
bytes = "1.5.0"
271271
bytesize = "2"
@@ -286,7 +286,7 @@ crossbeam-channel = "0.5.6"
286286
csv-core = "0.1.11"
287287
ctor = "0.2"
288288
ctrlc = { version = "3.2.3", features = ["termination"] }
289-
dashmap = "6.1.0"
289+
dashmap = { version = "6.1.0", features = ["serde"] }
290290
deepsize = { version = "0.2.0" }
291291
defer = "0.2"
292292
deltalake = "0.26"
@@ -302,7 +302,7 @@ enquote = "1.1.0"
302302
enum-as-inner = "0.6"
303303
enum_dispatch = "0.3.13"
304304
enumflags2 = { version = "0.7.7", features = ["serde"] }
305-
ethnum = { version = "1.5.1" }
305+
ethnum = { version = "1.5.1", features = ["serde", "macros"] }
306306
faststr = "0.2"
307307
feature-set = { version = "0.1.1" }
308308
feistel-permutation-rs = "0.1.1"
@@ -385,7 +385,7 @@ mockall = "0.11.2"
385385
mysql_async = { version = "0.34", default-features = false, features = ["native-tls-tls"] }
386386
naive-cityhash = "0.2.0"
387387
ndarray = "0.15.6"
388-
num = "0.4.0"
388+
num = { version = "0.4.0", features = ["std"] }
389389
num-bigint = "0.4.6"
390390
num-derive = "0.4.2"
391391
num-traits = "0.2.19"
@@ -442,7 +442,7 @@ prost = { version = "0.13" }
442442
prost-build = { version = "0.13" }
443443
prqlc = "0.11.3"
444444
raft-log = { version = "0.2.9" }
445-
rand = { version = "0.8.5", features = ["small_rng"] }
445+
rand = { version = "0.8.5", features = ["small_rng", "serde1"] }
446446
rand_distr = "0.4.3"
447447
rayon = "1.9.0"
448448
recursive = "0.1.1"
@@ -454,6 +454,7 @@ reqwest = { version = "0.12", default-features = false, features = [
454454
"http2",
455455
"native-tls-vendored",
456456
"native-tls-alpn",
457+
"cookies",
457458
] }
458459
reqwest-hickory-resolver = "0.2"
459460
ringbuffer = "0.14.2"
@@ -512,13 +513,13 @@ tempfile = "3.4.0"
512513
terminal_size = "0.4.2"
513514
test-harness = "0.3.0"
514515
testcontainers = "0.23"
515-
testcontainers-modules = "0.11.5"
516+
testcontainers-modules = { version = "0.11.5", features = ["mysql", "redis"] }
516517
thiserror = { version = "1" }
517518
thrift = "0.17.0"
518519
tikv-jemalloc-ctl = { version = "0.6.0", features = ["use_std", "stats"] }
519520
tikv-jemalloc-sys = "0.6.0"
520521
tokio = { version = "1.35.0", features = ["full"] }
521-
tokio-stream = "0.1.11"
522+
tokio-stream = { version = "0.1.11", features = ["net"] }
522523
tokio-util = { version = "0.7.13" }
523524
toml = { version = "0.8", features = ["parse"] }
524525
tonic = { version = "0.12.3", features = ["transport", "codegen", "prost", "tls-roots", "tls"] }
@@ -539,8 +540,8 @@ watcher = { version = "0.4.2" }
539540
wiremock = "0.6"
540541
wkt = "0.11.1"
541542
xorf = { version = "0.11.0", default-features = false, features = ["binary-fuse"] }
542-
xorfilter-rs = "0.5"
543-
zerocopy = "0.8.26"
543+
xorfilter-rs = { version = "0.5", features = ["cbordata"] }
544+
zerocopy = { version = "0.8.26", features = ["derive"] }
544545
zip = "3.0.0"
545546
zstd = "0.12.3"
546547

@@ -564,7 +565,7 @@ vergen = { version = "8.3.1", default-features = false, features = ["build", "ca
564565
env_logger = "0.11"
565566
fastrace = { version = "0.7.14", features = ["enable"] }
566567
fastrace-opentelemetry = "0.10"
567-
log = { version = "0.4.27", features = ["serde", "kv_unstable_std"] }
568+
log = { version = "0.4.27", features = ["serde", "kv_serde", "kv_unstable_std"] }
568569
logcall = "0.1.9"
569570
opentelemetry = { version = "0.29", features = ["trace", "logs"] }
570571
opentelemetry-otlp = { version = "0.29", default-features = false, features = [

src/bendpy/Cargo.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ databend-common-expression = { workspace = true }
2525
databend-common-license = { workspace = true }
2626
databend-common-meta-app = { workspace = true }
2727
databend-common-users = { workspace = true }
28+
databend-common-version = { workspace = true }
2829
databend-query = { workspace = true, features = [
2930
"simd",
3031
"disable_initial_exec_tls",

src/bendpy/src/context.rs

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,8 @@ use databend_common_meta_app::principal::UserInfo;
2222
use databend_common_meta_app::principal::UserPrivilegeSet;
2323
use databend_common_meta_app::tenant::Tenant;
2424
use databend_common_users::UserApiProvider;
25+
use databend_common_version::BUILD_INFO;
26+
use databend_query::sessions::BuildInfoRef;
2527
use databend_query::sessions::QueryContext;
2628
use databend_query::sessions::Session;
2729
use databend_query::sessions::SessionManager;
@@ -37,6 +39,7 @@ use crate::utils::RUNTIME;
3739
#[derive(Clone)]
3840
pub(crate) struct PySessionContext {
3941
pub(crate) session: Arc<Session>,
42+
version: BuildInfoRef,
4043
}
4144

4245
#[pymethods]
@@ -61,9 +64,12 @@ impl PySessionContext {
6164
let session = session_manager.register_session(session).unwrap();
6265

6366
let config = GlobalConfig::instance();
64-
UserApiProvider::try_create_simple(config.meta.to_meta_grpc_client_conf(), &tenant)
65-
.await
66-
.unwrap();
67+
UserApiProvider::try_create_simple(
68+
config.meta.to_meta_grpc_client_conf(&BUILD_INFO),
69+
&tenant,
70+
)
71+
.await
72+
.unwrap();
6773

6874
let mut user = UserInfo::new_no_auth("root", "%");
6975
user.grants.grant_privileges(
@@ -75,15 +81,18 @@ impl PySessionContext {
7581
Ok::<Arc<Session>, PyErr>(session)
7682
})?;
7783

78-
let mut res = Self { session };
84+
let mut res = Self {
85+
session,
86+
version: &BUILD_INFO,
87+
};
7988

8089
res.sql("CREATE DATABASE IF NOT EXISTS default", py)
8190
.and_then(|df| df.collect(py))?;
8291
Ok(res)
8392
}
8493

8594
fn sql(&mut self, sql: &str, py: Python) -> PyResult<PyDataFrame> {
86-
let ctx = wait_for_future(py, self.session.create_query_context()).unwrap();
95+
let ctx = wait_for_future(py, self.session.create_query_context(self.version)).unwrap();
8796
let res = wait_for_future(py, plan_sql(&ctx, sql));
8897

8998
match res {

src/bendpy/src/lib.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ use databend_common_config::Config;
2929
use databend_common_config::InnerConfig;
3030
use databend_common_license::license_manager::LicenseManager;
3131
use databend_common_license::license_manager::OssLicenseManager;
32+
use databend_common_version::BUILD_INFO;
3233
use databend_query::clusters::ClusterDiscovery;
3334
use databend_query::GlobalServices;
3435
use pyo3::prelude::*;
@@ -88,7 +89,7 @@ allow_insecure = true
8889
INIT.call_once(|| {
8990
RUNTIME
9091
.block_on(async {
91-
GlobalServices::init(&conf, false).await?;
92+
GlobalServices::init(&conf, &BUILD_INFO, false).await?;
9293
// init oss license manager
9394
OssLicenseManager::init("".to_string()).unwrap();
9495
// Cluster register.

src/bendsave/Cargo.toml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,9 +29,9 @@ futures = { workspace = true }
2929
http = { workspace = true }
3030
log = { workspace = true }
3131
logforth = { workspace = true }
32-
opendal = { workspace = true, features = ["services-s3", "services-fs"] }
32+
opendal = { workspace = true }
3333
tokio = { workspace = true }
34-
toml = { workspace = true, features = ["parse"] }
34+
toml = { workspace = true }
3535

3636
[lints]
3737
workspace = true

src/bendsave/src/backup.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
// limitations under the License.
1414

1515
use anyhow::Result;
16+
use databend_common_version::BUILD_INFO;
1617
use futures::SinkExt;
1718
use futures::TryStreamExt;
1819
use log::info;
@@ -30,7 +31,7 @@ use crate::utils::DATABEND_META_BACKUP_PATH;
3031
pub async fn backup(from: &str, to: &str) -> Result<()> {
3132
let query_cfg = load_query_config(from)?;
3233
init_query(&query_cfg)?;
33-
verify_query_license(&query_cfg).await?;
34+
verify_query_license(&query_cfg, &BUILD_INFO).await?;
3435
let databend_storage = load_query_storage(&query_cfg)?;
3536

3637
let bendsave_storage = load_bendsave_storage(to).await?;

src/bendsave/src/storage.rs

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,9 @@ use databend_common_meta_types::protobuf::ExportRequest;
3838
use databend_common_storage::init_operator;
3939
use databend_common_users::builtin::BuiltIn;
4040
use databend_common_users::UserApiProvider;
41+
use databend_common_version::BUILD_INFO;
4142
use databend_enterprise_query::license::RealLicenseManager;
43+
use databend_query::sessions::BuildInfoRef;
4244
use databend_query::sessions::SessionManager;
4345
use futures::TryStream;
4446
use futures::TryStreamExt;
@@ -71,7 +73,8 @@ pub fn load_query_storage(cfg: &InnerConfig) -> Result<Operator> {
7173
pub fn load_meta_config(path: &str) -> Result<databend_meta::configs::Config> {
7274
let content = std::fs::read_to_string(path)?;
7375
let outer_config: databend_meta::configs::outer_v0::Config = toml::from_str(&content)?;
74-
let inner_config: databend_meta::configs::Config = outer_config.into();
76+
let inner_config: databend_meta::configs::Config =
77+
outer_config.try_into().map_err(|msg| anyhow!("{msg}"))?;
7578

7679
if !inner_config.raft_config.raft_dir.starts_with("/") {
7780
return Err(anyhow!(
@@ -91,7 +94,7 @@ pub fn load_meta_config(path: &str) -> Result<databend_meta::configs::Config> {
9194
pub fn init_query(cfg: &InnerConfig) -> Result<()> {
9295
GlobalInstance::init_production();
9396

94-
GlobalConfig::init(cfg)?;
97+
GlobalConfig::init(cfg, &BUILD_INFO)?;
9598
GlobalIORuntime::init(cfg.storage.num_cpus as usize)?;
9699

97100
Ok(())
@@ -102,11 +105,11 @@ pub fn init_query(cfg: &InnerConfig) -> Result<()> {
102105
///
103106
/// We only need to call it while backup since we can't access metasrv while
104107
/// restoring.
105-
pub async fn verify_query_license(cfg: &InnerConfig) -> Result<()> {
108+
pub async fn verify_query_license(cfg: &InnerConfig, version: BuildInfoRef) -> Result<()> {
106109
RealLicenseManager::init(cfg.query.tenant_id.tenant_name().to_string())?;
107110
SessionManager::init(cfg)?;
108111
UserApiProvider::init(
109-
cfg.meta.to_meta_grpc_client_conf(),
112+
cfg.meta.to_meta_grpc_client_conf(version),
110113
&CacheConfig::default(),
111114
BuiltIn::default(),
112115
&cfg.query.tenant_id,
@@ -119,8 +122,10 @@ pub async fn verify_query_license(cfg: &InnerConfig) -> Result<()> {
119122
let session = session_manager.register_session(session)?;
120123
let settings = session.get_settings();
121124

122-
LicenseManagerSwitch::instance()
123-
.check_enterprise_enabled(settings.get_enterprise_license(), Feature::SystemManagement)?;
125+
LicenseManagerSwitch::instance().check_enterprise_enabled(
126+
settings.get_enterprise_license(version),
127+
Feature::SystemManagement,
128+
)?;
124129

125130
debug!("databend license check passed");
126131
Ok(())
@@ -141,7 +146,7 @@ pub async fn load_databend_meta() -> Result<(
141146
impl TryStream<Ok = Bytes, Error = anyhow::Error>,
142147
)> {
143148
let cfg = GlobalConfig::instance();
144-
let grpc_client_conf = cfg.meta.to_meta_grpc_client_conf();
149+
let grpc_client_conf = cfg.meta.to_meta_grpc_client_conf(&BUILD_INFO);
145150
debug!("connect meta services on {:?}", grpc_client_conf.endpoints);
146151

147152
let meta_client = MetaGrpcClient::try_new(&grpc_client_conf)?;

0 commit comments

Comments
 (0)