Skip to content

Commit 4571cbc

Browse files
authored
Deprecate and stop using the .status.kafkaMetadataState field (#11890)
Signed-off-by: Jakub Scholz <www@scholzj.com>
1 parent f800ed3 commit 4571cbc

File tree

13 files changed

+19
-20
lines changed

13 files changed

+19
-20
lines changed

CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,10 @@
55
* Set `blockOwnerDeletion` to `true` in the owner references in Strimzi managed resources.
66
Deleting the Strimzi custom resources will now by default wait for the deletion of all the owned Kubernetes resources.
77

8+
### Major changes, deprecations, and removals
9+
10+
* The `.status.kafkaMetadataState` field in the `Kafka` custom resource is deprecated and not used anymore.
11+
812
## 0.48.0
913

1014
* Add support for Kafka 4.1.0.

api/src/main/java/io/strimzi/api/kafka/model/kafka/KafkaMetadataState.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
* Represents where metadata are stored for the current cluster (ZooKeeper or KRaft)
1212
* or if a migration from ZooKeeper to KRaft is in progress and in which phase
1313
*/
14+
@Deprecated
1415
public enum KafkaMetadataState {
1516
/**
1617
* The metadata are stored in ZooKeeper.

api/src/main/java/io/strimzi/api/kafka/model/kafka/KafkaStatus.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -109,11 +109,15 @@ public void setKafkaMetadataVersion(String kafkaMetadataVersion) {
109109
this.kafkaMetadataVersion = kafkaMetadataVersion;
110110
}
111111

112-
@Description("Defines where cluster metadata are stored. Since Kafka KRaft has been fully adopted, the only applicable value is `KRaft`.")
112+
@Description("Defines where cluster metadata are stored. This property is deprecated and not used anymore.")
113+
@Deprecated
114+
@DeprecatedProperty(description = "The `kafkaMetadataState` property is deprecated and will be removed in the future.")
115+
@PresentInVersions("v1beta2")
113116
public KafkaMetadataState getKafkaMetadataState() {
114117
return kafkaMetadataState;
115118
}
116119

120+
@SuppressWarnings("deprecation") // KafkaMetadataState is deprecated
117121
public void setKafkaMetadataState(KafkaMetadataState metadataState) {
118122
this.kafkaMetadataState = metadataState;
119123
}

cluster-operator/src/main/java/io/strimzi/operator/cluster/operator/assembly/KafkaAssemblyOperator.java

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -171,12 +171,6 @@ public Future<KafkaStatus> createOrUpdate(Reconciliation reconciliation, Kafka k
171171
status.setKafkaMetadataVersion(kafkaAssembly.getStatus().getKafkaMetadataVersion());
172172
}
173173

174-
if (status.getKafkaMetadataState() == null
175-
&& kafkaAssembly.getStatus().getKafkaMetadataState() != null) {
176-
// Copy the metadata state if needed
177-
status.setKafkaMetadataState(kafkaAssembly.getStatus().getKafkaMetadataState());
178-
}
179-
180174
if (status.getAutoRebalance() == null
181175
&& kafkaAssembly.getStatus().getAutoRebalance() != null
182176
&& reconcileState.isAutoRebalancingEnabled()) {
@@ -217,6 +211,9 @@ public Future<KafkaStatus> createOrUpdate(Reconciliation reconciliation, Kafka k
217211
Future<Void> reconcile(ReconciliationState reconcileState) {
218212
Promise<Void> chainPromise = Promise.promise();
219213

214+
// The .status.kafkaMetadataState field is deprecated and we do not set it anymore. But we can still use it to
215+
// check the state in the older resources previously reconciled by other operators. And we can prevent
216+
// reconciliation of clusters not yet migrated to KRaft that way.
220217
if (ReconcilerUtils.nonMigratedCluster(reconcileState.kafkaAssembly)) {
221218
throw new InvalidConfigurationException("Strimzi " + OPERATOR_VERSION + " supports only KRaft-based Apache Kafka clusters. Please make sure your cluster is migrated to KRaft before using Strimzi " + OPERATOR_VERSION + ".");
222219
}

cluster-operator/src/main/java/io/strimzi/operator/cluster/operator/assembly/KafkaReconciler.java

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@
1414
import io.fabric8.kubernetes.client.KubernetesClient;
1515
import io.strimzi.api.kafka.model.common.Condition;
1616
import io.strimzi.api.kafka.model.kafka.Kafka;
17-
import io.strimzi.api.kafka.model.kafka.KafkaMetadataState;
1817
import io.strimzi.api.kafka.model.kafka.KafkaResources;
1918
import io.strimzi.api.kafka.model.kafka.KafkaStatus;
2019
import io.strimzi.api.kafka.model.kafka.UsedNodePoolStatus;
@@ -1181,7 +1180,6 @@ protected Future<Void> nodePortExternalListenerStatus() {
11811180
/* test */ Future<Void> updateKafkaStatus(KafkaStatus kafkaStatus) {
11821181
kafkaStatus.setListeners(listenerReconciliationResults.listenerStatuses);
11831182
kafkaStatus.setKafkaVersion(kafka.getKafkaVersion().version());
1184-
kafkaStatus.setKafkaMetadataState(KafkaMetadataState.KRaft);
11851183

11861184
return Future.succeededFuture();
11871185
}

cluster-operator/src/main/java/io/strimzi/operator/cluster/operator/assembly/ReconcilerUtils.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -390,6 +390,7 @@ public static boolean trackedServerCertChanged(Pod pod, Map<Integer, String> cer
390390
*
391391
* @return True ZooKeeper metadata are in use or when the cluster is in migration. False otherwise.
392392
*/
393+
@SuppressWarnings("deprecation") // KafkaMetadataState is deprecated, but we still use it to check for clusters not migrated to KRaft
393394
public static boolean nonMigratedCluster(Kafka kafka) {
394395
// When the Kafka status or the metadata state are null, we cannot decide anything about KRaft (it can be a new
395396
// cluster or a cluster that is still doing the first deployment). Only when it is set to one of the non-KRaft

cluster-operator/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaAssemblyOperatorKRaftMockTest.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -261,7 +261,6 @@ private void basicCheck() {
261261
assertThat(k.getStatus().getKafkaMetadataVersion(), startsWith(VERSIONS.defaultVersion().metadataVersion() + "-IV"));
262262
assertThat(k.getStatus().getKafkaVersion(), is(VERSIONS.defaultVersion().version()));
263263
assertThat(k.getStatus().getOperatorLastSuccessfulVersion(), is(KafkaAssemblyOperator.OPERATOR_VERSION));
264-
assertThat(k.getStatus().getKafkaMetadataState().toValue(), is("KRaft"));
265264
assertThat(k.getStatus().getKafkaNodePools().stream().map(UsedNodePoolStatus::getName).toList(), is(List.of("brokers", "controllers")));
266265
}
267266

cluster-operator/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaAssemblyOperatorWithKRaftTest.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1435,6 +1435,7 @@ vertx, new PlatformFeaturesAvailability(false, KUBERNETES_VERSION),
14351435
* @param context Test context
14361436
*/
14371437
@Test
1438+
@SuppressWarnings("deprecation") // KafkaMetadataState is deprecated
14381439
public void testClusterWithZooKeeperMetadata(VertxTestContext context) {
14391440
Kafka kafka = new KafkaBuilder(KAFKA)
14401441
.editStatus()
@@ -1471,6 +1472,7 @@ vertx, new PlatformFeaturesAvailability(false, KUBERNETES_VERSION),
14711472
* @param context Test context
14721473
*/
14731474
@Test
1475+
@SuppressWarnings("deprecation") // KafkaMetadataState is deprecated
14741476
public void testClusterWithMigrationMetadata(VertxTestContext context) {
14751477
Kafka kafka = new KafkaBuilder(KAFKA)
14761478
.editStatus()

cluster-operator/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaReconcilerStatusTest.java

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@
1111
import io.fabric8.kubernetes.api.model.PodBuilder;
1212
import io.strimzi.api.kafka.model.kafka.Kafka;
1313
import io.strimzi.api.kafka.model.kafka.KafkaBuilder;
14-
import io.strimzi.api.kafka.model.kafka.KafkaMetadataState;
1514
import io.strimzi.api.kafka.model.kafka.KafkaResources;
1615
import io.strimzi.api.kafka.model.kafka.KafkaStatus;
1716
import io.strimzi.api.kafka.model.kafka.PersistentClaimStorageBuilder;
@@ -173,9 +172,6 @@ public void testKafkaReconcilerStatus(VertxTestContext context) {
173172
// Check kafka version
174173
assertThat(status.getKafkaVersion(), is(VERSIONS.defaultVersion().version()));
175174

176-
// Check Kafka metadata state
177-
assertThat(status.getKafkaMetadataState(), is(KafkaMetadataState.KRaft));
178-
179175
// Check model warning conditions
180176
assertThat(status.getConditions().size(), is(2));
181177
assertThat(status.getConditions().get(0).getType(), is("Warning"));

cluster-operator/src/test/java/io/strimzi/operator/cluster/operator/assembly/KafkaStatusTest.java

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@
99
import io.strimzi.api.kafka.model.kafka.Kafka;
1010
import io.strimzi.api.kafka.model.kafka.KafkaBuilder;
1111
import io.strimzi.api.kafka.model.kafka.KafkaList;
12-
import io.strimzi.api.kafka.model.kafka.KafkaMetadataState;
1312
import io.strimzi.api.kafka.model.kafka.KafkaStatus;
1413
import io.strimzi.api.kafka.model.kafka.listener.GenericKafkaListenerBuilder;
1514
import io.strimzi.api.kafka.model.kafka.listener.KafkaListenerType;
@@ -339,7 +338,6 @@ public void testStatusAfterFailedReconciliationWithPreviousSuccess(VertxTestCont
339338
.withKafkaVersion("old-kafka")
340339
.withOperatorLastSuccessfulVersion("old-operator")
341340
.withKafkaMetadataVersion("old-metadata-version")
342-
.withKafkaMetadataState(KafkaMetadataState.KRaft)
343341
.endStatus()
344342
.build();
345343

@@ -380,7 +378,6 @@ vertx, new PlatformFeaturesAvailability(false, kubernetesVersion),
380378
assertThat(status.getKafkaVersion(), is("old-kafka"));
381379
assertThat(status.getOperatorLastSuccessfulVersion(), is("old-operator"));
382380
assertThat(status.getKafkaMetadataVersion(), is("old-metadata-version"));
383-
assertThat(status.getKafkaMetadataState(), is(KafkaMetadataState.KRaft));
384381

385382
async.flag();
386383
})));

0 commit comments

Comments
 (0)