Skip to content

Commit 83bfe01

Browse files
committed
refactor: move jvm from config to build
1 parent c0bd301 commit 83bfe01

8 files changed

Lines changed: 25 additions & 27 deletions

File tree

rust/operator-binary/src/config/mod.rs

Lines changed: 0 additions & 1 deletion
This file was deleted.

rust/operator-binary/src/controller.rs

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1054,13 +1054,9 @@ mod test {
10541054
role_group: tested_rolegroup_name.to_string(),
10551055
};
10561056

1057-
let rg_configmap = build_rolegroup_config_map(
1058-
&cluster,
1059-
&DruidRole::Historical,
1060-
&rolegroup_ref,
1061-
&rg,
1062-
)
1063-
.expect("build rolegroup config map");
1057+
let rg_configmap =
1058+
build_rolegroup_config_map(&cluster, &DruidRole::Historical, &rolegroup_ref, &rg)
1059+
.expect("build rolegroup config map");
10641060

10651061
let druid_segment_cache_property = rg_configmap
10661062
.data

rust/operator-binary/src/controller/build.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,5 @@
22
33
pub mod config_map;
44
pub mod discovery;
5+
pub mod jvm;
56
pub mod properties;

rust/operator-binary/src/controller/build/config_map.rs

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -37,10 +37,6 @@ use crate::{
3737
crd::{DruidRole, build_recommended_labels, build_string_list, v1alpha1},
3838
};
3939

