MINIFICPP-1539 Check if Message Key Field is really set
Signed-off-by: Arpad Boda <aboda@apache.org>
This closes #1049
diff --git a/extensions/librdkafka/PublishKafka.cpp b/extensions/librdkafka/PublishKafka.cpp
index ceb76f3..b83d028 100644
--- a/extensions/librdkafka/PublishKafka.cpp
+++ b/extensions/librdkafka/PublishKafka.cpp
@@ -544,7 +544,7 @@
configureNewConnection(context);
std::string message_key_field;
- if (context->getProperty(MessageKeyField.getName(), message_key_field)) {
+ if (context->getProperty(MessageKeyField.getName(), message_key_field) && !message_key_field.empty()) {
logger_->log_error("The %s property is set. This property is DEPRECATED and has no effect; please use Kafka Key instead.", MessageKeyField.getName());
}
diff --git a/extensions/librdkafka/tests/PublishKafkaTests.cpp b/extensions/librdkafka/tests/PublishKafkaTests.cpp
index ea1c4ef..db44eb3 100644
--- a/extensions/librdkafka/tests/PublishKafkaTests.cpp
+++ b/extensions/librdkafka/tests/PublishKafkaTests.cpp
@@ -190,3 +190,19 @@
REQUIRE(LogTestController::getInstance().contains("PublishKafka: DynamicProperty: [retry.backoff.ms] -> [180000]"));
}
+
+TEST_CASE("PublishKafka complains if Message Key Field is set, but only if it is set", "[PublishKafka][properties]") {
+ PublishKafkaTestRunner test_runner;
+
+ SECTION("Message Key Field is not set, so there is no error") {
+ test_runner.runProcessor();
+ REQUIRE_FALSE(LogTestController::getInstance().contains("error"));
+ }
+
+ SECTION("Message Key Field is set, so there is an error log") {
+ test_runner.setPublishKafkaProperty(processors::PublishKafka::MessageKeyField, "kafka.key");
+ test_runner.runProcessor();
+ REQUIRE(LogTestController::getInstance().contains("The " + processors::PublishKafka::MessageKeyField.getName() +
+ " property is set. This property is DEPRECATED and has no effect"));
+ }
+}