[
https://issues.apache.org/jira/browse/KAFKA-7037?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16701690#comment-16701690
]
ASF GitHub Bot commented on KAFKA-7037:
---
omkreddy closed pull request #5193: KAFKA-7037: Improve the topic command
description of `--topic` option
URL: https://github.com/apache/kafka/pull/5193
This is a PR merged from a forked repository.
As GitHub hides the original diff on merge, it is displayed below for
the sake of provenance:
As this is a foreign pull request (from a fork), the diff is supplied
below (as it won't show otherwise due to GitHub magic):
diff --git a/core/src/main/scala/kafka/admin/TopicCommand.scala
b/core/src/main/scala/kafka/admin/TopicCommand.scala
index 9d284521a6e..37dd233913b 100755
--- a/core/src/main/scala/kafka/admin/TopicCommand.scala
+++ b/core/src/main/scala/kafka/admin/TopicCommand.scala
@@ -308,8 +308,9 @@ object TopicCommand extends Logging {
val deleteOpt = parser.accepts("delete", "Delete a topic")
val alterOpt = parser.accepts("alter", "Alter the number of partitions,
replica assignment, and/or configuration for the topic.")
val describeOpt = parser.accepts("describe", "List details for the given
topics.")
-val topicOpt = parser.accepts("topic", "The topic to be create, alter or
describe. Can also accept a regular " +
- "expression except for --create
option")
+val topicOpt = parser.accepts("topic", "The topic to create, alter,
describe or delete. It also accepts a regular " +
+ "expression, except for --create
option. Put topic name in double quotes and use the '\\' prefix " +
+ "to escape regular expression
symbols; e.g. \"test\\.topic\".")
.withRequiredArg
.describedAs("topic")
.ofType(classOf[String])
diff --git a/core/src/test/scala/unit/kafka/admin/TopicCommandTest.scala
b/core/src/test/scala/unit/kafka/admin/TopicCommandTest.scala
index a469f8efe04..5d2d873425f 100644
--- a/core/src/test/scala/unit/kafka/admin/TopicCommandTest.scala
+++ b/core/src/test/scala/unit/kafka/admin/TopicCommandTest.scala
@@ -278,4 +278,37 @@ class TopicCommandTest extends ZooKeeperTestHarness with
Logging with RackAwareT
assertTrue(output.contains(topic))
assertFalse(output.contains(Topic.GROUP_METADATA_TOPIC_NAME))
}
+
+ @Test
+ def testTopicOperationsWithRegexSymbolInTopicName(): Unit = {
+val topic1 = "test.topic"
+val topic2 = "test-topic"
+val escapedTopic = "\"test\\.topic\""
+val unescapedTopic = "test.topic"
+val numPartitionsOriginal = 1
+
+// create brokers
+val brokers = List(0, 1, 2)
+TestUtils.createBrokersInZk(zkClient, brokers)
+
+// create the topics
+val createOpts = new TopicCommandOptions(Array("--partitions",
numPartitionsOriginal.toString,
+ "--replication-factor", "1", "--topic", topic1))
+TopicCommand.createTopic(zkClient, createOpts)
+val createOpts2 = new TopicCommandOptions(Array("--partitions",
numPartitionsOriginal.toString,
+ "--replication-factor", "1", "--topic", topic2))
+TopicCommand.createTopic(zkClient, createOpts2)
+
+val escapedCommandOpts = new TopicCommandOptions(Array("--topic",
escapedTopic))
+val unescapedCommandOpts = new TopicCommandOptions(Array("--topic",
unescapedTopic))
+
+// topic actions with escaped regex do not affect 'test-topic'
+// topic actions with unescaped topic affect 'test-topic'
+
+
assertFalse(TestUtils.grabConsoleOutput(TopicCommand.describeTopic(zkClient,
escapedCommandOpts)).contains(topic2))
+
assertTrue(TestUtils.grabConsoleOutput(TopicCommand.describeTopic(zkClient,
unescapedCommandOpts)).contains(topic2))
+
+assertFalse(TestUtils.grabConsoleOutput(TopicCommand.deleteTopic(zkClient,
escapedCommandOpts)).contains(topic2))
+assertTrue(TestUtils.grabConsoleOutput(TopicCommand.deleteTopic(zkClient,
unescapedCommandOpts)).contains(topic2))
+ }
}
This is an automated message from the Apache Git Service.
To respond to the message, please log on GitHub and use the
URL above to go to the specific comment.
For queries about this service, please contact Infrastructure at:
us...@infra.apache.org
> delete topic command replaces '+' from the topic name which leads incorrect
> topic deletion
> --
>
> Key: KAFKA-7037
> URL: https://issues.apache.org/jira/browse/KAFKA-7037
> Project: Kafka
> Issue Type: Bug
>Affects Versions: 0.10.1.0, 1.0.0
>Reporter: Sandeep Nemuri
>Assignee: Vahid Hashemian
>Priority: Major
>