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 26111cf [SPARK-54677] Upgrade `pmd` to 7.19.0 and apply
`EnumComparison` rules
26111cf is described below
commit 26111cfb60c428234558928b8c76f896ffffce14
Author: Dongjoon Hyun <[email protected]>
AuthorDate: Wed Dec 10 15:14:47 2025 -0800
[SPARK-54677] Upgrade `pmd` to 7.19.0 and apply `EnumComparison` rules
### What changes were proposed in this pull request?
This PR aims to upgrade `pmd` to 7.19.0 and apply `EnumComparison` rules.
### Why are the changes needed?
To prevent a bug like
- #426
### Does this PR introduce _any_ user-facing change?
No behavior change.
### How was this patch tested?
Pass the CIs.
### Was this patch authored or co-authored using generative AI tooling?
No.
Closes #428 from dongjoon-hyun/SPARK-54677.
Authored-by: Dongjoon Hyun <[email protected]>
Signed-off-by: Dongjoon Hyun <[email protected]>
---
config/pmd/ruleset.xml | 4 ++--
gradle/libs.versions.toml | 2 +-
.../k8s/operator/status/ApplicationStateSummary.java | 4 ++--
.../spark/k8s/operator/status/ApplicationStatus.java | 8 ++++----
.../spark/k8s/operator/status/ClusterStateSummary.java | 8 ++++----
.../reconciler/observers/BaseAppDriverObserver.java | 4 ++--
.../reconciler/reconcilesteps/AppCleanUpStep.java | 15 +++++++--------
.../reconciler/reconcilesteps/AppRunningStep.java | 2 +-
.../reconciler/reconcilesteps/AppValidateStep.java | 2 +-
.../org/apache/spark/k8s/operator/utils/PodUtils.java | 2 +-
10 files changed, 25 insertions(+), 26 deletions(-)
diff --git a/config/pmd/ruleset.xml b/config/pmd/ruleset.xml
index f071c83..40cb52d 100644
--- a/config/pmd/ruleset.xml
+++ b/config/pmd/ruleset.xml
@@ -45,7 +45,7 @@
</rule>
<rule ref="category/java/design.xml">
<exclude name="AbstractClassWithoutAnyMethod" />
- <exclude name="AvoidCatchingGenericException" />
+ <exclude name="AvoidDeeplyNestedIfStmts" />
<exclude name="CognitiveComplexity" />
<exclude name="CouplingBetweenObjects" />
<exclude name="CyclomaticComplexity" />
@@ -60,7 +60,7 @@
</rule>
<rule ref="category/java/errorprone.xml">
<exclude name="AssignmentInOperand" />
- <exclude name="AvoidCatchingThrowable" />
+ <exclude name="AvoidCatchingGenericException" />
<exclude name="AvoidDuplicateLiterals" />
<exclude name="AvoidFieldNameMatchingMethodName" />
<exclude name="AvoidLiteralsInIfCondition" />
diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml
index 73d31f3..9e7ce8f 100644
--- a/gradle/libs.versions.toml
+++ b/gradle/libs.versions.toml
@@ -30,7 +30,7 @@ mockito = "5.21.0"
# Build Analysis
checkstyle = "10.23.1"
-pmd = "7.17.0"
+pmd = "7.19.0"
spotbugs-tool = "4.9.6"
spotbugs-plugin = "6.4.2"
spotless-plugin = "8.1.0"
diff --git
a/spark-operator-api/src/main/java/org/apache/spark/k8s/operator/status/ApplicationStateSummary.java
b/spark-operator-api/src/main/java/org/apache/spark/k8s/operator/status/ApplicationStateSummary.java
index 77a7700..bd5c2b9 100644
---
a/spark-operator-api/src/main/java/org/apache/spark/k8s/operator/status/ApplicationStateSummary.java
+++
b/spark-operator-api/src/main/java/org/apache/spark/k8s/operator/status/ApplicationStateSummary.java
@@ -117,7 +117,7 @@ public enum ApplicationStateSummary implements
BaseStateSummary {
* @return True if the state is Submitted or ScheduledToRestart, false
otherwise.
*/
public boolean isInitializing() {
- return Submitted.equals(this) || ScheduledToRestart.equals(this);
+ return this == Submitted || this == ScheduledToRestart;
}
/**
@@ -139,7 +139,7 @@ public enum ApplicationStateSummary implements
BaseStateSummary {
* TerminatedWithoutReleaseResources), false otherwise.
*/
public boolean isTerminated() {
- return ResourceReleased.equals(this) ||
TerminatedWithoutReleaseResources.equals(this);
+ return this == ResourceReleased || this ==
TerminatedWithoutReleaseResources;
}
/**
diff --git
a/spark-operator-api/src/main/java/org/apache/spark/k8s/operator/status/ApplicationStatus.java
b/spark-operator-api/src/main/java/org/apache/spark/k8s/operator/status/ApplicationStatus.java
index 52a5e8c..17901cc 100644
---
a/spark-operator-api/src/main/java/org/apache/spark/k8s/operator/status/ApplicationStatus.java
+++
b/spark-operator-api/src/main/java/org/apache/spark/k8s/operator/status/ApplicationStatus.java
@@ -107,8 +107,8 @@ public class ApplicationStatus
// no restart configured
ApplicationState state =
new ApplicationState(ApplicationStateSummary.ResourceReleased,
stateMessageOverride);
- if (ResourceRetainPolicy.Always.equals(resourceRetainPolicy)
- || ResourceRetainPolicy.OnFailure.equals(resourceRetainPolicy)
+ if (ResourceRetainPolicy.Always == resourceRetainPolicy
+ || ResourceRetainPolicy.OnFailure == resourceRetainPolicy
&& currentState.currentStateSummary.isFailure()) {
state = terminateAppWithoutReleaseResource(stateMessageOverride);
}
@@ -139,8 +139,8 @@ public class ApplicationStatus
// max number of restart attempt reached
ApplicationState state =
new ApplicationState(ApplicationStateSummary.ResourceReleased,
stateMessage);
- if (ResourceRetainPolicy.Always.equals(resourceRetainPolicy)
- || ResourceRetainPolicy.OnFailure.equals(resourceRetainPolicy)
+ if (ResourceRetainPolicy.Always == resourceRetainPolicy
+ || ResourceRetainPolicy.OnFailure == resourceRetainPolicy
&& currentState.currentStateSummary.isFailure()) {
state = terminateAppWithoutReleaseResource(stateMessage);
}
diff --git
a/spark-operator-api/src/main/java/org/apache/spark/k8s/operator/status/ClusterStateSummary.java
b/spark-operator-api/src/main/java/org/apache/spark/k8s/operator/status/ClusterStateSummary.java
index 074a21a..c614624 100644
---
a/spark-operator-api/src/main/java/org/apache/spark/k8s/operator/status/ClusterStateSummary.java
+++
b/spark-operator-api/src/main/java/org/apache/spark/k8s/operator/status/ClusterStateSummary.java
@@ -41,7 +41,7 @@ public enum ClusterStateSummary implements BaseStateSummary {
* @return True if the state is Submitted, false otherwise.
*/
public boolean isInitializing() {
- return Submitted.equals(this);
+ return this == Submitted;
}
/**
@@ -60,7 +60,7 @@ public enum ClusterStateSummary implements BaseStateSummary {
* otherwise.
*/
public boolean isTerminated() {
- return ResourceReleased.equals(this);
+ return this == ResourceReleased;
}
/**
@@ -70,7 +70,7 @@ public enum ClusterStateSummary implements BaseStateSummary {
*/
@Override
public boolean isFailure() {
- return SchedulingFailure.equals(this) || Failed.equals(this);
+ return this == SchedulingFailure || this == Failed;
}
/**
@@ -80,6 +80,6 @@ public enum ClusterStateSummary implements BaseStateSummary {
*/
@Override
public boolean isInfrastructureFailure() {
- return SchedulingFailure.equals(this);
+ return this == SchedulingFailure;
}
}
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 5bb909c..d360300 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
@@ -86,7 +86,7 @@ public abstract class BaseAppDriverObserver
return Optional.empty();
}
- if (PodPhase.FAILED.equals(PodPhase.getPhase(driverPod))) {
+ if (PodPhase.FAILED == PodPhase.getPhase(driverPod)) {
ApplicationState state = new ApplicationState(Failed,
DRIVER_FAILED_MESSAGE);
if ("Evicted".equalsIgnoreCase(status.getReason())) {
state = new ApplicationState(ApplicationStateSummary.DriverEvicted,
DRIVER_FAILED_MESSAGE);
@@ -95,7 +95,7 @@ public abstract class BaseAppDriverObserver
return Optional.of(state);
}
- if (PodPhase.SUCCEEDED.equals(PodPhase.getPhase(driverPod))) {
+ if (PodPhase.SUCCEEDED == PodPhase.getPhase(driverPod)) {
ApplicationState state;
if (driverReady) {
state = new ApplicationState(Succeeded, DRIVER_COMPLETED_MESSAGE);
diff --git
a/spark-operator/src/main/java/org/apache/spark/k8s/operator/reconciler/reconcilesteps/AppCleanUpStep.java
b/spark-operator/src/main/java/org/apache/spark/k8s/operator/reconciler/reconcilesteps/AppCleanUpStep.java
index 9cfc0ed..4bfa76b 100644
---
a/spark-operator/src/main/java/org/apache/spark/k8s/operator/reconciler/reconcilesteps/AppCleanUpStep.java
+++
b/spark-operator/src/main/java/org/apache/spark/k8s/operator/reconciler/reconcilesteps/AppCleanUpStep.java
@@ -112,7 +112,7 @@ public class AppCleanUpStep extends AppReconcileStep {
if (retainReleaseResourceForPolicyAndState(
tolerations.getResourceRetainPolicy(), currentState)) {
if (tolerations.getRestartConfig() != null
- &&
!RestartPolicy.Never.equals(tolerations.getRestartConfig().getRestartPolicy()))
{
+ && RestartPolicy.Never !=
tolerations.getRestartConfig().getRestartPolicy()) {
stateUpdateMessage =
"Application is configured to restart, resources created in
current "
+ "attempt would be force released.";
@@ -182,8 +182,8 @@ public class AppCleanUpStep extends AppReconcileStep {
SparkOperatorConf.TRIM_ATTEMPT_STATE_TRANSITION_HISTORY.getValue());
long requeueAfterMillis =
tolerations.getApplicationTimeoutConfig().getTerminationRequeuePeriodMillis();
- if (ApplicationStateSummary.ScheduledToRestart.equals(
- updatedStatus.getCurrentState().getCurrentStateSummary())) {
+ if (ApplicationStateSummary.ScheduledToRestart ==
+ updatedStatus.getCurrentState().getCurrentStateSummary()) {
requeueAfterMillis =
tolerations.getRestartConfig().getRestartBackoffMillis();
}
return updateStatusAndRequeueAfter(
@@ -223,7 +223,7 @@ public class AppCleanUpStep extends AppReconcileStep {
ApplicationState currentState = currentStatus.getCurrentState();
ApplicationTolerations tolerations =
application.getSpec().getApplicationTolerations();
Instant now = Instant.now();
- if
(ApplicationStateSummary.ResourceReleased.equals(currentState.getCurrentStateSummary()))
{
+ if (ApplicationStateSummary.ResourceReleased ==
currentState.getCurrentStateSummary()) {
// Perform TTL check after removing all secondary resources, if enabled
if (isOnDemandCleanup() || !tolerations.isTTLEnabled()) {
// all secondary resources have been released, no more reconciliations
needed
@@ -251,8 +251,8 @@ public class AppCleanUpStep extends AppReconcileStep {
if (isOnDemandCleanup()) {
return Optional.empty();
}
- if (ApplicationStateSummary.TerminatedWithoutReleaseResources.equals(
- currentState.getCurrentStateSummary())) {
+ if (ApplicationStateSummary.TerminatedWithoutReleaseResources ==
+ currentState.getCurrentStateSummary()) {
if (tolerations.isRetainDurationEnabled()) {
if (tolerations.exceedRetainDurationAtInstant(currentState, now)) {
log.info("Garbage collecting secondary resources for application");
@@ -312,8 +312,7 @@ public class AppCleanUpStep extends AppReconcileStep {
protected boolean isReleasingResourcesForSchedulingFailureAttempt(
final ApplicationStatus status) {
ApplicationState lastObservedState =
getLastObservedStateBeforeTermination(status);
- return ApplicationStateSummary.SchedulingFailure.equals(
- lastObservedState.getCurrentStateSummary());
+ return ApplicationStateSummary.SchedulingFailure ==
lastObservedState.getCurrentStateSummary();
}
/**
diff --git
a/spark-operator/src/main/java/org/apache/spark/k8s/operator/reconciler/reconcilesteps/AppRunningStep.java
b/spark-operator/src/main/java/org/apache/spark/k8s/operator/reconciler/reconcilesteps/AppRunningStep.java
index 47a45d6..bab1499 100644
---
a/spark-operator/src/main/java/org/apache/spark/k8s/operator/reconciler/reconcilesteps/AppRunningStep.java
+++
b/spark-operator/src/main/java/org/apache/spark/k8s/operator/reconciler/reconcilesteps/AppRunningStep.java
@@ -84,7 +84,7 @@ public class AppRunningStep extends AppReconcileStep {
}
}
}
- if (proposedStateSummary.equals(prevStateSummary)) {
+ if (proposedStateSummary == prevStateSummary) {
return observeDriver(context, statusRecorder, List.of(new
AppDriverRunningObserver()));
} else {
ApplicationStatus updatedStatus =
diff --git
a/spark-operator/src/main/java/org/apache/spark/k8s/operator/reconciler/reconcilesteps/AppValidateStep.java
b/spark-operator/src/main/java/org/apache/spark/k8s/operator/reconciler/reconcilesteps/AppValidateStep.java
index 73466e9..9cefd67 100644
---
a/spark-operator/src/main/java/org/apache/spark/k8s/operator/reconciler/reconcilesteps/AppValidateStep.java
+++
b/spark-operator/src/main/java/org/apache/spark/k8s/operator/reconciler/reconcilesteps/AppValidateStep.java
@@ -50,7 +50,7 @@ public class AppValidateStep extends AppReconcileStep {
log.warn("Spark application found with empty status. Resetting to
initial state.");
return attemptStatusUpdate(context, statusRecorder, new
ApplicationStatus(), proceed());
}
- if
(ClientMode.equals(context.getResource().getSpec().getDeploymentMode())) {
+ if (ClientMode == context.getResource().getSpec().getDeploymentMode()) {
ApplicationState failure =
new ApplicationState(ApplicationStateSummary.Failed, "Client mode is
not supported yet.");
return attemptStatusUpdate(
diff --git
a/spark-operator/src/main/java/org/apache/spark/k8s/operator/utils/PodUtils.java
b/spark-operator/src/main/java/org/apache/spark/k8s/operator/utils/PodUtils.java
index b71576a..6ac163c 100644
---
a/spark-operator/src/main/java/org/apache/spark/k8s/operator/utils/PodUtils.java
+++
b/spark-operator/src/main/java/org/apache/spark/k8s/operator/utils/PodUtils.java
@@ -42,7 +42,7 @@ public final class PodUtils {
* @return True if the pod is running and ready, false otherwise.
*/
public static boolean isPodReady(final Pod pod) {
- if (!PodPhase.RUNNING.equals(PodPhase.getPhase(pod))) {
+ if (PodPhase.RUNNING != PodPhase.getPhase(pod)) {
return false;
}
if (pod == null
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]