This is an automated email from the ASF dual-hosted git repository.
adutra pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/polaris.git
The following commit(s) were added to refs/heads/main by this push:
new 0570e5a4 Reinstate legacy management endpoints (#782)
0570e5a4 is described below
commit 0570e5a4ffaf32508848d188875139a800c30e21
Author: Alexandre Dutra <[email protected]>
AuthorDate: Wed Jan 15 16:38:32 2025 +0100
Reinstate legacy management endpoints (#782)
This PR puts back the legacy endpoints /healthcheck and /metrics on the
management port.
---
.../quarkus/legacy/LegacyManagementEndpoints.java | 35 ++++++++++++++++++++++
.../quarkus/TimedApplicationEventListenerTest.java | 17 ++++++-----
.../quarkus/ratelimiter/RateLimiterFilterTest.java | 2 +-
.../service/quarkus/test/TestMetricsUtil.java | 9 ++++--
4 files changed, 53 insertions(+), 10 deletions(-)
diff --git
a/quarkus/service/src/main/java/org/apache/polaris/service/quarkus/legacy/LegacyManagementEndpoints.java
b/quarkus/service/src/main/java/org/apache/polaris/service/quarkus/legacy/LegacyManagementEndpoints.java
new file mode 100644
index 00000000..10eb8a4e
--- /dev/null
+++
b/quarkus/service/src/main/java/org/apache/polaris/service/quarkus/legacy/LegacyManagementEndpoints.java
@@ -0,0 +1,35 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.polaris.service.quarkus.legacy;
+
+import io.quarkus.vertx.http.ManagementInterface;
+import jakarta.enterprise.context.ApplicationScoped;
+import jakarta.enterprise.event.Observes;
+import org.eclipse.microprofile.config.inject.ConfigProperty;
+
+@ApplicationScoped
+public class LegacyManagementEndpoints {
+
+ public void registerLegacyManagementRoutes(
+ @Observes ManagementInterface mi,
+ @ConfigProperty(name = "quarkus.management.root-path") String rootPath) {
+ mi.router().get("/metrics").handler(rc -> rc.reroute(rootPath +
"/metrics"));
+ mi.router().get("/healthcheck").handler(rc -> rc.reroute(rootPath +
"/health"));
+ }
+}
diff --git
a/quarkus/service/src/test/java/org/apache/polaris/service/quarkus/TimedApplicationEventListenerTest.java
b/quarkus/service/src/test/java/org/apache/polaris/service/quarkus/TimedApplicationEventListenerTest.java
index 0541d489..ac6b833d 100644
---
a/quarkus/service/src/test/java/org/apache/polaris/service/quarkus/TimedApplicationEventListenerTest.java
+++
b/quarkus/service/src/test/java/org/apache/polaris/service/quarkus/TimedApplicationEventListenerTest.java
@@ -40,10 +40,11 @@ import org.hawkular.agent.prometheus.types.Summary;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.BeforeEach;
-import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.TestInfo;
import org.junit.jupiter.api.TestInstance;
import org.junit.jupiter.api.extension.ExtendWith;
+import org.junit.jupiter.params.ParameterizedTest;
+import org.junit.jupiter.params.provider.ValueSource;
@QuarkusTest
@TestInstance(TestInstance.Lifecycle.PER_CLASS)
@@ -80,11 +81,12 @@ public class TimedApplicationEventListenerTest {
registry.clear();
}
- @Test
- public void testMetricsEmittedOnSuccessfulRequest() {
+ @ParameterizedTest
+ @ValueSource(strings = {"%s/metrics", "%s/q/metrics"})
+ public void testMetricsEmittedOnSuccessfulRequest(String endpoint) {
sendSuccessfulRequest();
Map<String, MetricFamily> allMetrics =
- TestMetricsUtil.fetchMetrics(fixture.client,
testEnv.baseManagementUri());
+ TestMetricsUtil.fetchMetrics(fixture.client,
testEnv.baseManagementUri(), endpoint);
assertThat(allMetrics).containsKey(METRIC_NAME);
assertThat(allMetrics.get(METRIC_NAME).getMetrics())
.satisfiesOnlyOnce(
@@ -105,11 +107,12 @@ public class TimedApplicationEventListenerTest {
});
}
- @Test
- public void testMetricsEmittedOnFailedRequest() {
+ @ParameterizedTest
+ @ValueSource(strings = {"%s/metrics", "%s/q/metrics"})
+ public void testMetricsEmittedOnFailedRequest(String endpoint) {
sendFailingRequest();
Map<String, MetricFamily> allMetrics =
- TestMetricsUtil.fetchMetrics(fixture.client,
testEnv.baseManagementUri());
+ TestMetricsUtil.fetchMetrics(fixture.client,
testEnv.baseManagementUri(), endpoint);
assertThat(allMetrics).containsKey(METRIC_NAME);
assertThat(allMetrics.get(METRIC_NAME).getMetrics())
.satisfiesOnlyOnce(
diff --git
a/quarkus/service/src/test/java/org/apache/polaris/service/quarkus/ratelimiter/RateLimiterFilterTest.java
b/quarkus/service/src/test/java/org/apache/polaris/service/quarkus/ratelimiter/RateLimiterFilterTest.java
index 6e39a5d0..8d913b11 100644
---
a/quarkus/service/src/test/java/org/apache/polaris/service/quarkus/ratelimiter/RateLimiterFilterTest.java
+++
b/quarkus/service/src/test/java/org/apache/polaris/service/quarkus/ratelimiter/RateLimiterFilterTest.java
@@ -144,7 +144,7 @@ public class RateLimiterFilterTest {
//
polaris_principal_roles_listPrincipalRoles_seconds_count{application="Polaris",class="org.apache.polaris.service.admin.api.PolarisPrincipalRolesApi",environment="prod",exception="none",method="listPrincipalRoles"}
50.0
Map<String, MetricFamily> metrics =
- TestMetricsUtil.fetchMetrics(fixture.client,
testEnv.baseManagementUri());
+ TestMetricsUtil.fetchMetrics(fixture.client,
testEnv.baseManagementUri(), "%s/q/metrics");
assertThat(metrics)
.isNotEmpty()
diff --git
a/quarkus/service/src/test/java/org/apache/polaris/service/quarkus/test/TestMetricsUtil.java
b/quarkus/service/src/test/java/org/apache/polaris/service/quarkus/test/TestMetricsUtil.java
index be61bb79..f355eead 100644
---
a/quarkus/service/src/test/java/org/apache/polaris/service/quarkus/test/TestMetricsUtil.java
+++
b/quarkus/service/src/test/java/org/apache/polaris/service/quarkus/test/TestMetricsUtil.java
@@ -22,6 +22,7 @@ import static
org.assertj.core.api.AssertionsForClassTypes.assertThat;
import jakarta.ws.rs.client.Client;
import jakarta.ws.rs.core.Response;
+import jakarta.ws.rs.core.Response.Status;
import java.io.ByteArrayInputStream;
import java.io.InputStream;
import java.net.URI;
@@ -35,9 +36,13 @@ import
org.hawkular.agent.prometheus.walkers.CollectorPrometheusMetricsWalker;
/** Utils for working with metrics in tests */
public class TestMetricsUtil {
- public static Map<String, MetricFamily> fetchMetrics(Client client, URI
baseManagementUri) {
+ public static Map<String, MetricFamily> fetchMetrics(
+ Client client, URI baseManagementUri, String endpointPath) {
Response response =
- client.target(String.format("%s/q/metrics",
baseManagementUri)).request().get();
+ client.target(String.format(endpointPath,
baseManagementUri)).request().get();
+ if (response.getStatus() == Status.MOVED_PERMANENTLY.getStatusCode()) {
+ response = client.target(response.getLocation()).request().get();
+ }
assertThat(response).returns(Response.Status.OK.getStatusCode(),
Response::getStatus);
String body = response.readEntity(String.class);
InputStream inputStream = new
ByteArrayInputStream(body.getBytes(StandardCharsets.UTF_8));