@@ -107,6 +107,22 @@ class OffsetFetchResponse_v1(Struct):
107
107
SCHEMA = OffsetFetchResponse_v0 .SCHEMA
108
108
109
109
110
+ class OffsetFetchResponse_v2 (Struct ):
111
+ # Added in KIP-88
112
+ API_KEY = 9
113
+ API_VERSION = 2
114
+ SCHEMA = Schema (
115
+ ('topics' , Array (
116
+ ('topic' , String ('utf-8' )),
117
+ ('partitions' , Array (
118
+ ('partition' , Int32 ),
119
+ ('offset' , Int64 ),
120
+ ('metadata' , String ('utf-8' )),
121
+ ('error_code' , Int16 ))))),
122
+ ('error_code' , Int16 )
123
+ )
124
+
125
+
110
126
class OffsetFetchRequest_v0 (Struct ):
111
127
API_KEY = 9
112
128
API_VERSION = 0 # zookeeper-backed storage
@@ -126,8 +142,20 @@ class OffsetFetchRequest_v1(Struct):
126
142
SCHEMA = OffsetFetchRequest_v0 .SCHEMA
127
143
128
144
129
- OffsetFetchRequest = [OffsetFetchRequest_v0 , OffsetFetchRequest_v1 ]
130
- OffsetFetchResponse = [OffsetFetchResponse_v0 , OffsetFetchResponse_v1 ]
145
+ class OffsetFetchRequest_v2 (Struct ):
146
+ # KIP-88: Allows passing null topics to return offsets for all partitions
147
+ # that the consumer group has a stored offset for, even if no consumer in
148
+ # the group is currently consuming that partition.
149
+ API_KEY = 9
150
+ API_VERSION = 2
151
+ RESPONSE_TYPE = OffsetFetchResponse_v2
152
+ SCHEMA = OffsetFetchRequest_v1 .SCHEMA
153
+
154
+
155
+ OffsetFetchRequest = [OffsetFetchRequest_v0 , OffsetFetchRequest_v1 ,
156
+ OffsetFetchRequest_v2 ]
157
+ OffsetFetchResponse = [OffsetFetchResponse_v0 , OffsetFetchResponse_v1 ,
158
+ OffsetFetchResponse_v2 ]
131
159
132
160
133
161
class GroupCoordinatorResponse_v0 (Struct ):
0 commit comments