| // Licensed to the Apache Software Foundation (ASF) under one or more |
| // contributor license agreements. See the NOTICE file distributed with |
| // this work for additional information regarding copyright ownership. |
| // The ASF licenses this file to You under the Apache License, Version 2.0 |
| // (the "License"); you may not use this file except in compliance with |
| // the License. You may obtain a copy of the License at |
| // |
| // http://www.apache.org/licenses/LICENSE-2.0 |
| // |
| // Unless required by applicable law or agreed to in writing, software |
| // distributed under the License is distributed on an "AS IS" BASIS, |
| // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| // See the License for the specific language governing permissions and |
| // limitations under the License. |
| |
| { |
| "apiKey": 88, |
| "type": "response", |
| "name": "StreamsGroupHeartbeatResponse", |
| "validVersions": "0", |
| "flexibleVersions": "0+", |
| // Supported errors: |
| // - GROUP_AUTHORIZATION_FAILED (version 0+) |
| // - GROUP_ID_NOT_FOUND (version 0+) |
| // - NOT_COORDINATOR (version 0+) |
| // - COORDINATOR_NOT_AVAILABLE (version 0+) |
| // - COORDINATOR_LOAD_IN_PROGRESS (version 0+) |
| // - INVALID_REQUEST (version 0+) |
| // - UNKNOWN_MEMBER_ID (version 0+) |
| // - FENCED_MEMBER_EPOCH (version 0+) |
| // - UNRELEASED_INSTANCE_ID (version 0+) |
| // - GROUP_MAX_SIZE_REACHED (version 0+) |
| // - TOPIC_AUTHORIZATION_FAILED (version 0+) |
| // - CLUSTER_AUTHORIZATION_FAILED (version 0+) |
| // - STREAMS_INVALID_TOPOLOGY (version 0+) |
| // - STREAMS_INVALID_TOPOLOGY_EPOCH (version 0+) |
| // - STREAMS_TOPOLOGY_FENCED (version 0+) |
| "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": "MemberId", "type": "string", "versions": "0+", |
| "about": "The member id is always generated by the streams consumer."}, |
| { "name": "MemberEpoch", "type": "int32", "versions": "0+", |
| "about": "The member epoch." }, |
| { "name": "HeartbeatIntervalMs", "type": "int32", "versions": "0+", |
| "about": "The heartbeat interval in milliseconds." }, |
| { "name": "AcceptableRecoveryLag", "type": "int32", "versions": "0+", |
| "about": "The maximal lag a warm-up task can have to be considered caught-up." }, |
| { "name": "TaskOffsetIntervalMs", "type": "int32", "versions": "0+", |
| "about": "The interval in which the task changelog offsets on a client are updated on the broker. The offsets are sent with the next heartbeat after this time has passed." }, |
| |
| { "name": "Status", "type": "[]Status", "versions": "0+", "nullableVersions": "0+", "default": "null", |
| "about": "Indicate zero or more status for the group. Null if unchanged since last heartbeat." }, |
| |
| // The streams app knows which partitions to fetch from given this information |
| { "name": "ActiveTasks", "type": "[]TaskIds", "versions": "0+", "nullableVersions": "0+", "default": "null", |
| "about": "Assigned active tasks for this client. Null if unchanged since last heartbeat." }, |
| { "name": "StandbyTasks", "type": "[]TaskIds", "versions": "0+", "nullableVersions": "0+", "default": "null", |
| "about": "Assigned standby tasks for this client. Null if unchanged since last heartbeat." }, |
| { "name": "WarmupTasks", "type": "[]TaskIds", "versions": "0+", "nullableVersions": "0+", "default": "null", |
| "about": "Assigned warm-up tasks for this client. Null if unchanged since last heartbeat." }, |
| |
| // IQ-related information |
| { "name": "EndpointInformationEpoch", "type": "int32", "versions": "0+", |
| "about": "The endpoint epoch set in the response"}, |
| { "name": "PartitionsByUserEndpoint", "type": "[]EndpointToPartitions", "versions": "0+", "nullableVersions": "0+", "default": "null", |
| "about": "Global assignment information used for IQ. Null if unchanged since last heartbeat." , |
| "fields": [ |
| { "name": "UserEndpoint", "type": "Endpoint", "versions": "0+", |
| "about": "User-defined endpoint to connect to the node" }, |
| { "name": "ActivePartitions", "type": "[]TopicPartition", "versions": "0+", |
| "about": "All topic partitions materialized by active tasks on the node" }, |
| { "name": "StandbyPartitions", "type": "[]TopicPartition", "versions": "0+", |
| "about": "All topic partitions materialized by standby tasks on the node" } |
| ] |
| } |
| ], |
| "commonStructs": [ |
| { "name": "Status", "versions": "0+", "fields": [ |
| // Possible status codes |
| // 0 - STALE_TOPOLOGY - The topology epoch supplied is lower than the topology epoch for this streams group. |
| // 1 - MISSING_SOURCE_TOPICS - One or more source topics are missing or a source topic regex resolves to zero topics. |
| // Missing topics are indicated in the StatusDetail. |
| // 2 - INCORRECTLY_PARTITIONED_TOPICS - One or more topics are incorrectly partitioned, that is, they are not copartitioned despite being |
| // part of a copartition group, or the number of partitions in a changelog topic does not correspond |
| // to the maximal number of source topic partition for that subtopology. |
| // Incorrectly partitioned topics are indicated in the StatusDetail. |
| // 3 - MISSING_INTERNAL_TOPICS - One or more internal topics are missing. |
| // Missing topics are indicated in the StatusDetail. |
| // The group coordinator will attempt to create all missing internal topics, if any errors occur during |
| // topic creation, this will be indicated in StatusDetail. |
| // 4 - SHUTDOWN_APPLICATION - A client requested the shutdown of the whole application. |
| { "name": "StatusCode", "type": "int8", "versions": "0+", |
| "about": "A code to indicate that a particular status is active for the group membership" }, |
| { "name": "StatusDetail", "type": "string", "versions": "0+", |
| "about": "A string representation of the status." } |
| ]}, |
| { "name": "TopicPartition", "versions": "0+", "fields": [ |
| { "name": "Topic", "type": "string", "versions": "0+", "entityType": "topicName", |
| "about": "topic name" }, |
| { "name": "Partitions", "type": "[]int32", "versions": "0+", |
| "about": "partitions" } |
| ]}, |
| { "name": "TaskIds", "versions": "0+", "fields": [ |
| { "name": "SubtopologyId", "type": "string", "versions": "0+", |
| "about": "The subtopology identifier." }, |
| { "name": "Partitions", "type": "[]int32", "versions": "0+", |
| "about": "The partitions of the input topics processed by this member." } |
| ]}, |
| { "name": "Endpoint", "versions": "0+", "fields": [ |
| { "name": "Host", "type": "string", "versions": "0+", |
| "about": "host of the endpoint" }, |
| { "name": "Port", "type": "uint16", "versions": "0+", |
| "about": "port of the endpoint" } |
| ]} |
| ] |
| } |