You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@kafka.apache.org by da...@apache.org on 2022/09/20 20:23:43 UTC
[kafka] branch 3.3 updated: KAFKA-14243: Temporarily disable unsafe downgrade (#12664)
This is an automated email from the ASF dual-hosted git repository.
davidarthur pushed a commit to branch 3.3
in repository https://gitbox.apache.org/repos/asf/kafka.git
The following commit(s) were added to refs/heads/3.3 by this push:
new ebf3cfe136 KAFKA-14243: Temporarily disable unsafe downgrade (#12664)
ebf3cfe136 is described below
commit ebf3cfe136bd75ade026da9ad22831dd4d6ce3d3
Author: Colin Patrick McCabe <cm...@apache.org>
AuthorDate: Tue Sep 20 12:32:52 2022 -0700
KAFKA-14243: Temporarily disable unsafe downgrade (#12664)
Reviewers: David Arthur <mu...@gmail.com>
---
.../test/scala/unit/kafka/admin/FeatureCommandTest.scala | 5 +++--
.../apache/kafka/controller/FeatureControlManager.java | 3 ++-
.../kafka/controller/FeatureControlManagerTest.java | 15 +++++++++++++++
3 files changed, 20 insertions(+), 3 deletions(-)
diff --git a/core/src/test/scala/unit/kafka/admin/FeatureCommandTest.scala b/core/src/test/scala/unit/kafka/admin/FeatureCommandTest.scala
index 18884e4f93..3becc7b330 100644
--- a/core/src/test/scala/unit/kafka/admin/FeatureCommandTest.scala
+++ b/core/src/test/scala/unit/kafka/admin/FeatureCommandTest.scala
@@ -155,9 +155,10 @@ class FeatureCommandTest extends IntegrationTestHarness {
"Retry using UNSAFE_DOWNGRADE if you want to force the downgrade to proceed.", env.outputWithoutEpoch())
}
TestUtils.resource(FeatureCommandTestEnv()) { env =>
- assertEquals(0, FeatureCommand.mainNoExit(Array("--bootstrap-server", bootstrapServers(),
+ assertEquals(1, FeatureCommand.mainNoExit(Array("--bootstrap-server", bootstrapServers(),
"downgrade", "--unsafe", "--metadata", "3.3-IV0"), env.out))
- assertEquals("metadata.version was downgraded to 4.", env.outputWithoutEpoch())
+ assertEquals("Could not downgrade metadata.version to 4. Invalid metadata.version 4. " +
+ "Unsafe metadata downgrade is not supported in this version.", env.outputWithoutEpoch())
}
}
}
diff --git a/metadata/src/main/java/org/apache/kafka/controller/FeatureControlManager.java b/metadata/src/main/java/org/apache/kafka/controller/FeatureControlManager.java
index 46f3be91b6..274e28906b 100644
--- a/metadata/src/main/java/org/apache/kafka/controller/FeatureControlManager.java
+++ b/metadata/src/main/java/org/apache/kafka/controller/FeatureControlManager.java
@@ -255,7 +255,8 @@ public class FeatureControlManager {
if (!metadataChanged) {
log.info("Downgrading metadata.version from {} to {}.", currentVersion, newVersion);
} else if (allowUnsafeDowngrade) {
- log.info("Downgrading metadata.version unsafely from {} to {}.", currentVersion, newVersion);
+ return invalidMetadataVersion(newVersionLevel, "Unsafe metadata downgrade is not supported " +
+ "in this version.");
} else {
return invalidMetadataVersion(newVersionLevel, "Refusing to perform the requested " +
"downgrade because it might delete metadata information. Retry using " +
diff --git a/metadata/src/test/java/org/apache/kafka/controller/FeatureControlManagerTest.java b/metadata/src/test/java/org/apache/kafka/controller/FeatureControlManagerTest.java
index 5162d879a5..3845f64666 100644
--- a/metadata/src/test/java/org/apache/kafka/controller/FeatureControlManagerTest.java
+++ b/metadata/src/test/java/org/apache/kafka/controller/FeatureControlManagerTest.java
@@ -37,6 +37,7 @@ import org.apache.kafka.metadata.VersionRange;
import org.apache.kafka.server.common.ApiMessageAndVersion;
import org.apache.kafka.server.common.MetadataVersion;
import org.apache.kafka.timeline.SnapshotRegistry;
+import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.Timeout;
@@ -326,6 +327,20 @@ public class FeatureControlManagerTest {
true));
}
+ @Test
+ public void testUnsafeDowngradeIsTemporarilyDisabled() {
+ FeatureControlManager manager = TEST_MANAGER_BUILDER1.build();
+ assertEquals(ControllerResult.of(Collections.emptyList(),
+ singletonMap(MetadataVersion.FEATURE_NAME, new ApiError(Errors.INVALID_UPDATE_VERSION,
+ "Invalid metadata.version 4. Unsafe metadata downgrade is not supported in this version."))),
+ manager.updateFeatures(
+ singletonMap(MetadataVersion.FEATURE_NAME, MetadataVersion.IBP_3_3_IV0.featureLevel()),
+ singletonMap(MetadataVersion.FEATURE_NAME, FeatureUpdate.UpgradeType.UNSAFE_DOWNGRADE),
+ emptyMap(),
+ true));
+ }
+
+ @Disabled
@Test
public void testCanUseUnsafeDowngradeIfMetadataChanged() {
FeatureControlManager manager = TEST_MANAGER_BUILDER1.build();