This is an automated email from the ASF dual-hosted git repository.
AlinsRan pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/apisix.git
The following commit(s) were added to refs/heads/master by this push:
new eca38b227 fix(ci): wait for the kafka broker before creating topics
(#13709)
eca38b227 is described below
commit eca38b227f4a7524d28e9f9e31b57194f71526b6
Author: AlinsRan <[email protected]>
AuthorDate: Wed Aug 5 06:37:32 2026 +0800
fix(ci): wait for the kafka broker before creating topics (#13709)
---
ci/init-last-test-service.sh | 31 +++++++++++++++++++++++++++----
ci/init-plugin-test-service.sh | 33 ++++++++++++++++++++++++++++-----
2 files changed, 55 insertions(+), 9 deletions(-)
diff --git a/ci/init-last-test-service.sh b/ci/init-last-test-service.sh
index 694349056..bc90a25a3 100755
--- a/ci/init-last-test-service.sh
+++ b/ci/init-last-test-service.sh
@@ -16,16 +16,39 @@
# limitations under the License.
#
+# A broker that is not registered in ZooKeeper yet rejects topic creation with
+# "Replication factor: 1 larger than available brokers: 0". The failure used
to be
+# silent, and the topic was then auto-created with the default single
partition on
+# first produce, which quietly broke tests that expect a specific partition
layout.
+create_kafka_topic() {
+ local container="$1"
+ local zookeeper="$2"
+ local partitions="$3"
+ local topic="$4"
+
+ for _ in $(seq 30); do
+ if docker exec -i "$container" /opt/bitnami/kafka/bin/kafka-topics.sh
--create \
+ --zookeeper "$zookeeper" --replication-factor 1 \
+ --partitions "$partitions" --topic "$topic"; then
+ return 0
+ fi
+ sleep 2
+ done
+
+ echo "failed to create kafka topic $topic on $container"
+ exit 1
+}
+
before() {
# generating SSL certificates for Kafka
sudo keytool -genkeypair -keyalg RSA -dname "CN=127.0.0.1" -alias
127.0.0.1 -keystore ./ci/pod/kafka/kafka-server/selfsigned.jks -validity 365
-keysize 2048 -storepass changeit
}
after() {
- docker exec -i apache-apisix-kafka-server1-1
/opt/bitnami/kafka/bin/kafka-topics.sh --create --zookeeper
zookeeper-server1:2181 --replication-factor 1 --partitions 1 --topic test2
- docker exec -i apache-apisix-kafka-server1-1
/opt/bitnami/kafka/bin/kafka-topics.sh --create --zookeeper
zookeeper-server1:2181 --replication-factor 1 --partitions 3 --topic test3
- docker exec -i apache-apisix-kafka-server2-1
/opt/bitnami/kafka/bin/kafka-topics.sh --create --zookeeper
zookeeper-server2:2181 --replication-factor 1 --partitions 1 --topic test4
- docker exec -i apache-apisix-kafka-server1-1
/opt/bitnami/kafka/bin/kafka-topics.sh --create --zookeeper
zookeeper-server1:2181 --replication-factor 1 --partitions 1 --topic
test-consumer
+ create_kafka_topic apache-apisix-kafka-server1-1 zookeeper-server1:2181 1
test2
+ create_kafka_topic apache-apisix-kafka-server1-1 zookeeper-server1:2181 3
test3
+ create_kafka_topic apache-apisix-kafka-server2-1 zookeeper-server2:2181 1
test4
+ create_kafka_topic apache-apisix-kafka-server1-1 zookeeper-server1:2181 1
test-consumer
# create messages for test-consumer
for i in `seq 30`
do
diff --git a/ci/init-plugin-test-service.sh b/ci/init-plugin-test-service.sh
index 7c65a8af3..3a14d4770 100755
--- a/ci/init-plugin-test-service.sh
+++ b/ci/init-plugin-test-service.sh
@@ -16,12 +16,35 @@
# limitations under the License.
#
+# A broker that is not registered in ZooKeeper yet rejects topic creation with
+# "Replication factor: 1 larger than available brokers: 0". The failure used
to be
+# silent, and the topic was then auto-created with the default single
partition on
+# first produce, which quietly broke tests that expect a specific partition
layout.
+create_kafka_topic() {
+ local container="$1"
+ local zookeeper="$2"
+ local partitions="$3"
+ local topic="$4"
+
+ for _ in $(seq 30); do
+ if docker exec -i "$container" /opt/bitnami/kafka/bin/kafka-topics.sh
--create \
+ --zookeeper "$zookeeper" --replication-factor 1 \
+ --partitions "$partitions" --topic "$topic"; then
+ return 0
+ fi
+ sleep 2
+ done
+
+ echo "failed to create kafka topic $topic on $container"
+ exit 1
+}
+
after() {
- docker exec -i apache-apisix-kafka-server1-1
/opt/bitnami/kafka/bin/kafka-topics.sh --create --zookeeper
zookeeper-server1:2181 --replication-factor 1 --partitions 1 --topic test2
- docker exec -i apache-apisix-kafka-server1-1
/opt/bitnami/kafka/bin/kafka-topics.sh --create --zookeeper
zookeeper-server1:2181 --replication-factor 1 --partitions 3 --topic test3
- docker exec -i apache-apisix-kafka-server2-1
/opt/bitnami/kafka/bin/kafka-topics.sh --create --zookeeper
zookeeper-server2:2181 --replication-factor 1 --partitions 1 --topic test4
- docker exec -i apache-apisix-kafka-server3-scram-1
/opt/bitnami/kafka/bin/kafka-topics.sh --create --zookeeper
zookeeper-server3:2181 --replication-factor 1 --partitions 1 --topic
test-scram-256
- docker exec -i apache-apisix-kafka-server3-scram-1
/opt/bitnami/kafka/bin/kafka-topics.sh --create --zookeeper
zookeeper-server3:2181 --replication-factor 1 --partitions 1 --topic
test-scram-512
+ create_kafka_topic apache-apisix-kafka-server1-1 zookeeper-server1:2181 1
test2
+ create_kafka_topic apache-apisix-kafka-server1-1 zookeeper-server1:2181 3
test3
+ create_kafka_topic apache-apisix-kafka-server2-1 zookeeper-server2:2181 1
test4
+ create_kafka_topic apache-apisix-kafka-server3-scram-1
zookeeper-server3:2181 1 test-scram-256
+ create_kafka_topic apache-apisix-kafka-server3-scram-1
zookeeper-server3:2181 1 test-scram-512
# Create user with SCRAM-SHA-512
docker exec apache-apisix-kafka-server3-scram-1
/opt/bitnami/kafka/bin/kafka-configs.sh \
--zookeeper zookeeper-server3:2181 \