diff --git a/plugin/trino-prometheus/pom.xml b/plugin/trino-prometheus/pom.xml index 8da3b51e90a1..324362b645ff 100644 --- a/plugin/trino-prometheus/pom.xml +++ b/plugin/trino-prometheus/pom.xml @@ -32,6 +32,11 @@ configuration + + io.airlift + http-client + + io.airlift json @@ -92,38 +97,16 @@ validation-api + - org.apache.httpcomponents - httpclient - 4.5.13 - - - commons-logging - commons-logging - - - - - - org.apache.httpcomponents - httpcore - 4.4.13 - - - commons-logging - commons-logging - - - org.slf4j - jcl-over-slf4j - - + io.airlift + log-manager + runtime - io.airlift - log-manager + node runtime @@ -201,19 +184,33 @@ io.airlift - node + testing test - io.airlift - testing + javax.servlet + javax.servlet-api test - javax.servlet - javax.servlet-api + org.apache.httpcomponents + httpclient + 4.5.13 + test + + + commons-logging + commons-logging + + + + + + org.apache.httpcomponents + httpcore + 4.4.13 test diff --git a/plugin/trino-prometheus/src/main/java/io/trino/plugin/prometheus/PrometheusClient.java b/plugin/trino-prometheus/src/main/java/io/trino/plugin/prometheus/PrometheusClient.java index 5b72dd9fa107..0c004a141653 100644 --- a/plugin/trino-prometheus/src/main/java/io/trino/plugin/prometheus/PrometheusClient.java +++ b/plugin/trino-prometheus/src/main/java/io/trino/plugin/prometheus/PrometheusClient.java @@ -16,6 +16,7 @@ import com.google.common.base.Suppliers; import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableSet; +import io.airlift.http.client.HttpUriBuilder; import io.airlift.json.JsonCodec; import io.trino.spi.TrinoException; import io.trino.spi.type.DoubleType; @@ -33,7 +34,6 @@ import java.io.File; import java.io.IOException; import java.net.URI; -import java.net.URISyntaxException; import java.time.Duration; import java.util.List; import java.util.Map; @@ -84,13 +84,8 @@ public PrometheusClient(PrometheusConnectorConfig config, JsonCodec getTableNames(String schema) diff --git a/plugin/trino-prometheus/src/main/java/io/trino/plugin/prometheus/PrometheusSplitManager.java b/plugin/trino-prometheus/src/main/java/io/trino/plugin/prometheus/PrometheusSplitManager.java index ad77c030d66c..168ebd6a2686 100644 --- a/plugin/trino-prometheus/src/main/java/io/trino/plugin/prometheus/PrometheusSplitManager.java +++ b/plugin/trino-prometheus/src/main/java/io/trino/plugin/prometheus/PrometheusSplitManager.java @@ -15,6 +15,7 @@ import com.google.common.collect.ImmutableMap; import com.google.common.collect.Lists; +import io.airlift.http.client.HttpUriBuilder; import io.airlift.units.Duration; import io.trino.spi.TrinoException; import io.trino.spi.connector.ColumnHandle; @@ -30,9 +31,6 @@ import io.trino.spi.predicate.Domain; import io.trino.spi.predicate.Range; import io.trino.spi.predicate.TupleDomain; -import org.apache.http.NameValuePair; -import org.apache.http.client.utils.URIBuilder; -import org.apache.http.message.BasicNameValuePair; import javax.inject.Inject; @@ -41,7 +39,6 @@ import java.net.URI; import java.net.URISyntaxException; import java.time.Instant; -import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.Optional; @@ -110,17 +107,14 @@ public ConnectorSplitSource getSplits( return new FixedSplitSource(splits); } - // URIBuilder handles URI encode + // HttpUriBuilder handles URI encode private static URI buildQuery(URI baseURI, String time, String metricName, Duration queryChunkSizeDuration) throws URISyntaxException { - List nameValuePairs = new ArrayList<>(2); - nameValuePairs.add(new BasicNameValuePair("query", metricName + "[" + queryChunkSizeDuration.roundTo(queryChunkSizeDuration.getUnit()) + - Duration.timeUnitToString(queryChunkSizeDuration.getUnit()) + "]")); - nameValuePairs.add(new BasicNameValuePair("time", time)); - return new URIBuilder(baseURI.toString()) - .setPath("api/v1/query") - .setParameters(nameValuePairs) + return HttpUriBuilder.uriBuilderFrom(baseURI) + .appendPath("api/v1/query") + .addParameter("query", metricName + "[" + queryChunkSizeDuration.roundTo(queryChunkSizeDuration.getUnit()) + Duration.timeUnitToString(queryChunkSizeDuration.getUnit()) + "]") + .addParameter("time", time) .build(); } diff --git a/plugin/trino-prometheus/src/test/java/io/trino/plugin/prometheus/TestPrometheusSplit.java b/plugin/trino-prometheus/src/test/java/io/trino/plugin/prometheus/TestPrometheusSplit.java index 1294ebaeb6e5..7ca7333d25c5 100644 --- a/plugin/trino-prometheus/src/test/java/io/trino/plugin/prometheus/TestPrometheusSplit.java +++ b/plugin/trino-prometheus/src/test/java/io/trino/plugin/prometheus/TestPrometheusSplit.java @@ -134,7 +134,7 @@ public void testQueryWithTableNameNeedingURLEncodeInSplits() config.getQueryChunkSizeDuration().toMillis() - OFFSET_MILLIS * 20); assertEquals(queryInSplit, - new URI("http://doesnotmatter:9090/api/v1/query?query=up+now[" + getQueryChunkSizeDurationAsPrometheusCompatibleDurationString(config) + "]" + "&time=" + + new URI("http://doesnotmatter:9090/api/v1/query?query=up%20now[" + getQueryChunkSizeDurationAsPrometheusCompatibleDurationString(config) + "]" + "&time=" + timeShouldBe).getQuery()); }