fix(agent): support oracle 10g java runtime

This commit is contained in:
t8y2 2026-05-22 17:23:26 +08:00
parent f5633cff67
commit 1fab46bca3
1 changed files with 22 additions and 7 deletions

View File

@ -1,5 +1,6 @@
use std::collections::VecDeque;
use std::io::{BufRead, BufReader, BufWriter, Write};
use std::path::Path;
use std::process::{Child, ChildStderr, ChildStdin, ChildStdout, Command, Stdio};
use std::sync::{Arc, Mutex};
use std::time::Duration;
@ -629,7 +630,7 @@ pub fn mongo_document_id_params(database: &str, collection: &str, id: &str) -> V
}
fn agent_java_args(jar_path: &str) -> Vec<String> {
[
let mut args = vec![
"-Dfile.encoding=UTF-8",
"-Dsun.stdout.encoding=UTF-8",
"-Dsun.stderr.encoding=UTF-8",
@ -639,15 +640,22 @@ fn agent_java_args(jar_path: &str) -> Vec<String> {
"-DsocksProxyHost=",
"-Doracle.net.disableOob=true",
"-Doracle.jdbc.javaNetNio=false",
"--add-opens=java.sql/java.sql=ALL-UNNAMED",
"-XX:TieredStopAtLevel=1",
"-XX:+UseSerialGC",
"-jar",
jar_path,
]
.into_iter()
.map(str::to_string)
.collect()
.collect::<Vec<_>>();
if !agent_jar_path_matches_key(jar_path, "oracle-10g") {
args.push("--add-opens=java.sql/java.sql=ALL-UNNAMED".to_string());
}
args.extend(["-XX:TieredStopAtLevel=1", "-XX:+UseSerialGC", "-jar", jar_path].into_iter().map(str::to_string));
args
}
fn agent_jar_path_matches_key(jar_path: &str, key: &str) -> bool {
Path::new(jar_path).components().any(|component| component.as_os_str().to_string_lossy() == key)
}
fn remove_agent_proxy_env(command: &mut Command) {
@ -776,6 +784,13 @@ mod tests {
assert!(args.iter().any(|arg| arg == "--add-opens=java.sql/java.sql=ALL-UNNAMED"));
}
#[test]
fn agent_java_args_skip_module_flags_for_oracle_10g_profile() {
let args = agent_java_args("/tmp/dbx/drivers/oracle-10g/agent.jar");
assert!(!args.iter().any(|arg| arg == "--add-opens=java.sql/java.sql=ALL-UNNAMED"));
}
#[test]
fn agent_java_args_disable_ambient_proxy_settings() {
let args = agent_java_args("/tmp/dbx-agent-opengauss.jar");