This is an automated email from the ASF dual-hosted git repository.

dongjoon-hyun 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 6a06de45 [SPARK-60017] Fix `Workload` access revocation and 
`Suspended` downgrade notes
6a06de45 is described below

commit 6a06de45cb868847c80660758a5940e2a26b412e
Author: Dongjoon Hyun <[email protected]>
AuthorDate: Tue Oct 6 21:28:53 2026 -0700

    [SPARK-60017] Fix `Workload` access revocation and `Suspended` downgrade 
notes
    
    ### What changes were proposed in this pull request?
    
    This PR aims to fix two inaccurate notes in 
`docs/spark_custom_resources.md`.
    
    - With the Kueue integration enabled but no access to `Workload`s, a 
suspended `SparkCluster` and any stopping `SparkApplication` are held until the 
access is restored or the integration is disabled, not until the `Workload` is 
gone.
    - Resuming a `SparkCluster` before downgrading the operator is enough only 
when `spark.kubernetes.operator.reconciler.trimStateTransitionHistoryEnabled` 
drops the `Suspended` state from its history.
    
    ### Why are the changes needed?
    
    - The operator keeps deleting the `Workload` by name, which is denied 
without the access even after the `Workload` is gone.
    - An operator version without the `Suspended` state cannot read a 
`SparkCluster` which has it in its state transition history.
    
    ### Does this PR introduce _any_ user-facing change?
    
    No. This is a documentation-only change for features which are not released 
yet in 
[1.0.0](https://github.com/apache/spark-kubernetes-operator/releases/tag/1.0.0) 
(2026-07-23).
    
    ### How was this patch tested?
    
    Manual review.
    
    ### Was this patch authored or co-authored using generative AI tooling?
    
    Generated-by: Claude Opus 5.5
    
    Closes #945 from dongjoon-hyun/SPARK-60017.
    
    Authored-by: Dongjoon Hyun <[email protected]>
    Signed-off-by: Dongjoon Hyun <[email protected]>
---
 docs/spark_custom_resources.md | 12 ++++++++----
 1 file changed, 8 insertions(+), 4 deletions(-)

diff --git a/docs/spark_custom_resources.md b/docs/spark_custom_resources.md
index 673973b8..ef0911ea 100644
--- a/docs/spark_custom_resources.md
+++ b/docs/spark_custom_resources.md
@@ -584,8 +584,11 @@ spec:
   a lost node, no longer holds the Kueue `Workload`, so that it does not hold 
the quota forever. The
   cluster still stays `Suspended` until such a pod is gone, since it keeps the 
name of the master or
   worker to create, and the message of its `Suspended` state names such pods.
-* An operator version without the `Suspended` state cannot read a 
`SparkCluster` which is
-  `Suspended`, so resume or delete such clusters before downgrading the 
operator.
+* An operator version without the `Suspended` state cannot read a 
`SparkCluster` whose status
+  has it, even after the cluster is resumed. A resumed `SparkCluster` keeps it 
unless
+  `spark.kubernetes.operator.reconciler.trimStateTransitionHistoryEnabled` 
drops the history of
+  its previous run. So delete such clusters, or resume the suspended ones with 
that setting
+  enabled, before downgrading the operator.
 * Deleting a suspended resource works as usual.
 * This is the building block for external job queueing systems. See 
[Kueue](#kueue) for the
   built-in integration.
@@ -718,8 +721,9 @@ spec:
   by disabling `operatorRbac.kueue.enabled`, the operator no longer deletes 
them, and a `Workload`
   left behind keeps its quota until its owner is deleted. While the 
integration stays enabled
   without the access, a suspended `SparkCluster` does not resume, and a 
stopping
-  `SparkApplication` with a `Workload` neither terminates nor restarts, until 
its `Workload` is
-  gone or the access is restored. Before disabling either, let the queued
+  `SparkApplication` neither terminates nor restarts, until the access is 
restored or the
+  integration is disabled, since the operator keeps deleting their `Workload`s 
by name, which is
+  denied even once a `Workload` is gone. Before disabling either, let the 
queued
   `SparkApplication`s finish or suspend those which have not started yet, and 
suspend the queued
   `SparkCluster`s, so that the operator releases their `Workload`s itself. 
Then list the remaining
   ones with `kubectl get workloads -A -l spark.operator/spark-app-name` and


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to