Skip to content

Commit ceee1a7

Browse files
authored
KAFKA-18346 Fix e2e TestKRaftUpgrade for v3.3.2 (apache#18386)
Due to an issue with handling folders in Kafka version 3.3.2 (see apache#13130), this end-to-end test requires using a single folder for upgrade/downgrade scenarios involving 3.3.2. Reviewers: Ismael Juma <[email protected]>, Chia-Ping Tsai <[email protected]>
1 parent 66b1f00 commit ceee1a7

File tree

2 files changed

+14
-4
lines changed

2 files changed

+14
-4
lines changed

tests/kafkatest/services/kafka/kafka.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -255,7 +255,7 @@ def __init__(self, context, num_nodes, zk, security_protocol=SecurityConfig.PLAI
255255
:param jmx_attributes:
256256
:param int zk_connect_timeout:
257257
:param int zk_session_timeout:
258-
:param list[list] server_prop_overrides: overrides for kafka.properties file
258+
:param list[list] server_prop_overrides: overrides for kafka.properties file, if the second value is None or "", it will be filtered
259259
e.g: [["config1", "true"], ["config2", "1000"]]
260260
:param str zk_chroot:
261261
:param bool zk_client_secure: connect to Zookeeper over secure client port (TLS) when True
@@ -781,7 +781,8 @@ def prop_file(self, node):
781781
#update template configs with test override configs
782782
configs.update(override_configs)
783783

784-
prop_file = self.render_configs(configs)
784+
filtered_configs = {k: v for k, v in configs.items() if v not in [None, ""]}
785+
prop_file = self.render_configs(filtered_configs)
785786
return prop_file
786787

787788
def render_configs(self, configs):

tests/kafkatest/tests/core/kraft_upgrade_test.py

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
from ducktape.mark.resource import cluster
1818
from ducktape.utils.util import wait_until
1919
from kafkatest.services.console_consumer import ConsoleConsumer
20-
from kafkatest.services.kafka import KafkaService
20+
from kafkatest.services.kafka import config_property, KafkaService
2121
from kafkatest.services.kafka.quorum import isolated_kraft, combined_kraft
2222
from kafkatest.services.verifiable_producer import VerifiableProducer
2323
from kafkatest.tests.produce_consume_validate import ProduceConsumeValidateTest
@@ -138,14 +138,23 @@ def run_upgrade_downgrade(self, starting_kafka_version):
138138
- Perform rolling downgrade.
139139
- Finally, validate that every message acked by the producer was consumed by the consumer.
140140
"""
141+
142+
# Due to compatability issue with version 3.3, we need to use a single folder. Using multiple folders
143+
# will cause broker to throw InconsistentBrokerMetadataException during startup.
144+
# see https://github.com/apache/kafka/pull/13130
145+
server_prop_overrides = None
146+
if starting_kafka_version == str(LATEST_3_3):
147+
server_prop_overrides = [[config_property.LOG_DIRS, "/mnt/kafka/kafka-metadata-logs"], [config_property.METADATA_LOG_DIR, ""]]
148+
141149
fromKafkaVersion = KafkaVersion(starting_kafka_version)
142150
self.kafka = KafkaService(self.test_context,
143151
num_nodes=3,
144152
zk=None,
145153
version=fromKafkaVersion,
146154
topics={self.topic: {"partitions": self.partitions,
147155
"replication-factor": self.replication_factor,
148-
'configs': {"min.insync.replicas": 2}}})
156+
'configs': {"min.insync.replicas": 2}}},
157+
server_prop_overrides = server_prop_overrides)
149158
self.kafka.start()
150159
self.producer = VerifiableProducer(self.test_context, self.num_producers, self.kafka,
151160
self.topic, throughput=self.producer_throughput,

0 commit comments

Comments
 (0)