You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@spark.apache.org by do...@apache.org on 2024/08/19 21:24:31 UTC
(spark-kubernetes-operator) branch main updated: [SPARK-49309] Use `HTTP_*` constant variables instead of magic numbers
This is an automated email from the ASF dual-hosted git repository.
dongjoon pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/spark-kubernetes-operator.git
The following commit(s) were added to refs/heads/main by this push:
new f4dd102 [SPARK-49309] Use `HTTP_*` constant variables instead of magic numbers
f4dd102 is described below
commit f4dd102d91181bf171905d6a53e190d9e347876b
Author: Dongjoon Hyun <do...@apache.org>
AuthorDate: Mon Aug 19 14:24:23 2024 -0700
[SPARK-49309] Use `HTTP_*` constant variables instead of magic numbers
### What changes were proposed in this pull request?
This PR aims to use `java.net.HttpURLConnection.HTTP_*` constant variables instead of magic numbers in the code.
### Why are the changes needed?
Variable names provide semantics.
```
- if (e.getCode() == 409) {
+ if (e.getCode() == HTTP_CONFLICT) {
```
### Does this PR introduce _any_ user-facing change?
No.
### How was this patch tested?
Pass the CIs.
### Was this patch authored or co-authored using generative AI tooling?
No.
Closes #71 from dongjoon-hyun/SPARK-49309.
Authored-by: Dongjoon Hyun <do...@apache.org>
Signed-off-by: Dongjoon Hyun <do...@apache.org>
---
.../spark/k8s/operator/metrics/PrometheusPullModelHandler.java | 3 ++-
.../java/org/apache/spark/k8s/operator/probe/HealthProbe.java | 6 ++++--
.../java/org/apache/spark/k8s/operator/probe/ReadinessProbe.java | 8 +++++---
.../main/java/org/apache/spark/k8s/operator/utils/ProbeUtil.java | 9 +++++++++
.../org/apache/spark/k8s/operator/utils/ReconcilerUtils.java | 9 +++++----
.../org/apache/spark/k8s/operator/utils/SparkExceptionUtils.java | 4 +++-
.../org/apache/spark/k8s/operator/probe/ProbeServiceTest.java | 5 +++--
.../org/apache/spark/k8s/operator/probe/ReadinessProbeTest.java | 3 ++-
8 files changed, 33 insertions(+), 14 deletions(-)
diff --git a/spark-operator/src/main/java/org/apache/spark/k8s/operator/metrics/PrometheusPullModelHandler.java b/spark-operator/src/main/java/org/apache/spark/k8s/operator/metrics/PrometheusPullModelHandler.java
index 73bb49b..be7b44a 100644
--- a/spark-operator/src/main/java/org/apache/spark/k8s/operator/metrics/PrometheusPullModelHandler.java
+++ b/spark-operator/src/main/java/org/apache/spark/k8s/operator/metrics/PrometheusPullModelHandler.java
@@ -19,6 +19,7 @@
package org.apache.spark.k8s.operator.metrics;
+import static java.net.HttpURLConnection.HTTP_OK;
import static org.apache.spark.k8s.operator.utils.ProbeUtil.sendMessage;
import java.io.IOException;
@@ -57,7 +58,7 @@ public class PrometheusPullModelHandler extends PrometheusServlet implements Htt
public void handle(HttpExchange exchange) throws IOException {
HttpServletRequest httpServletRequest = null;
String value = getMetricsSnapshot(httpServletRequest);
- sendMessage(exchange, 200, String.join("\n", filterNonEmptyRecords(value)));
+ sendMessage(exchange, HTTP_OK, String.join("\n", filterNonEmptyRecords(value)));
}
protected List<String> filterNonEmptyRecords(String metricsSnapshot) {
diff --git a/spark-operator/src/main/java/org/apache/spark/k8s/operator/probe/HealthProbe.java b/spark-operator/src/main/java/org/apache/spark/k8s/operator/probe/HealthProbe.java
index 6e03e0e..739791a 100644
--- a/spark-operator/src/main/java/org/apache/spark/k8s/operator/probe/HealthProbe.java
+++ b/spark-operator/src/main/java/org/apache/spark/k8s/operator/probe/HealthProbe.java
@@ -19,6 +19,8 @@
package org.apache.spark.k8s.operator.probe;
+import static java.net.HttpURLConnection.HTTP_INTERNAL_ERROR;
+import static java.net.HttpURLConnection.HTTP_OK;
import static org.apache.spark.k8s.operator.utils.ProbeUtil.areOperatorsStarted;
import static org.apache.spark.k8s.operator.utils.ProbeUtil.sendMessage;
@@ -76,9 +78,9 @@ public class HealthProbe implements HttpHandler {
@Override
public void handle(HttpExchange exchange) throws IOException {
if (isHealthy()) {
- sendMessage(exchange, 200, "healthy");
+ sendMessage(exchange, HTTP_OK, "healthy");
} else {
- sendMessage(exchange, 500, "unhealthy");
+ sendMessage(exchange, HTTP_INTERNAL_ERROR, "unhealthy");
}
}
diff --git a/spark-operator/src/main/java/org/apache/spark/k8s/operator/probe/ReadinessProbe.java b/spark-operator/src/main/java/org/apache/spark/k8s/operator/probe/ReadinessProbe.java
index be08c36..19c0cdf 100644
--- a/spark-operator/src/main/java/org/apache/spark/k8s/operator/probe/ReadinessProbe.java
+++ b/spark-operator/src/main/java/org/apache/spark/k8s/operator/probe/ReadinessProbe.java
@@ -19,6 +19,7 @@
package org.apache.spark.k8s.operator.probe;
+import static java.net.HttpURLConnection.*;
import static org.apache.spark.k8s.operator.utils.ProbeUtil.areOperatorsStarted;
import static org.apache.spark.k8s.operator.utils.ProbeUtil.sendMessage;
@@ -43,14 +44,15 @@ public class ReadinessProbe implements HttpHandler {
public void handle(HttpExchange httpExchange) throws IOException {
Optional<Boolean> operatorsAreReady = areOperatorsStarted(operators);
if (operatorsAreReady.isEmpty() || !operatorsAreReady.get()) {
- sendMessage(httpExchange, 400, "spark operators are not ready yet");
+ sendMessage(httpExchange, HTTP_BAD_REQUEST, "spark operators are not ready yet");
}
if (!passRbacCheck()) {
- sendMessage(httpExchange, 403, "required rbac test failed, operators are not ready");
+ sendMessage(
+ httpExchange, HTTP_FORBIDDEN, "required rbac test failed, operators are not ready");
}
- sendMessage(httpExchange, 200, "started");
+ sendMessage(httpExchange, HTTP_OK, "started");
}
public boolean passRbacCheck() {
diff --git a/spark-operator/src/main/java/org/apache/spark/k8s/operator/utils/ProbeUtil.java b/spark-operator/src/main/java/org/apache/spark/k8s/operator/utils/ProbeUtil.java
index 3778f8a..5d0592e 100644
--- a/spark-operator/src/main/java/org/apache/spark/k8s/operator/utils/ProbeUtil.java
+++ b/spark-operator/src/main/java/org/apache/spark/k8s/operator/utils/ProbeUtil.java
@@ -30,11 +30,20 @@ import io.javaoperatorsdk.operator.Operator;
import io.javaoperatorsdk.operator.RuntimeInfo;
import lombok.extern.slf4j.Slf4j;
+/** A utility class to provide common functionalities for probe services. */
@Slf4j
public final class ProbeUtil {
private ProbeUtil() {}
+ /**
+ * Send an HTTP response message with the given response header HTTP status code and message.
+ *
+ * @param httpExchange The handler for this HTTP response.
+ * @param code A response header HTTP status code defined in java.net.HttpURLConnection.HTTP_*
+ * @param message A message to send as a body
+ * @throws IOException Failed to send a response.
+ */
public static void sendMessage(HttpExchange httpExchange, int code, String message)
throws IOException {
try (OutputStream outputStream = httpExchange.getResponseBody()) {
diff --git a/spark-operator/src/main/java/org/apache/spark/k8s/operator/utils/ReconcilerUtils.java b/spark-operator/src/main/java/org/apache/spark/k8s/operator/utils/ReconcilerUtils.java
index 39075fb..2d7bd28 100644
--- a/spark-operator/src/main/java/org/apache/spark/k8s/operator/utils/ReconcilerUtils.java
+++ b/spark-operator/src/main/java/org/apache/spark/k8s/operator/utils/ReconcilerUtils.java
@@ -19,6 +19,8 @@
package org.apache.spark.k8s.operator.utils;
+import static java.net.HttpURLConnection.HTTP_CONFLICT;
+import static java.net.HttpURLConnection.HTTP_NOT_FOUND;
import static org.apache.spark.k8s.operator.config.SparkOperatorConf.API_SECONDARY_RESOURCE_CREATE_MAX_ATTEMPTS;
import static org.apache.spark.k8s.operator.config.SparkOperatorConf.RECONCILER_FOREGROUND_REQUEST_TIMEOUT_SECONDS;
import static org.apache.spark.k8s.operator.utils.ModelUtils.buildOwnerReferenceTo;
@@ -89,8 +91,7 @@ public final class ReconcilerUtils {
attemptCount,
maxAttempts);
}
- // retry only on 409 Conflict
- if (e.getCode() == 409) {
+ if (e.getCode() == HTTP_CONFLICT) {
if (isConflictForExistingResource(e)) {
current = getResource(client, resource);
if (current.isPresent()) {
@@ -130,7 +131,7 @@ public final class ReconcilerUtils {
try {
resource = client.resource(desired).get();
} catch (KubernetesClientException e) {
- if (e.getCode() == 404) {
+ if (e.getCode() == HTTP_NOT_FOUND) {
return Optional.empty();
}
}
@@ -150,7 +151,7 @@ public final class ReconcilerUtils {
.delete();
}
} catch (KubernetesClientException e) {
- if (e.getCode() == 404) {
+ if (e.getCode() == HTTP_NOT_FOUND) {
log.info("Pod to delete does not exist, proceeding...");
} else {
throw e;
diff --git a/spark-operator/src/main/java/org/apache/spark/k8s/operator/utils/SparkExceptionUtils.java b/spark-operator/src/main/java/org/apache/spark/k8s/operator/utils/SparkExceptionUtils.java
index ff7b28a..8221b4b 100644
--- a/spark-operator/src/main/java/org/apache/spark/k8s/operator/utils/SparkExceptionUtils.java
+++ b/spark-operator/src/main/java/org/apache/spark/k8s/operator/utils/SparkExceptionUtils.java
@@ -19,6 +19,8 @@
package org.apache.spark.k8s.operator.utils;
+import static java.net.HttpURLConnection.HTTP_CONFLICT;
+
import io.fabric8.kubernetes.client.KubernetesClientException;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.exception.ExceptionUtils;
@@ -29,7 +31,7 @@ public final class SparkExceptionUtils {
public static boolean isConflictForExistingResource(KubernetesClientException e) {
return e != null
- && e.getCode() == 409
+ && e.getCode() == HTTP_CONFLICT
&& e.getStatus() != null
&& StringUtils.isNotEmpty(e.getStatus().toString())
&& e.getStatus().toString().toLowerCase().contains("alreadyexists");
diff --git a/spark-operator/src/test/java/org/apache/spark/k8s/operator/probe/ProbeServiceTest.java b/spark-operator/src/test/java/org/apache/spark/k8s/operator/probe/ProbeServiceTest.java
index aeb3aa0..1e1bdd6 100644
--- a/spark-operator/src/test/java/org/apache/spark/k8s/operator/probe/ProbeServiceTest.java
+++ b/spark-operator/src/test/java/org/apache/spark/k8s/operator/probe/ProbeServiceTest.java
@@ -19,6 +19,7 @@
package org.apache.spark.k8s.operator.probe;
+import static java.net.HttpURLConnection.HTTP_OK;
import static org.apache.spark.k8s.operator.config.SparkOperatorConf.OPERATOR_PROBE_PORT;
import static org.apache.spark.k8s.operator.probe.ProbeService.HEALTHZ;
import static org.apache.spark.k8s.operator.probe.ProbeService.READYZ;
@@ -121,7 +122,7 @@ class ProbeServiceTest {
HttpURLConnection connection = (HttpURLConnection) u.openConnection();
connection.setConnectTimeout(100000);
connection.connect();
- assertEquals(connection.getResponseCode(), 200, "Health Probe should return 200");
+ assertEquals(connection.getResponseCode(), HTTP_OK, "Health Probe should return HTTP_OK");
}
private void hitStartedUpEndpoint() throws IOException, MalformedURLException {
@@ -129,6 +130,6 @@ class ProbeServiceTest {
HttpURLConnection connection = (HttpURLConnection) u.openConnection();
connection.setConnectTimeout(100000);
connection.connect();
- assertEquals(connection.getResponseCode(), 200, "operators are not ready");
+ assertEquals(connection.getResponseCode(), HTTP_OK, "operators are not ready");
}
}
diff --git a/spark-operator/src/test/java/org/apache/spark/k8s/operator/probe/ReadinessProbeTest.java b/spark-operator/src/test/java/org/apache/spark/k8s/operator/probe/ReadinessProbeTest.java
index 0bd4a89..e8a0850 100644
--- a/spark-operator/src/test/java/org/apache/spark/k8s/operator/probe/ReadinessProbeTest.java
+++ b/spark-operator/src/test/java/org/apache/spark/k8s/operator/probe/ReadinessProbeTest.java
@@ -19,6 +19,7 @@
package org.apache.spark.k8s.operator.probe;
+import static java.net.HttpURLConnection.HTTP_OK;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
@@ -63,7 +64,7 @@ class ReadinessProbeTest {
ReadinessProbe readinessProbe = new ReadinessProbe(Arrays.asList(operator));
try (var mockedStatic = Mockito.mockStatic(ProbeUtil.class)) {
readinessProbe.handle(httpExchange);
- mockedStatic.verify(() -> ProbeUtil.sendMessage(httpExchange, 200, "started"));
+ mockedStatic.verify(() -> ProbeUtil.sendMessage(httpExchange, HTTP_OK, "started"));
}
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@spark.apache.org
For additional commands, e-mail: commits-help@spark.apache.org