KAFKA-17096 Fix kafka_log4j_appender.py (#16559)

Reviewers: Chia-Ping Tsai <chia7712@gmail.com>
This commit is contained in:
Xuan-Zhang Gong 2024-07-12 22:35:55 +08:00 committed by GitHub
parent 01cf24a1ca
commit 0ada8fac68
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 11 additions and 3 deletions

View File

@ -1211,6 +1211,9 @@ project(':core') {
//By default gradle does not handle test dependencies between the sub-projects //By default gradle does not handle test dependencies between the sub-projects
//This line is to include clients project test jar to dependant-testlibs //This line is to include clients project test jar to dependant-testlibs
from (project(':clients').testJar ) { "$buildDir/dependant-testlibs" } from (project(':clients').testJar ) { "$buildDir/dependant-testlibs" }
// log4j-appender is not in core dependencies,
// so we add it to dependant-testlibs to avoid ClassNotFoundException in running kafka_log4j_appender.py
from (project(':log4j-appender').jar ) { "$buildDir/dependant-testlibs" }
duplicatesStrategy 'exclude' duplicatesStrategy 'exclude'
} }

View File

@ -15,20 +15,21 @@
from ducktape.services.background_thread import BackgroundThreadService from ducktape.services.background_thread import BackgroundThreadService
from kafkatest.directory_layout.kafka_path import KafkaPathResolverMixin from kafkatest.directory_layout.kafka_path import KafkaPathResolverMixin, CORE_DEPENDANT_TEST_LIBS_JAR_NAME
from kafkatest.services.security.security_config import SecurityConfig from kafkatest.services.security.security_config import SecurityConfig
from kafkatest.services.kafka.util import fix_opts_for_new_jvm from kafkatest.services.kafka.util import fix_opts_for_new_jvm
from kafkatest.version import DEV_BRANCH
class KafkaLog4jAppender(KafkaPathResolverMixin, BackgroundThreadService): class KafkaLog4jAppender(KafkaPathResolverMixin, BackgroundThreadService):
logs = { logs = {
"producer_log": { "producer_log": {
"path": "/mnt/kafka_log4j_appender.log", "path": "/mnt/kafka_log4j_appender.log",
"collect_default": False} "collect_default": False}
} }
def __init__(self, context, num_nodes, kafka, topic, max_messages=-1, security_protocol="PLAINTEXT", tls_version=None): def __init__(self, context, num_nodes, kafka, topic, max_messages=-1, security_protocol="PLAINTEXT",
tls_version=None):
super(KafkaLog4jAppender, self).__init__(context, num_nodes) super(KafkaLog4jAppender, self).__init__(context, num_nodes)
self.kafka = kafka self.kafka = kafka
@ -48,7 +49,11 @@ class KafkaLog4jAppender(KafkaPathResolverMixin, BackgroundThreadService):
node.account.ssh(cmd) node.account.ssh(cmd)
def start_cmd(self, node): def start_cmd(self, node):
# Since the core module does not contain the log4j-appender, we need to add it manually.
core_dependant_test_libs_jar = self.path.jar(CORE_DEPENDANT_TEST_LIBS_JAR_NAME, DEV_BRANCH)
cmd = fix_opts_for_new_jvm(node) cmd = fix_opts_for_new_jvm(node)
cmd += "for file in %s; do CLASSPATH=$CLASSPATH:$file; done;" % core_dependant_test_libs_jar
cmd += " export CLASSPATH;"
cmd += self.path.script("kafka-run-class.sh", node) cmd += self.path.script("kafka-run-class.sh", node)
cmd += " " cmd += " "
cmd += self.java_class_name() cmd += self.java_class_name()