DUE TO SPAM, SIGN-UP IS DISABLED. Goto Selfserve wiki signup and request an account.
...
Add new fields groupEpoch and targetAssignmentEpoch. The ConsumerGroupDescription can be used for classic and consumer group. For classic group, there is no epoch information, so using Optional for new fields.
| Code Block | ||||||
|---|---|---|---|---|---|---|
| ||||||
public class ConsumerGroupDescription {
private final String groupId;
private final boolean isSimpleConsumerGroup;
private final Collection<MemberDescription> members;
private final String partitionAssignor;
private final GroupType type;
private final ConsumerGroupState state;
private final Node coordinator;
private final Set<AclOperation> authorizedOperations;
private final Optional<Integer> groupEpoch;
private final Optional<Integer> targetAssignmentEpoch;
// ...
/**
* The epoch of the consumer group.
*/
public Optional<Integer> groupEpoch() {
return groupEpoch;
}
/**
* The epoch of the target assignment.
*/
public Optional<Integer> targetAssignmentEpoch() {
return targetAssignmentEpoch;
}
} |
ShareGroupDescription
Add new fields groupEpoch and targetAssignmentEpoch.
| Code Block | ||||||
|---|---|---|---|---|---|---|
| ||||||
public class ShareGroupDescription {
private final String groupId;
private final Collection<MemberDescription> members;
private final ShareGroupState state;
private final Node coordinator;
private final Set<AclOperation> authorizedOperations;
private final Optional<Integer>Integer groupEpoch;
private final Optional<Integer>Integer targetAssignmentEpoch;
// ...
/**
* The epoch of the share group.
*/
public Optional<Integer>Integer groupEpoch() {
return groupEpoch;
}
/**
* The epoch of the target assignment.
*/
public Optional<Integer>Integer targetAssignmentEpoch() {
return targetAssignmentEpoch;
}
} |
...
Add a new field memberEpoch. For classic group member, there is no member epoch, so using Optional for the new field.
| Code Block | ||||||
|---|---|---|---|---|---|---|
| ||||||
public class MemberDescription {
private final String memberId;
private final Optional<String> groupInstanceId;
private final String clientId;
private final String host;
private final MemberAssignment assignment;
private final Optional<MemberAssignment> targetAssignment;
private final Optional<Integer> memberEpoch;
// ...
/**
* The epoch of the group member.
*/
public Optional<Integer> memberEpoch() {
return memberEpoch;
}
} |
Proposed Changes
kafka-consumer-groups.sh
--describe --
...
verbose
Show the group level informationAdd GROUP-EPOCH, TARGET-ASSIGNMENT-EPOCH, and CONSUMER-EPOCH information. CONSUMER-EPOCH is equal to memberEpoch.
| Code Block |
|---|
$ bin/kafka-consumer-groups.sh --bootstrap-server localhost:9092 --describe --group my-group --membersverbose GROUP CONSUMER-COORDINATOR (ID) ASSIGNMENT-STRATEGY HOST STATE CLIENT-ID #PARTITIONS #MEMBERS GROUP-EPOCH TARGET-ASSIGNMENT-EPOCH CONSUMER-EPOCH my-group T4tbGKsvT7CtsxVBH5J2QQ /127.0.0.1 consumer-my-group-1 1 1 localhost:61316 (0) uniform Stable 1 1 1 |
--describe --members --verbose
Show the member level information. Add GROUP-EPOCH, TARGET-ASSIGNMENT-EPOCH, CONSUMERMEMBER-EPOCH, and TARGET-ASSIGNMENT information. CONSUMER-EPOCH is equal to memberEpoch.
| Code Block |
|---|
$ bin/kafka-consumer-groups.sh --bootstrap-server localhost:9092 --describe --group my-group --members --verbose GROUP CONSUMER-ID HOST CLIENT-ID #PARTITIONS ASSIGNMENT TARGET-ASSIGNMENT GROUP-EPOCH TARGET-ASSIGNMENT-EPOCH CONSUMERMEMBER-EPOCH my-group T4tbGKsvT7CtsxVBH5J2QQ /127.0.0.1 consumer-my-group-1 1 (0) (0) 1 1 1 |
kafka-share-
...
group.sh
--describe --verbose
Show the group level Add GROUP-EPOCH and TARGET-ASSIGNMENT-EPOCH information.
| Code Block |
|---|
$ bin/kafka-consumer-groups.sh --bootstrap-server localhost:9092 --describe --group my-group --state GROUP COORDINATOR (ID) ASSIGNMENT-STRATEGY STATE #MEMBERS GROUP-EPOCH TARGET-ASSIGNMENT-EPOCH my-group localhost:61316 (0) uniform Stable Stable 1 1 1 |
kafka-share-group.sh
...
--describe --members --verbose
Show the member level information. Add GROUP-EPOCH, TARGET-ASSIGNMENT-EPOCH, MEMBER-EPOCH, and TARGET-ASSIGNMENT information.
| Code Block |
|---|
$ bin/kafka-consumer-groups.sh --bootstrap-server localhost:9092 --describe --group my-group --members GROUP CONSUMER-ID HOST CLIENT-ID ASSIGNMENT TARGET-ASSIGNMENT GROUP-EPOCH TARGET-ASSIGNMENT-EPOCH CONSUMERMEMBER-EPOCH my-group T4tbGKsvT7CtsxVBH5J2QQ /127.0.0.1 consumer-my-group-1 my_topic:0 1my_topic:0 1 1 |
--state
| Code Block |
|---|
$ bin/kafka-consumer-groups.sh --bootstrap-server localhost:9092 --describe --group my-group --state GROUP COORDINATOR (ID) STATE #MEMBERS GROUP-EPOCH TARGET-ASSIGNMENT-EPOCH my-group localhost:61316 (0) Stable 1 1 1 |
Compatibility, Deprecation, and Migration Plan
...