Skip to content

Commit 56bb7b0

Browse files
authored
feat: http debug api for config (#733)
* feat: http api for server config * fix clippy warning * Serialize config * display config in toml format
1 parent c59d9c3 commit 56bb7b0

File tree

26 files changed

+192
-92
lines changed

26 files changed

+192
-92
lines changed

Cargo.lock

+63-10
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

+2
Original file line numberDiff line numberDiff line change
@@ -114,6 +114,7 @@ system_catalog = { path = "system_catalog" }
114114
table_engine = { path = "table_engine" }
115115
table_kv = { path = "components/table_kv" }
116116
tempfile = "3.1.0"
117+
toml = "0.7"
117118
tracing_util = { path = "components/tracing_util" }
118119
trace_metric = { path = "components/trace_metric" }
119120
trace_metric_derive = { path = "components/trace_metric_derive" }
@@ -143,6 +144,7 @@ server = { workspace = true }
143144
signal-hook = "0.3"
144145
sort = "0.8.5"
145146
table_engine = { workspace = true }
147+
toml = { workspace = true }
146148
tracing_util = { workspace = true }
147149

148150
[build-dependencies]

analytic_engine/src/compaction/mod.rs

+4-4
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
use std::{collections::HashMap, str::FromStr, sync::Arc};
66

77
use common_util::config::{ReadableSize, TimeUnit};
8-
use serde::Deserialize;
8+
use serde::{Deserialize, Serialize};
99
use snafu::{ensure, Backtrace, GenerateBacktrace, ResultExt, Snafu};
1010
use tokio::sync::oneshot;
1111

@@ -57,15 +57,15 @@ pub enum Error {
5757
InvalidOption { error: String, backtrace: Backtrace },
5858
}
5959

60-
#[derive(Debug, Clone, Copy, Deserialize, PartialEq, Default)]
60+
#[derive(Debug, Clone, Copy, Deserialize, Default, PartialEq, Serialize)]
6161
pub enum CompactionStrategy {
6262
#[default]
6363
Default,
6464
TimeWindow(TimeWindowCompactionOptions),
6565
SizeTiered(SizeTieredCompactionOptions),
6666
}
6767

68-
#[derive(Debug, Clone, Copy, Deserialize, PartialEq)]
68+
#[derive(Debug, Clone, Copy, Deserialize, PartialEq, Serialize)]
6969
pub struct SizeTieredCompactionOptions {
7070
pub bucket_low: f32,
7171
pub bucket_high: f32,
@@ -75,7 +75,7 @@ pub struct SizeTieredCompactionOptions {
7575
pub max_input_sstable_size: ReadableSize,
7676
}
7777

78-
#[derive(Debug, Clone, Copy, Deserialize, PartialEq)]
78+
#[derive(Debug, Clone, Copy, Deserialize, PartialEq, Serialize)]
7979
pub struct TimeWindowCompactionOptions {
8080
pub size_tiered: SizeTieredCompactionOptions,
8181
// TODO(boyan) In fact right now we only supports TimeUnit::Milliseconds resolution.

analytic_engine/src/compaction/scheduler.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ use common_util::{
2121
time::DurationExt,
2222
};
2323
use log::{debug, error, info, warn};
24-
use serde::Deserialize;
24+
use serde::{Deserialize, Serialize};
2525
use snafu::{ResultExt, Snafu};
2626
use table_engine::table::TableId;
2727
use tokio::{
@@ -52,7 +52,7 @@ pub enum Error {
5252

5353
define_result!(Error);
5454

55-
#[derive(Debug, Clone, Deserialize)]
55+
#[derive(Debug, Clone, Deserialize, Serialize)]
5656
#[serde(default)]
5757
pub struct SchedulerConfig {
5858
pub schedule_channel_len: usize,

analytic_engine/src/lib.rs

+5-5
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ use wal::{
3636
pub use crate::{compaction::scheduler::SchedulerConfig, table_options::TableOptions};
3737

3838
/// Config of analytic engine
39-
#[derive(Debug, Clone, Deserialize)]
39+
#[derive(Debug, Clone, Deserialize, Serialize)]
4040
#[serde(default)]
4141
pub struct Config {
4242
/// Storage options of the engine
@@ -115,7 +115,7 @@ impl Default for Config {
115115
}
116116

117117
/// Config of wal based on obkv
118-
#[derive(Debug, Default, Clone, Deserialize)]
118+
#[derive(Debug, Default, Clone, Deserialize, Serialize)]
119119
#[serde(default)]
120120
pub struct ObkvWalConfig {
121121
/// Obkv client config
@@ -222,7 +222,7 @@ impl From<WalNamespaceConfig> for NamespaceConfig {
222222
}
223223

224224
/// Config of wal based on obkv
225-
#[derive(Debug, Default, Clone, Deserialize)]
225+
#[derive(Debug, Default, Clone, Deserialize, Serialize)]
226226
#[serde(default)]
227227
pub struct KafkaWalConfig {
228228
/// Kafka client config
@@ -235,7 +235,7 @@ pub struct KafkaWalConfig {
235235
}
236236

237237
/// Config for wal based on RocksDB
238-
#[derive(Debug, Clone, Deserialize)]
238+
#[derive(Debug, Clone, Deserialize, Serialize)]
239239
#[serde(default)]
240240
pub struct RocksDBConfig {
241241
/// Data directory used by RocksDB.
@@ -250,7 +250,7 @@ impl Default for RocksDBConfig {
250250
}
251251
}
252252
/// Options for wal storage backend
253-
#[derive(Debug, Clone, Deserialize)]
253+
#[derive(Debug, Clone, Deserialize, Serialize)]
254254
#[serde(tag = "type")]
255255
pub enum WalStorageConfig {
256256
RocksDB(Box<RocksDBConfig>),

analytic_engine/src/manifest/details.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ use log::{debug, info, warn};
2222
use object_store::{ObjectStoreRef, Path};
2323
use parquet::data_type::AsBytes;
2424
use prost::Message;
25-
use serde::Deserialize;
25+
use serde::{Deserialize, Serialize};
2626
use snafu::{Backtrace, ResultExt, Snafu};
2727
use table_engine::table::TableId;
2828
use tokio::sync::Mutex;
@@ -157,7 +157,7 @@ impl MetaUpdateLogEntryIterator for MetaUpdateReaderImpl {
157157
}
158158

159159
/// Options for manifest
160-
#[derive(Debug, Clone, Deserialize)]
160+
#[derive(Debug, Clone, Deserialize, Serialize)]
161161
pub struct Options {
162162
/// Steps to do snapshot
163163
pub snapshot_every_n_updates: usize,

analytic_engine/src/storage_options.rs

+5-5
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,9 @@
33
use std::time::Duration;
44

55
use common_util::config::{ReadableDuration, ReadableSize};
6-
use serde::Deserialize;
6+
use serde::{Deserialize, Serialize};
77

8-
#[derive(Debug, Clone, Deserialize)]
8+
#[derive(Debug, Clone, Deserialize, Serialize)]
99
#[serde(default)]
1010
/// Options for storage backend
1111
pub struct StorageOptions {
@@ -37,19 +37,19 @@ impl Default for StorageOptions {
3737
}
3838
}
3939

40-
#[derive(Debug, Clone, Deserialize)]
40+
#[derive(Debug, Clone, Deserialize, Serialize)]
4141
#[serde(tag = "type")]
4242
pub enum ObjectStoreOptions {
4343
Local(LocalOptions),
4444
Aliyun(AliyunOptions),
4545
}
4646

47-
#[derive(Debug, Clone, Deserialize)]
47+
#[derive(Debug, Clone, Deserialize, Serialize)]
4848
pub struct LocalOptions {
4949
pub data_dir: String,
5050
}
5151

52-
#[derive(Debug, Clone, Deserialize)]
52+
#[derive(Debug, Clone, Deserialize, Serialize)]
5353
pub struct AliyunOptions {
5454
pub key_id: String,
5555
pub key_secret: String,

analytic_engine/src/table_options.rs

+6-6
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ use common_util::{
1212
time::DurationExt,
1313
};
1414
use datafusion::parquet::basic::Compression as ParquetCompression;
15-
use serde::Deserialize;
15+
use serde::{Deserialize, Serialize};
1616
use snafu::{Backtrace, GenerateBacktrace, OptionExt, ResultExt, Snafu};
1717
use table_engine::OPTION_KEY_ENABLE_TTL;
1818

@@ -125,7 +125,7 @@ pub enum Error {
125125

126126
define_result!(Error);
127127

128-
#[derive(Debug, Clone, Deserialize, PartialEq, Eq)]
128+
#[derive(Debug, Clone, Deserialize, Eq, PartialEq, Serialize)]
129129
pub enum UpdateMode {
130130
Overwrite,
131131
Append,
@@ -152,7 +152,7 @@ impl ToString for UpdateMode {
152152
}
153153
}
154154

155-
#[derive(Debug, Clone, Copy, Deserialize, PartialEq, Eq)]
155+
#[derive(Debug, Clone, Copy, Deserialize, Eq, PartialEq, Serialize)]
156156
pub enum Compression {
157157
Uncompressed,
158158
Lz4,
@@ -221,7 +221,7 @@ impl From<Compression> for ParquetCompression {
221221
}
222222

223223
/// A hint for building sst.
224-
#[derive(Clone, Copy, Debug, Default, Deserialize, PartialEq, Eq)]
224+
#[derive(Clone, Copy, Debug, Default, Deserialize, PartialEq, Eq, Serialize)]
225225
pub enum StorageFormatHint {
226226
/// Which storage format is chosen to encode one sst depends on the data
227227
/// pattern.
@@ -231,7 +231,7 @@ pub enum StorageFormatHint {
231231
}
232232

233233
/// StorageFormat specify how records are saved in persistent storage
234-
#[derive(Debug, Clone, Copy, Deserialize, PartialEq, Eq)]
234+
#[derive(Debug, Clone, Copy, Deserialize, PartialEq, Eq, Serialize)]
235235
pub enum StorageFormat {
236236
/// Traditional columnar format, every column is saved in one exact one
237237
/// column, for example:
@@ -375,7 +375,7 @@ impl Default for StorageFormat {
375375
}
376376

377377
/// Options for a table.
378-
#[derive(Debug, Clone, Deserialize, PartialEq)]
378+
#[derive(Debug, Clone, Deserialize, PartialEq, Serialize)]
379379
#[serde(default)]
380380
pub struct TableOptions {
381381
// The following options are immutable once table was created.

cluster/src/config.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
use common_types::schema::TIMESTAMP_COLUMN;
44
use meta_client::meta_impl::MetaClientConfig;
5-
use serde::Deserialize;
5+
use serde::{Deserialize, Serialize};
66
use table_engine::ANALYTIC_ENGINE_TYPE;
77

88
#[derive(Debug, Clone, Deserialize)]
@@ -22,7 +22,7 @@ impl Default for SchemaConfig {
2222
}
2323
}
2424

25-
#[derive(Default, Clone, Deserialize, Debug)]
25+
#[derive(Default, Clone, Deserialize, Debug, Serialize)]
2626
#[serde(default)]
2727
pub struct ClusterConfig {
2828
pub cmd_channel_buffer_size: usize,

common_util/Cargo.toml

+1-1
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ serde_json = { workspace = true }
3333
snafu = { workspace = true }
3434
time = "0.1"
3535
tokio = { workspace = true }
36-
toml = "0.5"
36+
toml = { workspace = true }
3737

3838
[dev-dependencies.slog-global]
3939
version = "0.1"

0 commit comments

Comments
 (0)