diff --git a/dev-tools/omdb/tests/usage_errors.out b/dev-tools/omdb/tests/usage_errors.out index 56fa624771..de632819d6 100644 --- a/dev-tools/omdb/tests/usage_errors.out +++ b/dev-tools/omdb/tests/usage_errors.out @@ -783,13 +783,16 @@ Usage: omdb oxql [OPTIONS] Options: --log-level log level filter [env: LOG_LEVEL=] [default: warn] --summaries Print summaries of each SQL query run against the database - --elapsed Print the total elapsed query duration --color Color output [default: auto] [possible values: auto, always, never] + --elapsed Print the total elapsed query duration -h, --help Print help Connection Options: --clickhouse-url URL of the ClickHouse server to connect to [env: OMDB_CLICKHOUSE_URL=] + --clickhouse-native-url + URL of the ClickHouse server to connect to for the native protcol [env: + OMDB_CLICKHOUSE_NATIVE_URL=] --dns-server [env: OMDB_DNS_SERVER=] @@ -808,7 +811,7 @@ error: unexpected argument '--summarizes' found tip: a similar argument exists: '--summaries' -Usage: omdb oxql <--clickhouse-url |--summaries|--elapsed> +Usage: omdb oxql <--clickhouse-url |--clickhouse-native-url |--summaries|--elapsed> For more information, try '--help'. ============================================= diff --git a/oximeter/collector/src/lib.rs b/oximeter/collector/src/lib.rs index 96af7d41c8..b2bd191feb 100644 --- a/oximeter/collector/src/lib.rs +++ b/oximeter/collector/src/lib.rs @@ -13,7 +13,6 @@ use dropshot::HttpServer; use dropshot::HttpServerStarter; use internal_dns_types::names::ServiceName; use omicron_common::address::get_internal_dns_server_addresses; -use omicron_common::address::CLICKHOUSE_TCP_PORT; use omicron_common::address::DNS_PORT; use omicron_common::api::internal::nexus::ProducerEndpoint; use omicron_common::backoff; @@ -240,42 +239,42 @@ impl Oximeter { .map(|ip| SocketAddr::new(ip, DNS_PORT)) .collect(); + // Closure to create a single resolver. + let make_resolver = + |maybe_address, srv_name: ServiceName| -> BoxedResolver { + if let Some(address) = maybe_address { + Box::new(SingleHostResolver::new(address)) + } else { + Box::new(DnsResolver::new( + service::Name(srv_name.srv_name()), + bootstrap_dns.clone(), + DnsResolverConfig { + hardcoded_ttl: Some(tokio::time::Duration::MAX), + ..Default::default() + }, + )) + } + }; + // Closure to create _two_ resolvers, one to resolve the ClickHouse HTTP // SRV record, and one for the native TCP record. // // TODO(cleanup): This should be removed if / when we entirely switch to // the native protocol. let make_clickhouse_resolvers = || -> (BoxedResolver, BoxedResolver) { - if let Some(address) = config.db.address { - let http = Box::new(SingleHostResolver::new(address)); - let native_addr = - SocketAddr::new(address.ip(), CLICKHOUSE_TCP_PORT); - let native = Box::new(SingleHostResolver::new(native_addr)); - (http, native) - } else { - let http_service = if config.db.replicated { + let http_resolver = make_resolver( + config.db.address, + if config.db.replicated { ServiceName::ClickhouseServer } else { ServiceName::Clickhouse - }; - let http = Box::new(DnsResolver::new( - service::Name(http_service.srv_name()), - bootstrap_dns.clone(), - DnsResolverConfig { - hardcoded_ttl: Some(tokio::time::Duration::MAX), - ..Default::default() - }, - )); - let native = Box::new(DnsResolver::new( - service::Name(ServiceName::ClickhouseNative.srv_name()), - bootstrap_dns.clone(), - DnsResolverConfig { - hardcoded_ttl: Some(tokio::time::Duration::MAX), - ..Default::default() - }, - )); - (http, native) - } + }, + ); + let native_resolver = make_resolver( + config.db.native_address, + ServiceName::ClickhouseNative, + ); + (http_resolver, native_resolver) }; let make_agent = || async {