AndrewJSchofield commented on PR #16766:
URL: https://github.com/apache/kafka/pull/16766#issuecomment-2265175987

   I tried this code and it didn't really behave quite right I feel. I did:
   * Create 2 topics T1 and T2
   * Reset offsets of consumer group G1 consuming from earliest offset of T1 
with `bin/kafka-consumer-groups.sh --bootstrap-server localhost:9092 
--reset-offsets --topic T1 --group G1 --to-earliest --execute`
   * Reset offsets of consumer group G1 consuming from earliest offset of T2 
with `bin/kafka-consumer-groups.sh --bootstrap-server localhost:9092 
--reset-offsets --topic T2 --group G1 --to-earliest --execute`
   * Start `bin/kafka-consumer-groups.sh --bootstrap-server localhost:9092 
--reset-offsets --topic T1 --group G1 --to-earliest --execute` under a debugger 
and run up to a breakpoint in `ConsumerGroupCommand.getLogStartOffsets`
   * Delete topic T1 so that the new exception handling code is executed.
   * Resume the debugger.
   
   The output is as follows:
   ```
   [2024-08-02 12:22:13,881] ERROR [AdminClient clientId=adminclient-1] 
Received unknown topic error for topic T1 
(org.apache.kafka.clients.admin.internals.PartitionLeaderStrategy)
   org.apache.kafka.common.errors.UnknownTopicOrPartitionException: This server 
does not host this topic-partition.
   Error getting starting offset of topic partition: T1-0
   Option                                  Description                          
  
   ------                                  -----------                          
  
   --all-groups                            Apply to all consumer groups.        
  
   --all-topics                            Consider all topics assigned to a    
  
                                             group in the `reset-offsets` 
process.
   --bootstrap-server <String: server to   REQUIRED: The server(s) to connect 
to. 
     connect to>                                                                
  
   --by-duration <String: duration>        Reset offsets to offset by duration  
  
                                             from current timestamp. Format:    
  
                                             'PnDTnHnMnS'                       
  
   --command-config <String: command       Property file containing configs to 
be 
     config property file>                   passed to Admin Client and 
Consumer. 
   --delete                                Pass in groups to delete topic       
  
                                             partition offsets and ownership    
  
                                             information over the entire 
consumer 
                                             group. For instance --group g1 --  
  
                                             group g2                           
  
   --delete-offsets                        Delete offsets of consumer group.    
  
                                             Supports one consumer group at the 
  
                                             time, and multiple topics.         
  
   --describe                              Describe consumer group and list     
  
                                             offset lag (number of messages not 
  
                                             yet processed) related to given    
  
                                             group.                             
  
   --dry-run                               Only show results without executing  
  
                                             changes on Consumer Groups.        
  
                                             Supported operations: 
reset-offsets. 
   --execute                               Execute operation. Supported         
  
                                             operations: reset-offsets.         
  
   --export                                Export operation execution to a CSV  
  
                                             file. Supported operations: reset- 
  
                                             offsets.                           
  
   --from-file <String: path to CSV file>  Reset offsets to values defined in 
CSV 
                                             file.                              
  
   --group <String: consumer group>        The consumer group we wish to act 
on.  
   --help                                  Print usage information.             
  
   --list                                  List all consumer groups.            
  
   --members                               Describe members of the group. This  
  
                                             option may be used with 
'--describe' 
                                             and '--bootstrap-server' options   
  
                                             only.                              
  
                                           Example: --bootstrap-server 
localhost: 
                                             9092 --describe --group group1 --  
  
                                             members                            
  
   --offsets                               Describe the group and list all 
topic  
                                             partitions in the group along with 
  
                                             their offset lag. This is the      
  
                                             default sub-action of and may be   
  
                                             used with '--describe' and '--     
  
                                             bootstrap-server' options only.    
  
                                           Example: --bootstrap-server 
localhost: 
                                             9092 --describe --group group1 --  
  
                                             offsets                            
  
   --reset-offsets                         Reset offsets of consumer group.     
  
                                             Supports one consumer group at the 
  
                                             time, and instances should be      
  
                                             inactive                           
  
                                           Has 2 execution options: --dry-run   
  
                                             (the default) to plan which 
offsets  
                                             to reset, and --execute to update  
  
                                             the offsets. Additionally, the --  
  
                                             export option is used to export 
the  
                                             results to a CSV format.           
  
                                           You must choose one of the following 
  
                                             reset specifications: 
--to-datetime, 
                                             --by-duration, --to-earliest, 
--to-  
                                             latest, --shift-by, --from-file, 
--  
                                             to-current, --to-offset.           
  
                                           To define the scope use --all-topics 
  
                                             or --topic. One scope must be      
  
                                             specified unless you use '--from-  
  
                                             file'.                             
  
   --shift-by <Long: number-of-offsets>    Reset offsets shifting current 
offset  
                                             by 'n', where 'n' can be positive 
or 
                                             negative.                          
  
   --state [String]                        When specified with '--describe',    
  
                                             includes the state of the group.   
  
                                           Example: --bootstrap-server 
localhost: 
                                             9092 --describe --group group1 --  
  
                                             state                              
  
                                           When specified with '--list', it     
  
                                             displays the state of all groups. 
It 
                                             can also be used to list groups 
with 
                                             specific states.                   
  
                                           Example: --bootstrap-server 
localhost: 
                                             9092 --list --state stable,empty   
  
                                           This option may be used with '--     
  
                                             describe', '--list' and 
'--bootstrap-
                                             server' options only.              
  
   --timeout <Long: timeout (ms)>          The timeout that can be set for some 
  
                                             use cases. For example, it can be  
  
                                             used when describing the group to  
  
                                             specify the maximum amount of time 
  
                                             in milliseconds to wait before the 
  
                                             group stabilizes (when the group 
is  
                                             just created, or is going through  
  
                                             some changes). (default: 5000)     
  
   --to-current                            Reset offsets to current offset.     
  
   --to-datetime <String: datetime>        Reset offsets to offset from 
datetime. 
                                             Format: 'YYYY-MM-DDTHH:mm:SS.sss'  
  
   --to-earliest                           Reset offsets to earliest offset.    
  
   --to-latest                             Reset offsets to latest offset.      
  
   --to-offset <Long: offset>              Reset offsets to a specific offset.  
  
   --topic <String: topic>                 The topic whose consumer group       
  
                                             information should be deleted or   
  
                                             topic whose should be included in  
  
                                             the reset offset process. In 
`reset- 
                                             offsets` case, partitions can be   
  
                                             specified using this format: 
`topic1:
                                             0,1,2`, where 0,1,2 are the        
  
                                             partition to be included in the    
  
                                             process. Reset-offsets also 
supports 
                                             multiple topic inputs.             
  
   --type [String]                         When specified with '--list', it     
  
                                             displays the types of all the      
  
                                             groups. It can also be used to 
list  
                                             groups with specific types.        
  
                                           Example: --bootstrap-server 
localhost: 
                                             9092 --list --type 
classic,consumer  
                                           This option may be used with the '-- 
  
                                             list' option only.                 
  
   --verbose                               Provide additional information, if   
  
                                             any, when describing the group. 
This 
                                             option may be used with '--        
  
                                             offsets'/'--members'/'--state' and 
  
                                             '--bootstrap-server' options only. 
  
                                           Example: --bootstrap-server 
localhost: 
                                             9092 --describe --group group1 --  
  
                                             members --verbose                  
  
   --version                               Display Kafka version.   
   ```
   
   The command reports the error neatly, but then it seems to print out the 
command usage message.


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to