From 1d4753d01c47450613750e0074a929e1cbbefdad Mon Sep 17 00:00:00 2001 From: Gilles Degols Date: Wed, 21 Feb 2018 21:12:26 +0100 Subject: [PATCH 1/3] Users forget --execute in the offset reset tool --- core/src/main/scala/kafka/admin/ConsumerGroupCommand.scala | 3 +++ 1 file changed, 3 insertions(+) diff --git a/core/src/main/scala/kafka/admin/ConsumerGroupCommand.scala b/core/src/main/scala/kafka/admin/ConsumerGroupCommand.scala index 68186315a4220..b7b7f1de30d02 100755 --- a/core/src/main/scala/kafka/admin/ConsumerGroupCommand.scala +++ b/core/src/main/scala/kafka/admin/ConsumerGroupCommand.scala @@ -78,6 +78,9 @@ object ConsumerGroupCommand extends Logging { else if (opts.options.has(opts.deleteOpt)) consumerGroupService.deleteGroups() else if (opts.options.has(opts.resetOffsetsOpt)) { + if(!opts.options.has(opts.executeOpt)) + System.err.println("Warning: No action will be performed as argument \"" + opts.executeOpt + "\" is missing.") + val offsetsToReset = consumerGroupService.resetOffsets() if (opts.options.has(opts.exportOpt)) { val exported = consumerGroupService.exportOffsetsToReset(offsetsToReset) From dff6d6c48c70bab1b9b0045f27d54b251f5f23bf Mon Sep 17 00:00:00 2001 From: Jason Gustafson Date: Wed, 21 Feb 2018 14:36:54 -0800 Subject: [PATCH 2/3] Minor formatting tweak --- core/src/main/scala/kafka/admin/ConsumerGroupCommand.scala | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/src/main/scala/kafka/admin/ConsumerGroupCommand.scala b/core/src/main/scala/kafka/admin/ConsumerGroupCommand.scala index b7b7f1de30d02..bbc50d97256cc 100755 --- a/core/src/main/scala/kafka/admin/ConsumerGroupCommand.scala +++ b/core/src/main/scala/kafka/admin/ConsumerGroupCommand.scala @@ -78,7 +78,7 @@ object ConsumerGroupCommand extends Logging { else if (opts.options.has(opts.deleteOpt)) consumerGroupService.deleteGroups() else if (opts.options.has(opts.resetOffsetsOpt)) { - if(!opts.options.has(opts.executeOpt)) + if (!opts.options.has(opts.executeOpt)) System.err.println("Warning: No action will be performed as argument \"" + opts.executeOpt + "\" is missing.") val offsetsToReset = consumerGroupService.resetOffsets() From 99c8515c5ec7ab8b3d344aaabc03274468b0eebe Mon Sep 17 00:00:00 2001 From: Jason Gustafson Date: Sat, 24 Feb 2018 12:42:06 -0800 Subject: [PATCH 3/3] Relocate warning message after upstream changes --- .../kafka/admin/ConsumerGroupCommand.scala | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) diff --git a/core/src/main/scala/kafka/admin/ConsumerGroupCommand.scala b/core/src/main/scala/kafka/admin/ConsumerGroupCommand.scala index bbc50d97256cc..cb9fbe3313eda 100755 --- a/core/src/main/scala/kafka/admin/ConsumerGroupCommand.scala +++ b/core/src/main/scala/kafka/admin/ConsumerGroupCommand.scala @@ -78,9 +78,6 @@ object ConsumerGroupCommand extends Logging { else if (opts.options.has(opts.deleteOpt)) consumerGroupService.deleteGroups() else if (opts.options.has(opts.resetOffsetsOpt)) { - if (!opts.options.has(opts.executeOpt)) - System.err.println("Warning: No action will be performed as argument \"" + opts.executeOpt + "\" is missing.") - val offsetsToReset = consumerGroupService.resetOffsets() if (opts.options.has(opts.exportOpt)) { val exported = consumerGroupService.exportOffsetsToReset(offsetsToReset) @@ -1036,16 +1033,16 @@ object ConsumerGroupCommand extends Logging { CommandLineUtils.printUsageAndDie(parser, s"Option $deleteOpt either takes $groupOpt, $topicOpt, or both") if (options.has(resetOffsetsOpt)) { - if (!options.has(dryRunOpt) && !options.has(executeOpt)) { - Console.err.println("WARN: In a future major release, the default behavior of this command will be to " + - "prompt the user before executing the reset rather than doing a dry run. You should add the --dry-run " + - "option explicitly if you are scripting this command and want to keep the current default behavior " + - "without prompting.") - } - if (options.has(dryRunOpt) && options.has(executeOpt)) CommandLineUtils.printUsageAndDie(parser, s"Option $resetOffsetsOpt only accepts one of $executeOpt and $dryRunOpt") + if (!options.has(dryRunOpt) && !options.has(executeOpt)) { + Console.err.println("WARN: No action will be performed as the --execute option is missing." + + "In a future major release, the default behavior of this command will be to prompt the user before " + + "executing the reset rather than doing a dry run. You should add the --dry-run option explicitly " + + "if you are scripting this command and want to keep the current default behavior without prompting.") + } + CommandLineUtils.checkRequiredArgs(parser, options, groupOpt) CommandLineUtils.checkInvalidArgs(parser, options, resetToOffsetOpt, allResetOffsetScenarioOpts - resetToOffsetOpt) CommandLineUtils.checkInvalidArgs(parser, options, resetToDatetimeOpt, allResetOffsetScenarioOpts - resetToDatetimeOpt)