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 0b3e3822 [SPARK-60015] Remove JIRA IDs from `migration_guide.md`
0b3e3822 is described below
commit 0b3e3822213cf29984761bcfd84a570b137b27ec
Author: ykisana <[email protected]>
AuthorDate: Tue Oct 6 20:40:04 2026 -0700
[SPARK-60015] Remove JIRA IDs from `migration_guide.md`
### What changes were proposed in this pull request?
This PR removes all JIRA IDs from `docs/migration_guide.md`, i.e. the
trailing `([SPARK-NNNNN](https://issues.apache.org/jira/browse/SPARK-NNNNN),
...)` of each item, including the `SPARK-XXXXX` placeholder. An item whose JIRA
IDs were on their own line now ends on the previous line. The text of the items
is unchanged.
### Why are the changes needed?
As discussed in #943, the migration guide should describe the behavior
changes without JIRA IDs. This also removes the invalid `SPARK-XXXXX` link,
which #943 was going to fix.
### Does this PR introduce _any_ user-facing change?
No behavior change. The migration guide items no longer link to JIRA
issues. All of them are about the unreleased 1.1.0.
### How was this patch tested?
Documentation-only change, so no tests were added. Confirmed that no JIRA
reference remains and that the diff only removes the JIRA IDs:
```bash
$ grep -nE 'SPARK-|issues\.apache\.org' docs/migration_guide.md
$ git diff --word-diff HEAD~1 -- docs/migration_guide.md
```
### Was this patch authored or co-authored using generative AI tooling?
Yes.
Generated-by: Claude Opus 5.5
Closes #944 from ykisana/SPARK-60015.
Authored-by: ykisana <[email protected]>
Signed-off-by: Dongjoon Hyun <[email protected]>
---
docs/migration_guide.md | 51 +++++++++++++++++++++++--------------------------
1 file changed, 24 insertions(+), 27 deletions(-)
diff --git a/docs/migration_guide.md b/docs/migration_guide.md
index 5a72d48f..8a2b0c76 100644
--- a/docs/migration_guide.md
+++ b/docs/migration_guide.md
@@ -32,12 +32,12 @@ affect building the project, CI, tests or examples.
- Since 1.1.0, `spark.apache.org/v1beta1` of the CRDs is deprecated and
scheduled for removal in
2.0.0. Its schema is no longer updated, e.g. it lacks `spec.suspend`. Use
`spark.apache.org/v1`.
-- Since 1.1.0, K8s 1.35 or newer is recommended instead of 1.34
([SPARK-59692](https://issues.apache.org/jira/browse/SPARK-59692)).
+- Since 1.1.0, K8s 1.35 or newer is recommended instead of 1.34.
- Since 1.1.0, the CRDs have `spec.suspend` for `SparkApplication` and
`SparkCluster`, and the
`Suspended` state for `SparkCluster`. Since `helm upgrade` does not update
CRDs, replace them
before upgrading the operator, e.g. with the CRDs of the Helm chart `1.9.0`,
which deploys
1.1.0. Otherwise, the API server rejects or drops `spec.suspend`, and
rejects the `Suspended`
- state ([SPARK-59475](https://issues.apache.org/jira/browse/SPARK-59475),
[SPARK-59750](https://issues.apache.org/jira/browse/SPARK-59750)).
+ state.
```bash
helm repo update
@@ -51,20 +51,19 @@ affect building the project, CI, tests or examples.
chart with the default values of chart `1.8.0`, which lack
`operatorDeployment.networkPolicy.enabled`,
`operatorConfiguration.dynamicConfig.enabled` and
`operatorRbac.kueue` that the chart schema now requires. Use
`--reset-then-reuse-values` of Helm
- 3.14 or newer, or pass the values file again with `-f`
([SPARK-59504](https://issues.apache.org/jira/browse/SPARK-59504),
[SPARK-59519](https://issues.apache.org/jira/browse/SPARK-59519)).
+ 3.14 or newer, or pass the values file again with `-f`.
- Since 1.1.0, `operatorDeployment.networkPolicy.enable` and
`operatorConfiguration.dynamicConfig.enable` are deprecated in favor of
`enabled`, and
`helm install` and `helm upgrade` print a warning for them. They are still
honored until chart
`2.0.0`: a feature is enabled when either key is `true`, so a legacy
`enable: true` must be
- removed to disable it
([SPARK-59504](https://issues.apache.org/jira/browse/SPARK-59504),
[SPARK-59540](https://issues.apache.org/jira/browse/SPARK-59540)).
+ removed to disable it.
- Since 1.1.0, `operatorRbac.configManagement.create: false` takes effect. The
chart then no longer
creates the Role and RoleBinding for the `configMap` source of the dynamic
config, which 1.0
- created regardless. To restore the behavior before 1.1.0, set it to `true`,
the default
- ([SPARK-59537](https://issues.apache.org/jira/browse/SPARK-59537)).
+ created regardless. To restore the behavior before 1.1.0, set it to `true`,
the default.
- Since 1.1.0, the operator ClusterRole and Roles grant only `get`, `create`
and `patch` on
`events`, which are the verbs the operator uses. 1.0 also granted `list`,
`watch`, `update` and
`delete`. If other workloads use the operator ServiceAccount and need them,
grant them with
- another Role or ClusterRole
([SPARK-59587](https://issues.apache.org/jira/browse/SPARK-59587)).
+ another Role or ClusterRole.
- Since 1.1.0, the workload ClusterRole and Roles also grant `get`, `create`
and `delete` on
`deployments` in the `apps` API group, and `get` and `update` on the `scale`
subresource of
`statefulsets` and `deployments`. Spark drivers need them for
@@ -92,7 +91,7 @@ affect building the project, CI, tests or examples.
operator container, since the percentages apply to the node memory
otherwise. The options also
take precedence over `JAVA_TOOL_OPTIONS` and `JDK_JAVA_OPTIONS` in
`operatorContainer.env`, and
cannot contain a space, since the value is split on spaces. To restore the
behavior before
- 1.1.0, set `jvmArgs` to `-Dfile.encoding=UTF8`
([SPARK-58426](https://issues.apache.org/jira/browse/SPARK-58426)).
+ 1.1.0, set `jvmArgs` to `-Dfile.encoding=UTF8`.
- Since 1.1.0, `operatorConfiguration.append` is removed, and the chart no
longer reads
`conf/log4j2.properties` and `conf/spark-operator.properties` in the chart
directory, which it
has never included. A values file which still sets `append` keeps working,
since the key is
@@ -106,14 +105,14 @@ affect building the project, CI, tests or examples.
which is the default, leaves the interval between retries on reconciliation
errors unlimited as
documented. 1.0 capped it at about 15 seconds, so with the other defaults,
the retries now span
about 49 minutes instead of about 3 minutes. To restore the behavior before
1.1.0, set it to
- `15` ([SPARK-59892](https://issues.apache.org/jira/browse/SPARK-59892)).
+ `15`.
- Since 1.1.0, the `_sum` of the Prometheus summaries of the operator
histograms and timers, e.g.
`kubernetes_client_http_response_latency_seconds_sum`, is the sum of all
recorded values. 1.0
exported the mean of roughly the last 5 minutes multiplied by the count
instead, which can
decrease between scrapes, so `rate()` of it and the average derived from it
were wrong. Also, the
`0.5` and `0.999` quantiles of the `operator_sdk_*` histograms are the
median and the 99.9th
percentile instead of the mean and the 99th percentile. A histogram or timer
of a custom metrics
- source has no `_sum` unless it is a `SummingHistogram` or a `SummingTimer`
([SPARK-59935](https://issues.apache.org/jira/browse/SPARK-59935)).
+ source has no `_sum` unless it is a `SummingHistogram` or a `SummingTimer`.
- Since 1.1.0, a Boolean configuration property accepts `true` or `false` in
any case, ignoring
surrounding whitespace, like Apache Spark. Any other value, e.g. `0`, `1`,
`yes` or `off`, is
ignored, and the default value is used. 1.0 ignored a value like `False` or
`TRUE` and used the
@@ -121,7 +120,7 @@ affect building the project, CI, tests or examples.
falls back to the default value for a property of any type, while 1.0 failed
with a
`NullPointerException` for most properties. The operator logs each invalid
value once as a
warning, instead of as an error with a stack trace whenever it reads the
value. Use `true` or
- `false`, which behave the same in both versions
([SPARK-XXXXX](https://issues.apache.org/jira/browse/SPARK-XXXXX)).
+ `false`, which behave the same in both versions.
- Since 1.1.0, the operator publishes Kubernetes `Event` objects about
`SparkApplication` and
`SparkCluster` resources into their namespaces, e.g. whenever a resource
transitions into a new
state, since `spark.kubernetes.operator.events.enabled` is `true` by
default. 1.0 published
@@ -141,27 +140,25 @@ affect building the project, CI, tests or examples.
and retried errors other than `409` and `429`, e.g. `503`, right away. A
request which the API
server never answered, e.g. on a connection reset or a timeout, is retried
with exponential
backoff too, while 1.0 failed the attempt with `SchedulingFailure` at once.
The number of
- attempts is still bounded by
`spark.kubernetes.operator.api.secondaryResourceCreateMaxAttempts`
- ([SPARK-59092](https://issues.apache.org/jira/browse/SPARK-59092),
[SPARK-59694](https://issues.apache.org/jira/browse/SPARK-59694)).
+ attempts is still bounded by
`spark.kubernetes.operator.api.secondaryResourceCreateMaxAttempts`.
- Since 1.1.0, the duration of an attempt which is compared with
`restartCounterResetMillis` is
measured from the first state after `Submitted` or `ScheduledToRestart`,
normally
`DriverRequested`, instead of from `Submitted` or `ScheduledToRestart`. The
restart backoff no
longer counts, so an attempt which reset the restart counters in 1.0 may not
reset them, and the
application may reach `maxRestartAttempts` earlier. To keep a similar
threshold, decrease
- `restartCounterResetMillis` by the restart backoff, e.g.
`restartBackoffMillis`
- ([SPARK-59542](https://issues.apache.org/jira/browse/SPARK-59542)).
+ `restartCounterResetMillis` by the restart backoff, e.g.
`restartBackoffMillis`.
- Since 1.1.0, an application which is configured to restart ends in
`ResourceReleased` instead of
`TerminatedWithoutReleaseResources` after its last attempt, even if its
`resourceRetainPolicy`
retains the resources, since they are released at the end of every attempt.
So
`resourceRetainDurationMillis` no longer applies to it, while
`ttlAfterStopMillis` still deletes
it at the same time as in 1.0. A tool which waits for
`TerminatedWithoutReleaseResources` has to
- wait for `ResourceReleased` instead
([SPARK-59732](https://issues.apache.org/jira/browse/SPARK-59732)).
+ wait for `ResourceReleased` instead.
- Since 1.1.0, an application whose driver pod fails before any of its
containers starts, e.g.
when the pod is evicted or its node is deleted, moves to `Failed`, or
`DriverEvicted` if it is
evicted, right away. 1.0 kept it in `DriverRequested` until
`DriverStartTimedOut`, or forever if
`driverStartTimeoutMillis` was disabled. Since `DriverStartTimedOut` is an
infrastructure failure
while the others are not, `restartPolicy: OnInfrastructureFailure` no longer
restarts such an
- application. Use `OnFailure` to restart it
([SPARK-59729](https://issues.apache.org/jira/browse/SPARK-59729)).
+ application. Use `OnFailure` to restart it.
### SparkCluster
@@ -171,31 +168,31 @@ is recreated, e.g. by suspending and resuming it with
[`spec.suspend`](spark_cus
- Since 1.1.0, the workers start the external shuffle service by default, so
that dynamic
allocation works out of the box. To restore the behavior before 1.1.0, set
- `spark.shuffle.service.enabled` to `false` in `spec.sparkConf`
([SPARK-58835](https://issues.apache.org/jira/browse/SPARK-58835)).
+ `spark.shuffle.service.enabled` to `false` in `spec.sparkConf`.
- Since 1.1.0, the NetworkPolicy of the workers also admits ingress from every
driver pod
(`spark-role: driver`) in the namespace, so that the driver of an
application running on the
cluster can fetch task results larger than `spark.task.maxDirectResultSize`
from the executors.
- 1.0 admitted only the pods of the cluster
([SPARK-58649](https://issues.apache.org/jira/browse/SPARK-58649)).
+ 1.0 admitted only the pods of the cluster.
- Since 1.1.0, the `terminationGracePeriodSeconds` of the master and worker
pod templates is
respected. 1.0 always overwrote it with `0`, which is still the default. To
restore the behavior
- before 1.1.0, remove it from the pod templates
([SPARK-59795](https://issues.apache.org/jira/browse/SPARK-59795)).
+ before 1.1.0, remove it from the pod templates.
- Since 1.1.0, the `dnsConfig` of the worker pod template is kept, and the
domain of the worker
service is appended to its `searches`. 1.0 replaced the whole `dnsConfig`.
To restore the
- behavior before 1.1.0, remove `dnsConfig` from the worker pod template
([SPARK-59797](https://issues.apache.org/jira/browse/SPARK-59797)).
+ behavior before 1.1.0, remove `dnsConfig` from the worker pod template.
- Since 1.1.0, a cluster whose master and worker resources cannot be requested
because of a
failure which may clear on its own, e.g. a timeout, a `429`, a `500` or a
request which the API
server never answered, stays `Submitted` and is retried at the next
reconciliation, instead of
failing with `SchedulingFailure` and then `Failed`. A request which the API
server rejected
- still fails the cluster
([SPARK-59750](https://issues.apache.org/jira/browse/SPARK-59750)).
+ still fails the cluster.
- Since 1.1.0, the message of the `Failed` state after `SchedulingFailure` is
`Cluster failed, since requesting its resources failed. See the preceding
SchedulingFailure state for the cause.`
- instead of `Cannot process cluster status.`
([SPARK-59870](https://issues.apache.org/jira/browse/SPARK-59870)).
+ instead of `Cannot process cluster status.`.
### Docker Image
- Since 1.1.0, the image is based on `alpine:3.24` instead of `alpine:3.23`,
and it does not
install `libstdc++`, which the operator does not use. An image built on top
of it which needs
- the package has to install it
([SPARK-59834](https://issues.apache.org/jira/browse/SPARK-59834),
[SPARK-59836](https://issues.apache.org/jira/browse/SPARK-59836)).
+ the package has to install it.
```dockerfile
FROM apache/spark-kubernetes-operator:1.1.0
@@ -207,10 +204,10 @@ is recreated, e.g. by suspending and resuming it with
[`spec.suspend`](spark_cus
### Java API
- Since 1.1.0, `org.apache.spark.k8s.operator.Constants` is `final` and has a
private constructor,
- so it cannot be extended or instantiated
([SPARK-59679](https://issues.apache.org/jira/browse/SPARK-59679)).
+ so it cannot be extended or instantiated.
- Since 1.1.0, `ApplicationStatus.terminateOrRestart(RestartConfig,
ResourceRetainPolicy, String, boolean)`
is deprecated for removal. It ignores `resourceRetainPolicy`, so it no
longer returns
`TerminatedWithoutReleaseResources`. Use `terminateOrRestart(RestartConfig,
String, boolean)`
- instead ([SPARK-59734](https://issues.apache.org/jira/browse/SPARK-59734)).
+ instead.
- Since 1.1.0, `ClusterStateSummary` has the `Suspended` constant, so an
exhaustive `switch` over
- it needs a case for it
([SPARK-59750](https://issues.apache.org/jira/browse/SPARK-59750)).
+ it needs a case for it.
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]