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())
|
"Retry using UNSAFE_DOWNGRADE if you want to force the downgrade to proceed.", env.outputWithoutEpoch())
|
||||||
}
|
}
|
||||||
TestUtils.resource(FeatureCommandTestEnv()) { env =>
|
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))
|
"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) {
|
if (!metadataChanged) {
|
||||||
log.info("Downgrading metadata.version from {} to {}.", currentVersion, newVersion);
|
log.info("Downgrading metadata.version from {} to {}.", currentVersion, newVersion);
|
||||||
} else if (allowUnsafeDowngrade) {
|
} 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 {
|
} else {
|
||||||
return invalidMetadataVersion(newVersionLevel, "Refusing to perform the requested " +
|
return invalidMetadataVersion(newVersionLevel, "Refusing to perform the requested " +
|
||||||
"downgrade because it might delete metadata information. Retry using " +
|
"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.ApiMessageAndVersion;
|
||||||
import org.apache.kafka.server.common.MetadataVersion;
|
import org.apache.kafka.server.common.MetadataVersion;
|
||||||
import org.apache.kafka.timeline.SnapshotRegistry;
|
import org.apache.kafka.timeline.SnapshotRegistry;
|
||||||
|
import org.junit.jupiter.api.Disabled;
|
||||||
import org.junit.jupiter.api.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
import org.junit.jupiter.api.Timeout;
|
import org.junit.jupiter.api.Timeout;
|
||||||
|
|
||||||
|
@ -326,6 +327,20 @@ public class FeatureControlManagerTest {
|
||||||
true));
|
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
|
@Test
|
||||||
public void testCanUseUnsafeDowngradeIfMetadataChanged() {
|
public void testCanUseUnsafeDowngradeIfMetadataChanged() {
|
||||||
FeatureControlManager manager = TEST_MANAGER_BUILDER1.build();
|
FeatureControlManager manager = TEST_MANAGER_BUILDER1.build();
|
||||||
|
|
Loading…
Reference in New Issue