40-
// jvm.config is built by `config::jvm`, not a properties builder, so it is not part
41-
// of `ConfigFileName`.
42-
const JVM_CONFIG: &str = "jvm.config";
43-
4440
// Druid `runtime.properties` config-property keys assembled into the rolegroup ConfigMap here.
4541
const EXTENSIONS_LOADLIST: &str = "druid.extensions.loadList";
4642
const ZOOKEEPER_CONNECTION_STRING: &str = "druid.zk.service.host";
@@ -237,7 +233,7 @@ pub fn build_rolegroup_config_map(
237233

238234
// ----- jvm.config -----
239235
// Precomputed during validation; see `DruidRoleGroupConfig::jvm_config`.
240-
cm_conf_data.insert(JVM_CONFIG.to_string(), rg.jvm_config.clone());
236+
cm_conf_data.insert(ConfigFileName::JvmConfig.to_string(), rg.jvm_config.clone());
241237

242238
// ----- security.properties -----
243239
{

rust/operator-binary/src/config/jvm.rs renamed to rust/operator-binary/src/controller/build/jvm.rs

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,15 +5,12 @@ use stackable_operator::{
55
role_utils::{GenericRoleConfig, JavaCommonConfig, JvmArgumentOverrides, Role},
66
};
77

8+
use super::properties::ConfigFileName;
89
use crate::crd::{
910
DruidConfigOverrides, DruidRole, RW_CONFIG_DIRECTORY, STACKABLE_TRUST_STORE,
1011
STACKABLE_TRUST_STORE_PASSWORD,
1112
};
1213

13-
// File names not exported from crd/mod.rs (see ConfigFileName for the properties-builder files).
14-
const SECURITY_PROPERTIES_FILE: &str = "security.properties";
15-
const LOG4J2_CONFIG_FILE: &str = "log4j2.properties";
16-
1714
#[derive(Snafu, Debug)]
1815
pub enum Error {
1916
#[snafu(display("failed to format memory quantity {value:?} for Java"))]
@@ -55,15 +52,17 @@ pub fn construct_jvm_args<T>(
5552
if let Some(direct_memory) = direct_memory_str {
5653
jvm_args.push(format!("-XX:MaxDirectMemorySize={direct_memory}"));
5754
}
55+
let security_properties_file = ConfigFileName::SecurityProperties;
56+
let log4j2_config_file = ConfigFileName::Log4j2Properties;
5857
jvm_args.extend([
5958
"-XX:+ExitOnOutOfMemoryError".to_owned(),
6059
"-XX:+UseG1GC".to_owned(),
61-
format!("-Djava.security.properties={RW_CONFIG_DIRECTORY}/{SECURITY_PROPERTIES_FILE}"),
60+
format!("-Djava.security.properties={RW_CONFIG_DIRECTORY}/{security_properties_file}"),
6261
"-Duser.timezone=UTC".to_owned(),
6362
"-Dfile.encoding=UTF-8".to_owned(),
6463
"-Djava.io.tmpdir=/tmp".to_owned(),
6564
"-Djava.util.logging.manager=org.apache.logging.log4j.jul.LogManager".to_owned(),
66-
format!("-Dlog4j.configurationFile={RW_CONFIG_DIRECTORY}/{LOG4J2_CONFIG_FILE}"),
65+
format!("-Dlog4j.configurationFile={RW_CONFIG_DIRECTORY}/{log4j2_config_file}"),
6766
format!("-Djavax.net.ssl.trustStore={STACKABLE_TRUST_STORE}"),
6867
format!("-Djavax.net.ssl.trustStorePassword={STACKABLE_TRUST_STORE_PASSWORD}"),
6968
"-Djavax.net.ssl.trustStoreType=pkcs12".to_owned(),

rust/operator-binary/src/controller/build/properties/mod.rs

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,6 @@ pub mod security_properties;
66

77
/// The names of the operator-written Druid config files assembled into the rolegroup ConfigMap.
88
#[derive(Clone, Copy, Debug, strum::Display)]
9-
// The shared `Properties` suffix mirrors the actual on-disk file names; it is not redundant naming.
10-
#[allow(clippy::enum_variant_names)]
119
pub enum ConfigFileName {
1210
#[strum(serialize = "runtime.properties")]
1311
RuntimeProperties,
@@ -17,4 +15,9 @@ pub enum ConfigFileName {
1715
/// but it is still an operator-written file assembled into the rolegroup ConfigMap.
1816
#[strum(serialize = "log4j2.properties")]
1917
Log4j2Properties,
18+
/// `jvm.config` is rendered from JVM argument overrides by [`super::jvm`] rather than a
19+
/// properties builder, but it is still an operator-written file assembled into the rolegroup
20+
/// ConfigMap.
21+
#[strum(serialize = "jvm.config")]
22+
JvmConfig,
2023
}

rust/operator-binary/src/controller/validate.rs

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -29,9 +29,11 @@ use strum::IntoEnumIterator;
2929

3030
use crate::{
3131
authentication::DruidAuthenticationConfig,
32-
config::jvm::construct_jvm_args,
3332
controller::{
34-
build::properties::{ConfigFileName, runtime_properties, security_properties},
33+
build::{
34+
jvm::construct_jvm_args,
35+
properties::{ConfigFileName, runtime_properties, security_properties},
36+
},
3537
dereference::DereferencedObjects,
3638
},
3739
crd::{
@@ -63,7 +65,9 @@ pub enum Error {
6365
},
6466

6567
#[snafu(display("failed to get JVM config"))]
66-
GetJvmConfig { source: crate::config::jvm::Error },
68+
GetJvmConfig {
69+
source: crate::controller::build::jvm::Error,
70+
},
6771

6872
#[snafu(display("failed to derive Druid memory settings from resources"))]
6973
DeriveMemorySettings { source: crate::crd::resource::Error },
@@ -215,8 +219,9 @@ fn key_value_overrides(
215219
let raw = match file {
216220
ConfigFileName::RuntimeProperties => overrides.runtime_properties.overrides.clone(),
217221
ConfigFileName::SecurityProperties => overrides.security_properties.overrides.clone(),
218-
// log4j2.properties is rendered by the logging framework and accepts no key/value overrides.
219-
ConfigFileName::Log4j2Properties => BTreeMap::new(),
222+
// log4j2.properties is rendered by the logging framework, and jvm.config is rendered from
223+
// JVM argument overrides; neither is assembled from key/value overrides here.
224+
ConfigFileName::Log4j2Properties | ConfigFileName::JvmConfig => BTreeMap::new(),
220225
};
221226
raw.into_iter()
222227
.map(|(k, v)| (k, v.unwrap_or_default()))

rust/operator-binary/src/main.rs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,6 @@ use crate::{
3838
};
3939

4040
mod authentication;
41-
mod config;
4241
mod controller;
4342
mod crd;
4443
mod extensions;

0 commit comments

Comments
 (0)