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 2026/03/30 19:52:59 UTC
(spark-kubernetes-operator) branch main updated: [SPARK-56293] Make `BaseAppDriverObserver` abstract class `sealed`
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 cd8fcf9 [SPARK-56293] Make `BaseAppDriverObserver` abstract class `sealed`
cd8fcf9 is described below
commit cd8fcf945e5f72fde839139999dae743835146c1
Author: Dongjoon Hyun <do...@apache.org>
AuthorDate: Mon Mar 30 12:52:53 2026 -0700
[SPARK-56293] Make `BaseAppDriverObserver` abstract class `sealed`
### What changes were proposed in this pull request?
This PR makes `BaseAppDriverObserver` a `sealed` class with `permits AppDriverReadyObserver, AppDriverRunningObserver, AppDriverStartObserver, AppDriverTimeoutObserver`. All four subclasses are marked `final`.
### Why are the changes needed?
Using a `sealed` class explicitly restricts the permitted implementations, improving type safety and enabling exhaustive pattern matching in `switch` expressions with Java 21.
### Does this PR introduce _any_ user-facing change?
No.
### How was this patch tested?
Pass the CIs with the existing tests.
### Was this patch authored or co-authored using generative AI tooling?
Generated-by: Claude Code (Claude Opus 4.6)
Closes #607 from dongjoon-hyun/SPARK-56293.
Authored-by: Dongjoon Hyun <do...@apache.org>
Signed-off-by: Dongjoon Hyun <do...@apache.org>
---
.../k8s/operator/reconciler/observers/AppDriverReadyObserver.java | 2 +-
.../operator/reconciler/observers/AppDriverRunningObserver.java | 2 +-
.../k8s/operator/reconciler/observers/AppDriverStartObserver.java | 2 +-
.../operator/reconciler/observers/AppDriverTimeoutObserver.java | 2 +-
.../k8s/operator/reconciler/observers/BaseAppDriverObserver.java | 8 ++++++--
5 files changed, 10 insertions(+), 6 deletions(-)
diff --git a/spark-operator/src/main/java/org/apache/spark/k8s/operator/reconciler/observers/AppDriverReadyObserver.java b/spark-operator/src/main/java/org/apache/spark/k8s/operator/reconciler/observers/AppDriverReadyObserver.java
index d587dec..a50f1cb 100644
--- a/spark-operator/src/main/java/org/apache/spark/k8s/operator/reconciler/observers/AppDriverReadyObserver.java
+++ b/spark-operator/src/main/java/org/apache/spark/k8s/operator/reconciler/observers/AppDriverReadyObserver.java
@@ -32,7 +32,7 @@ import org.apache.spark.k8s.operator.status.ApplicationStatus;
import org.apache.spark.k8s.operator.utils.PodUtils;
/** Observes whether driver is ready. */
-public class AppDriverReadyObserver extends BaseAppDriverObserver {
+public final class AppDriverReadyObserver extends BaseAppDriverObserver {
/**
* Observes the driver pod to determine if it is ready.
*
diff --git a/spark-operator/src/main/java/org/apache/spark/k8s/operator/reconciler/observers/AppDriverRunningObserver.java b/spark-operator/src/main/java/org/apache/spark/k8s/operator/reconciler/observers/AppDriverRunningObserver.java
index c5a779e..40d934f 100644
--- a/spark-operator/src/main/java/org/apache/spark/k8s/operator/reconciler/observers/AppDriverRunningObserver.java
+++ b/spark-operator/src/main/java/org/apache/spark/k8s/operator/reconciler/observers/AppDriverRunningObserver.java
@@ -32,7 +32,7 @@ import org.apache.spark.k8s.operator.status.ApplicationStatus;
* scheduled). Note that this means `DriverStarted` and we need to wait `DriverReady` as a next
* step.
*/
-public class AppDriverRunningObserver extends BaseAppDriverObserver {
+public final class AppDriverRunningObserver extends BaseAppDriverObserver {
/**
* Observes the driver pod to determine if it is running.
*
diff --git a/spark-operator/src/main/java/org/apache/spark/k8s/operator/reconciler/observers/AppDriverStartObserver.java b/spark-operator/src/main/java/org/apache/spark/k8s/operator/reconciler/observers/AppDriverStartObserver.java
index 21542a7..4cddaa5 100644
--- a/spark-operator/src/main/java/org/apache/spark/k8s/operator/reconciler/observers/AppDriverStartObserver.java
+++ b/spark-operator/src/main/java/org/apache/spark/k8s/operator/reconciler/observers/AppDriverStartObserver.java
@@ -32,7 +32,7 @@ import org.apache.spark.k8s.operator.status.ApplicationStatus;
import org.apache.spark.k8s.operator.utils.PodUtils;
/** Observes whether the driver pod has started. */
-public class AppDriverStartObserver extends BaseAppDriverObserver {
+public final class AppDriverStartObserver extends BaseAppDriverObserver {
/**
* Observes the driver pod to determine if it has started.
*
diff --git a/spark-operator/src/main/java/org/apache/spark/k8s/operator/reconciler/observers/AppDriverTimeoutObserver.java b/spark-operator/src/main/java/org/apache/spark/k8s/operator/reconciler/observers/AppDriverTimeoutObserver.java
index 3633840..bb1a56f 100644
--- a/spark-operator/src/main/java/org/apache/spark/k8s/operator/reconciler/observers/AppDriverTimeoutObserver.java
+++ b/spark-operator/src/main/java/org/apache/spark/k8s/operator/reconciler/observers/AppDriverTimeoutObserver.java
@@ -32,7 +32,7 @@ import org.apache.spark.k8s.operator.status.ApplicationStatus;
import org.apache.spark.k8s.operator.utils.SparkAppStatusUtils;
/** Observes driver status and time-out as configured in app spec. */
-public class AppDriverTimeoutObserver extends BaseAppDriverObserver {
+public final class AppDriverTimeoutObserver extends BaseAppDriverObserver {
/**
* Observes the driver status and applies timeouts as configured in the application specification.
diff --git a/spark-operator/src/main/java/org/apache/spark/k8s/operator/reconciler/observers/BaseAppDriverObserver.java b/spark-operator/src/main/java/org/apache/spark/k8s/operator/reconciler/observers/BaseAppDriverObserver.java
index d360300..4a4c54b 100644
--- a/spark-operator/src/main/java/org/apache/spark/k8s/operator/reconciler/observers/BaseAppDriverObserver.java
+++ b/spark-operator/src/main/java/org/apache/spark/k8s/operator/reconciler/observers/BaseAppDriverObserver.java
@@ -42,14 +42,18 @@ import org.apache.spark.k8s.operator.utils.PodUtils;
/** Observes driver pod status and update Application status as needed. */
@Slf4j
-public abstract class BaseAppDriverObserver
+public abstract sealed class BaseAppDriverObserver
extends BaseSecondaryResourceObserver<
ApplicationStateSummary,
ApplicationAttemptSummary,
ApplicationState,
ApplicationSpec,
ApplicationStatus,
- Pod> {
+ Pod>
+ permits AppDriverReadyObserver,
+ AppDriverRunningObserver,
+ AppDriverStartObserver,
+ AppDriverTimeoutObserver {
/**
* Check whether the driver pod (and thus the application) has actually terminated This would be
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@spark.apache.org
For additional commands, e-mail: commits-help@spark.apache.org