Skip to content

Commit cbb4a73

Browse files
committed
graph: Replace read_u64/u32_with_fallback w read_parsed_with_fallback
1 parent ef2b3a1 commit cbb4a73

2 files changed

Lines changed: 40 additions & 82 deletions

File tree

graph/src/components/log_store/config.rs

Lines changed: 38 additions & 80 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
use slog::{warn, Logger};
22
use std::env;
3+
use std::str::FromStr;
34

45
/// Read environment variable with fallback to deprecated key
56
///
@@ -52,39 +53,16 @@ pub fn read_env_with_default(
5253
read_env_with_fallback(logger, new_key, old_key).unwrap_or_else(|| default.to_string())
5354
}
5455

55-
/// Parse u64 from environment variable with fallback
56+
/// Parse a value from environment variable with fallback
5657
///
57-
/// Reads an environment variable with fallback support and parses it as a u64.
58+
/// Reads an environment variable with fallback support and parses it using `FromStr`.
5859
/// Returns the default value if the variable is not set or cannot be parsed.
59-
///
60-
/// # Arguments
61-
/// * `logger` - Logger for emitting deprecation warnings
62-
/// * `new_key` - The new environment variable name
63-
/// * `old_key` - The deprecated environment variable name
64-
/// * `default` - Default value to return if parsing fails or neither key is set
65-
///
66-
/// # Returns
67-
/// The parsed u64 value, or the default if parsing fails or neither key is set
68-
pub fn read_u64_with_fallback(logger: &Logger, new_key: &str, old_key: &str, default: u64) -> u64 {
69-
read_env_with_fallback(logger, new_key, old_key)
70-
.and_then(|s| s.parse().ok())
71-
.unwrap_or(default)
72-
}
73-
74-
/// Parse u32 from environment variable with fallback
75-
///
76-
/// Reads an environment variable with fallback support and parses it as a u32.
77-
/// Returns the default value if the variable is not set or cannot be parsed.
78-
///
79-
/// # Arguments
80-
/// * `logger` - Logger for emitting deprecation warnings
81-
/// * `new_key` - The new environment variable name
82-
/// * `old_key` - The deprecated environment variable name
83-
/// * `default` - Default value to return if parsing fails or neither key is set
84-
///
85-
/// # Returns
86-
/// The parsed u32 value, or the default if parsing fails or neither key is set
87-
pub fn read_u32_with_fallback(logger: &Logger, new_key: &str, old_key: &str, default: u32) -> u32 {
60+
pub fn read_parsed_with_fallback<T: FromStr>(
61+
logger: &Logger,
62+
new_key: &str,
63+
old_key: &str,
64+
default: T,
65+
) -> T {
8866
read_env_with_fallback(logger, new_key, old_key)
8967
.and_then(|s| s.parse().ok())
9068
.unwrap_or(default)
@@ -148,69 +126,49 @@ mod tests {
148126
}
149127

150128
#[test]
151-
fn test_read_u64_with_fallback() {
129+
fn test_read_parsed_with_fallback() {
152130
let logger = crate::log::logger(true);
153-
std::env::set_var("NEW_KEY_U64", "12345");
154131

155-
let result = read_u64_with_fallback(&logger, "NEW_KEY_U64", "OLD_KEY_U64", 999);
132+
// Test u64 parsing
133+
std::env::set_var("NEW_KEY_PARSED", "12345");
134+
let result: u64 =
135+
read_parsed_with_fallback(&logger, "NEW_KEY_PARSED", "OLD_KEY_PARSED", 999);
156136
assert_eq!(result, 12345);
137+
std::env::remove_var("NEW_KEY_PARSED");
157138

158-
std::env::remove_var("NEW_KEY_U64");
159-
160-
// Test with old key
161-
std::env::set_var("OLD_KEY_U64", "67890");
162-
let result = read_u64_with_fallback(&logger, "NEW_KEY_U64", "OLD_KEY_U64", 999);
163-
assert_eq!(result, 67890);
164-
165-
std::env::remove_var("OLD_KEY_U64");
166-
167-
// Test with default
168-
let result = read_u64_with_fallback(&logger, "NEW_KEY_U64", "OLD_KEY_U64", 999);
169-
assert_eq!(result, 999);
170-
}
171-
172-
#[test]
173-
fn test_read_u32_with_fallback() {
174-
let logger = crate::log::logger(true);
175-
std::env::set_var("NEW_KEY_U32", "123");
176-
177-
let result = read_u32_with_fallback(&logger, "NEW_KEY_U32", "OLD_KEY_U32", 999);
139+
// Test u32 parsing
140+
std::env::set_var("NEW_KEY_PARSED", "123");
141+
let result: u32 =
142+
read_parsed_with_fallback(&logger, "NEW_KEY_PARSED", "OLD_KEY_PARSED", 999);
178143
assert_eq!(result, 123);
144+
std::env::remove_var("NEW_KEY_PARSED");
179145

180-
std::env::remove_var("NEW_KEY_U32");
181-
182-
// Test with old key
183-
std::env::set_var("OLD_KEY_U32", "456");
184-
let result = read_u32_with_fallback(&logger, "NEW_KEY_U32", "OLD_KEY_U32", 999);
185-
assert_eq!(result, 456);
186-
187-
std::env::remove_var("OLD_KEY_U32");
188-
189-
// Test with default
190-
let result = read_u32_with_fallback(&logger, "NEW_KEY_U32", "OLD_KEY_U32", 999);
191-
assert_eq!(result, 999);
192-
}
193-
194-
#[test]
195-
fn test_invalid_u64_uses_default() {
196-
let logger = crate::log::logger(true);
197-
std::env::set_var("NEW_KEY_INVALID", "not_a_number");
146+
// Test with old key fallback
147+
std::env::set_var("OLD_KEY_PARSED", "67890");
148+
let result: u64 =
149+
read_parsed_with_fallback(&logger, "NEW_KEY_PARSED", "OLD_KEY_PARSED", 999);
150+
assert_eq!(result, 67890);
151+
std::env::remove_var("OLD_KEY_PARSED");
198152

199-
let result = read_u64_with_fallback(&logger, "NEW_KEY_INVALID", "OLD_KEY_INVALID", 999);
153+
// Test with default when neither key is set
154+
let result: u64 =
155+
read_parsed_with_fallback(&logger, "NEW_KEY_PARSED", "OLD_KEY_PARSED", 999);
200156
assert_eq!(result, 999);
201-
202-
std::env::remove_var("NEW_KEY_INVALID");
203157
}
204158

205159
#[test]
206-
fn test_invalid_u32_uses_default() {
160+
fn test_read_parsed_invalid_uses_default() {
207161
let logger = crate::log::logger(true);
208-
std::env::set_var("NEW_KEY_INVALID_U32", "not_a_number");
162+
std::env::set_var("NEW_KEY_INVALID_PARSED", "not_a_number");
209163

210-
let result =
211-
read_u32_with_fallback(&logger, "NEW_KEY_INVALID_U32", "OLD_KEY_INVALID_U32", 999);
164+
let result: u64 = read_parsed_with_fallback(
165+
&logger,
166+
"NEW_KEY_INVALID_PARSED",
167+
"OLD_KEY_INVALID_PARSED",
168+
999,
169+
);
212170
assert_eq!(result, 999);
213171

214-
std::env::remove_var("NEW_KEY_INVALID_U32");
172+
std::env::remove_var("NEW_KEY_INVALID_PARSED");
215173
}
216174
}

graph/src/components/log_store/mod.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -261,7 +261,7 @@ impl LogStoreFactory {
261261

262262
// Default: 10 seconds query timeout
263263
// Configurable via GRAPH_LOG_STORE_ELASTICSEARCH_TIMEOUT environment variable
264-
let timeout_secs = config::read_u64_with_fallback(
264+
let timeout_secs = config::read_parsed_with_fallback(
265265
&logger,
266266
"GRAPH_LOG_STORE_ELASTICSEARCH_TIMEOUT",
267267
"GRAPH_ELASTICSEARCH_TIMEOUT",
@@ -316,7 +316,7 @@ impl LogStoreFactory {
316316

317317
// Default: 0 hours (disabled, keep all logs)
318318
// Configurable via GRAPH_LOG_STORE_FILE_RETENTION_HOURS environment variable
319-
let retention_hours = config::read_u32_with_fallback(
319+
let retention_hours = config::read_parsed_with_fallback(
320320
&logger,
321321
"GRAPH_LOG_STORE_FILE_RETENTION_HOURS",
322322
"GRAPH_LOG_FILE_RETENTION_HOURS",

0 commit comments

Comments
 (0)