...
If the leaving member does not rejoin within the session timeout, the group coordinator kicks it out from the group. If a new member joins with an existing instance ID before the previous member left, the new member is rejected with a FENCEDUNRELEASED_INSTANCE_ID error ID error as long as the previous member is still present.
...
- FENCED_MEMBER_EPOCH - The member epoch is fenced by the coordinator. The member must abandon all its partitions and rejoins.
- STALE_MEMBER_EPOCH - The member epoch is stale. The member must retry after receiving its updated member epoch via the ConsumerGroupHeartbeat API.
- FENCEDUNRELEASED_INSTANCE_ID - The instance ID is still used by another member. The member must leave first.
- UNSUPPORTED_ASSIGNOR - The assignor used by the member or its version range are not supported by the group.
...
Code Block | ||||
---|---|---|---|---|
| ||||
{ "apiKey": TBD, "type": "response", "name": "ConsumerGroupHeartbeatResponse", "validVersions": "0", "flexibleVersions": "0+", // Supported errors: // - GROUP_AUTHORIZATION_FAILED // - NOT_COORDINATOR // - COORDINATOR_NOT_AVAILABLE // - COORDINATOR_LOAD_IN_PROGRESS // - INVALID_REQUEST // - UNKNOWN_MEMBER_ID // - FENCED_MEMBER_EPOCH // - UNSUPPORTED_ASSIGNOR // - FENCEDUNRELEASED_INSTANCE_ID "fields": [ { "name": "ThrottleTimeMs", "type": "int32", "versions": "0+", "about": "The duration in milliseconds for which the request was throttled due to a quota violation, or zero if the request did not violate any quota." }, { "name": "ErrorCode", "type": "int16", "versions": "0+", "about": "The top-level error code, or 0 if there was no error" }, { "name": "ErrorMessage", "type": "string", "versions": "0+", "nullableVersions": "0+", "default": "null", "about": "The top-level error message, or null if there was no error." }, { "name": "MemberEpoch", "type": "int32", "versions": "0+", "about": "The member epoch." }, { "name": "ShouldComputeAssignment", "type": "bool", "versions": "0+", "about": "True if the member should compute the assignment for the group." }, { "name": "HeartbeatIntervalMs", "type": "int32", "versions": "0+", "about": "The heartbeat interval in milliseconds." }, { "name": "Assignment", "type": "Assignment", "versions": "0+", "nullableVersions": "0+", "default": "null", "about": "null if not provided; the assignment otherwise.", "fields": [ { "name": "Error", "type": "int8", "versions": "0+", "about": "The assigned error." }, { "name": "AssignedTopicPartitions", "type": "[]TopicPartitions", "versions": "0+", "about": "The partitions assigned to the member that can be used immediately." }, { "name": "PendingTopicPartitions", "type": "[]TopicPartitions", "versions": "0+", "about": "The partitions assigned to the member that cannot be used because they are not released by their former owners yet." }, { "name": "MetadataVersion", "type": "int16", "versions": "0+", "about": "The version of the metadata." }, { "name": "MetadataBytes", "type": "bytes", "versions": "0+", "about": "The assigned metadata." } ]} ], "commonStructs": [ { "name": "TopicPartitions", "versions": "0+", "fields": [ { "name": "TopicId", "type": "uuid", "versions": "0+", "about": "The topic ID." }, { "name": "Partitions", "type": "[]int32", "versions": "0+", "about": "The partitions." } ]} ] } |
...
Upon receiving the UNKNOWN_MEMBER_ID or FENCED_MEMBER_EPOCH error, the consumer abandon all its partitions and rejoins with the same member id and the epoch 0.
Upon receiving the FENCEDUNRELEASED_INSTANCE_ID errorID error, the consumer should fail.
...