mirror of https://github.com/apache/kafka.git
KAFKA-14243: Temporarily disable unsafe downgrade (#12664)
Reviewers: David Arthur <mumrah@gmail.com>
This commit is contained in:
parent
8ddc9509cf
commit
ae4bb0c6fa
|
@ -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())
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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 " +
|
||||
|
|
|
@ -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();
|
||||
|
|
Loading…
Reference in New Issue