You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@spark.apache.org by sa...@apache.org on 2026/08/13 05:09:16 UTC
(spark) branch master updated: [SPARK-58722][CORE] Bump OIDC credential propagation version annotations from `4.3.0` to `4.4.0`
This is an automated email from the ASF dual-hosted git repository.
sarutak pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/spark.git
The following commit(s) were added to refs/heads/master by this push:
new 0b5896ba1e8e [SPARK-58722][CORE] Bump OIDC credential propagation version annotations from `4.3.0` to `4.4.0`
0b5896ba1e8e is described below
commit 0b5896ba1e8e24d7709a1eab0724180dbedc29b0
Author: Kousuke Saruta <sa...@apache.org>
AuthorDate: Thu Aug 13 14:09:04 2026 +0900
[SPARK-58722][CORE] Bump OIDC credential propagation version annotations from `4.3.0` to `4.4.0`
### What changes were proposed in this pull request?
This PR updates `since` and `.version()` annotations for all OIDC credential propagation APIs and configuration keys from `4.3.0` to `4.4.0` to reflect the actual release version.
The OIDC credential propagation feature was originally developed targeting `4.3.0` but will ship in `4.4.0`. This PR corrects the version annotations accordingly.
**Affected files:**
- `TokenIngestor.java`
- `CredentialProvider.java`
- `FileTokenIngestor.java`
- `CredentialProviderLoader.java`
- `CredentialResolutionException.java`
- `UserCredentials.java`
- `ServiceCredential.java`
- `UserContext.java`
- `config/package.scala` (`spark.security.oidc.*` keys)
**Note:** `AwsStsCredentialProvider.java` (`connector/credential-aws`) also contains `since 4.3.0` but is excluded from this PR because it will be corrected to `4.4.0` as part of #57655
### Why are the changes needed?
Version annotations should reflect the actual release in which APIs and configurations become available, not the originally planned version during development.
### Does this PR introduce _any_ user-facing change?
No.
### How was this patch tested?
GA.
### Was this patch authored or co-authored using generative AI tooling?
Kiro CLI / Claude
Closes #57947 from sarutak/oidc-propagation/version-bump-4.4.0.
Authored-by: Kousuke Saruta <sa...@apache.org>
Signed-off-by: Kousuke Saruta <sa...@apache.org>
---
.../java/org/apache/spark/security/CredentialProvider.java | 12 ++++++------
.../org/apache/spark/security/CredentialProviderLoader.java | 2 +-
.../apache/spark/security/CredentialResolutionException.java | 2 +-
.../java/org/apache/spark/security/FileTokenIngestor.java | 2 +-
.../java/org/apache/spark/security/ServiceCredential.java | 2 +-
.../main/java/org/apache/spark/security/TokenIngestor.java | 2 +-
.../src/main/java/org/apache/spark/security/UserContext.java | 2 +-
.../main/java/org/apache/spark/security/UserCredentials.java | 2 +-
.../scala/org/apache/spark/internal/config/package.scala | 8 ++++----
9 files changed, 17 insertions(+), 17 deletions(-)
diff --git a/core/src/main/java/org/apache/spark/security/CredentialProvider.java b/core/src/main/java/org/apache/spark/security/CredentialProvider.java
index aae7f0f430a9..a306b427535b 100644
--- a/core/src/main/java/org/apache/spark/security/CredentialProvider.java
+++ b/core/src/main/java/org/apache/spark/security/CredentialProvider.java
@@ -36,7 +36,7 @@ import org.apache.spark.annotation.DeveloperApi;
* Implementations must be thread-safe: {@code resolve()} may be called concurrently from
* multiple threads after {@code init()} completes.
*
- * @since 4.3.0
+ * @since 4.4.0
*/
@DeveloperApi
public interface CredentialProvider extends AutoCloseable {
@@ -58,7 +58,7 @@ public interface CredentialProvider extends AutoCloseable {
*
* @param conf Spark configuration properties scoped to {@code spark.security.oidc.*}
* keys (must not be null)
- * @since 4.3.0
+ * @since 4.4.0
*/
void init(Map<String, String> conf);
@@ -69,7 +69,7 @@ public interface CredentialProvider extends AutoCloseable {
* set must be non-empty and stable across calls.
*
* @return a non-empty set of supported scheme names
- * @since 4.3.0
+ * @since 4.4.0
*/
Set<String> supportedSchemes();
@@ -85,7 +85,7 @@ public interface CredentialProvider extends AutoCloseable {
* @param target the target URI for which credentials are requested (must not be null)
* @return a short-lived service credential for the target
* @throws CredentialResolutionException if the credential exchange fails
- * @since 4.3.0
+ * @since 4.4.0
*/
ServiceCredential resolve(UserContext user, URI target) throws CredentialResolutionException;
@@ -96,7 +96,7 @@ public interface CredentialProvider extends AutoCloseable {
* The default is 15 minutes.
*
* @return the suggested credential TTL (never null)
- * @since 4.3.0
+ * @since 4.4.0
*/
default Duration suggestedTtl() {
return Duration.ofMinutes(15);
@@ -119,7 +119,7 @@ public interface CredentialProvider extends AutoCloseable {
* clause in their override (e.g., declare {@code close()} with no {@code throws} or
* with a more specific exception type).
*
- * @since 4.3.0
+ * @since 4.4.0
*/
@Override
default void close() throws Exception {}
diff --git a/core/src/main/java/org/apache/spark/security/CredentialProviderLoader.java b/core/src/main/java/org/apache/spark/security/CredentialProviderLoader.java
index 84aaaca0a196..50d2a24546e9 100644
--- a/core/src/main/java/org/apache/spark/security/CredentialProviderLoader.java
+++ b/core/src/main/java/org/apache/spark/security/CredentialProviderLoader.java
@@ -59,7 +59,7 @@ import org.apache.spark.annotation.Private;
* {@link CredentialProvider} contract, implementations must be thread-safe, so a returned
* instance may be used concurrently.
*
- * @since 4.3.0
+ * @since 4.4.0
*/
@Private
public final class CredentialProviderLoader {
diff --git a/core/src/main/java/org/apache/spark/security/CredentialResolutionException.java b/core/src/main/java/org/apache/spark/security/CredentialResolutionException.java
index eb5aaf237298..86db39835168 100644
--- a/core/src/main/java/org/apache/spark/security/CredentialResolutionException.java
+++ b/core/src/main/java/org/apache/spark/security/CredentialResolutionException.java
@@ -26,7 +26,7 @@ import org.apache.spark.annotation.DeveloperApi;
* This is a checked exception to ensure callers handle credential resolution failures
* explicitly (e.g., retry, fail the job, or fall back to another mechanism).
*
- * @since 4.3.0
+ * @since 4.4.0
*/
@DeveloperApi
public class CredentialResolutionException extends Exception {
diff --git a/core/src/main/java/org/apache/spark/security/FileTokenIngestor.java b/core/src/main/java/org/apache/spark/security/FileTokenIngestor.java
index b51dcc7f0b43..c43fd5dc601c 100644
--- a/core/src/main/java/org/apache/spark/security/FileTokenIngestor.java
+++ b/core/src/main/java/org/apache/spark/security/FileTokenIngestor.java
@@ -50,7 +50,7 @@ import org.apache.spark.internal.SparkLoggerFactory;
* returns empty rather than throwing</li>
* </ul>
*
- * @since 4.3.0
+ * @since 4.4.0
*/
@Private
public class FileTokenIngestor implements TokenIngestor {
diff --git a/core/src/main/java/org/apache/spark/security/ServiceCredential.java b/core/src/main/java/org/apache/spark/security/ServiceCredential.java
index b0502cf922a4..4e988821a398 100644
--- a/core/src/main/java/org/apache/spark/security/ServiceCredential.java
+++ b/core/src/main/java/org/apache/spark/security/ServiceCredential.java
@@ -36,7 +36,7 @@ import org.apache.spark.annotation.DeveloperApi;
* <p>
* This class is immutable and {@link Serializable}.
*
- * @since 4.3.0
+ * @since 4.4.0
*/
@DeveloperApi
public final class ServiceCredential implements Serializable {
diff --git a/core/src/main/java/org/apache/spark/security/TokenIngestor.java b/core/src/main/java/org/apache/spark/security/TokenIngestor.java
index 0c25fc59d69e..fd15b5f73438 100644
--- a/core/src/main/java/org/apache/spark/security/TokenIngestor.java
+++ b/core/src/main/java/org/apache/spark/security/TokenIngestor.java
@@ -29,7 +29,7 @@ import org.apache.spark.annotation.DeveloperApi;
* configuration is passed at construction time.
* Implementations must be thread-safe because {@link #load()} may be called concurrently.
*
- * @since 4.3.0
+ * @since 4.4.0
*/
@DeveloperApi
public interface TokenIngestor {
diff --git a/core/src/main/java/org/apache/spark/security/UserContext.java b/core/src/main/java/org/apache/spark/security/UserContext.java
index 9d9f372dad34..a063c6c2eae1 100644
--- a/core/src/main/java/org/apache/spark/security/UserContext.java
+++ b/core/src/main/java/org/apache/spark/security/UserContext.java
@@ -31,7 +31,7 @@ import org.apache.spark.annotation.DeveloperApi;
* <b>not</b> {@link java.io.Serializable} and must never be transmitted to executors.
* The {@code rawToken} field is always redacted in {@link #toString()}.
*
- * @since 4.3.0
+ * @since 4.4.0
*/
@DeveloperApi
public final class UserContext {
diff --git a/core/src/main/java/org/apache/spark/security/UserCredentials.java b/core/src/main/java/org/apache/spark/security/UserCredentials.java
index 3f5e1d54b923..3d4427651a0e 100644
--- a/core/src/main/java/org/apache/spark/security/UserCredentials.java
+++ b/core/src/main/java/org/apache/spark/security/UserCredentials.java
@@ -38,7 +38,7 @@ import org.apache.spark.annotation.DeveloperApi;
* This class is transmitted to executors and does <b>not</b> contain any reference
* to {@link UserContext} or raw identity tokens. It is immutable and {@link Serializable}.
*
- * @since 4.3.0
+ * @since 4.4.0
*/
@DeveloperApi
public final class UserCredentials implements Serializable {
diff --git a/core/src/main/scala/org/apache/spark/internal/config/package.scala b/core/src/main/scala/org/apache/spark/internal/config/package.scala
index 87a2da236a91..86a63ffc1c2e 100644
--- a/core/src/main/scala/org/apache/spark/internal/config/package.scala
+++ b/core/src/main/scala/org/apache/spark/internal/config/package.scala
@@ -1710,7 +1710,7 @@ package object config {
.doc("Whether to enable OIDC credential propagation. When enabled, the driver reads an " +
"identity token from a file, exchanges it for short-lived service credentials via " +
"CredentialProvider implementations, and propagates those credentials to executors.")
- .version("4.3.0")
+ .version("4.4.0")
.withBindingPolicy(ConfigBindingPolicy.NOT_APPLICABLE)
.booleanConf
.createWithDefault(false)
@@ -1720,7 +1720,7 @@ package object config {
.doc("Path to the OIDC identity token file on the driver. Required when " +
"spark.security.oidc.enabled is true. The file should contain a JWT token " +
"(e.g., a Kubernetes projected service account token).")
- .version("4.3.0")
+ .version("4.4.0")
.withBindingPolicy(ConfigBindingPolicy.NOT_APPLICABLE)
.stringConf
.createOptional
@@ -1729,7 +1729,7 @@ package object config {
ConfigBuilder("spark.security.oidc.renewal.safetyMargin")
.doc("How long before credential expiry to trigger renewal. Credentials are refreshed " +
"at min(identity token expiry, service credential expiry) minus this margin.")
- .version("4.3.0")
+ .version("4.4.0")
.withBindingPolicy(ConfigBindingPolicy.NOT_APPLICABLE)
.timeConf(TimeUnit.MILLISECONDS)
.checkValue(_ > 0, "The safety margin must be a positive time value.")
@@ -1739,7 +1739,7 @@ package object config {
ConfigBuilder("spark.security.oidc.renewal.minInterval")
.doc("Minimum interval between credential renewal attempts. This prevents tight renewal " +
"loops when credentials have very short TTLs or when failures cause rapid retries.")
- .version("4.3.0")
+ .version("4.4.0")
.withBindingPolicy(ConfigBindingPolicy.NOT_APPLICABLE)
.timeConf(TimeUnit.MILLISECONDS)
.checkValue(_ > 0, "The minimum renewal interval must be a positive time value.")
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@spark.apache.org
For additional commands, e-mail: commits-help@spark.apache.org