Skip to content

Commit 6dc439b

Browse files
committed
[SPARK-53825] Use Java MessageDigest instead of org.apache.commons.codec
1 parent 5ae1b3a commit 6dc439b

File tree

1 file changed

+17
-2
lines changed

1 file changed

+17
-2
lines changed

spark-submission-worker/src/main/java/org/apache/spark/k8s/operator/SparkAppSubmissionWorker.java

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,14 +19,17 @@
1919

2020
package org.apache.spark.k8s.operator;
2121

22+
import static java.nio.charset.StandardCharsets.UTF_8;
23+
2224
import java.math.BigInteger;
25+
import java.security.MessageDigest;
26+
import java.security.NoSuchAlgorithmException;
2327
import java.util.List;
2428
import java.util.Map;
2529

2630
import scala.Option;
2731

2832
import io.fabric8.kubernetes.client.KubernetesClient;
29-
import org.apache.commons.codec.digest.DigestUtils;
3033
import org.apache.commons.collections4.MapUtils;
3134

3235
import org.apache.spark.SparkConf;
@@ -68,6 +71,17 @@ public class SparkAppSubmissionWorker {
6871
/** Property name for the Spark master URL prefix. */
6972
public static final String MASTER_URL_PREFIX_PROPS_NAME = "spark.master.url.prefix";
7073

74+
/** SHA256 Message Digest when generating hash-based identifier. */
75+
private static final ThreadLocal<MessageDigest> SHA_256_THREAD_LOCAL =
76+
ThreadLocal.withInitial(
77+
() -> {
78+
try {
79+
return MessageDigest.getInstance("SHA-256");
80+
} catch (NoSuchAlgorithmException e) {
81+
throw new UnsupportedOperationException(e);
82+
}
83+
});
84+
7185
/**
7286
* Build secondary resource spec for given app with Spark developer API, with defaults / overrides
7387
* as:
@@ -202,8 +216,9 @@ public static String generateSparkAppId(final SparkApplication app) {
202216
* @return The generated hash-based ID.
203217
*/
204218
public static String generateHashBasedId(final String prefix, final String... identifiers) {
219+
final MessageDigest sha256 = SHA_256_THREAD_LOCAL.get();
205220
String sha256Hash =
206-
new BigInteger(1, DigestUtils.sha256(String.join("/", identifiers)))
221+
new BigInteger(1, sha256.digest(String.join("/", identifiers).getBytes(UTF_8)))
207222
.toString(DEFAULT_ENCODE_BASE);
208223
String truncatedIdentifiersHash =
209224
sha256Hash.substring(0, DEFAULT_HASH_BASED_IDENTIFIER_LENGTH_LIMIT);

0 commit comments

Comments
 (0)