Commit 9ced615
KAFKA-19589: Check for ability to skip position validation in application thread when collecting buffered data (#20324)
Introduces `PositionsValidator` which queries the assignment data from
the `SubscriptionState` from the application thread, allowing
`AsyncKafkaConsumer` to potentially avoid the need to wait.
The impetus for this change is the observation of these two points:
1. Waiting for the completion of
`OffsetsRequestManager.updateFetchPositions()` on the application thread
means either busy-waiting or blocking, either of which add significant
(~60%) CPU load to the `AsyncKafkaConsumer` compared to the
`ClassicKafkaConsumer`
2. In testing, data shows that 99.99+% of the time that
`OffsetsRequestManager.updateFetchPositions()` is called, the partitions
are up-to-date and there is no need to fetch offsets.
This patch allows the check for stable partitions to be made in the
application thread, resulting in far less waiting in the critical path
of `AsyncKafkaConsumer.poll()`.
Reviewers: Lianet Magrans <lmagrans@confluent.io>, Andrew Schofield
<aschofield@confluent.io>1 parent b514023 commit 9ced615
File tree
13 files changed
+267
-86
lines changed- clients/src
- main/java/org/apache/kafka/clients/consumer/internals
- events
- test/java/org/apache/kafka/clients/consumer/internals
- events
13 files changed
+267
-86
lines changedLines changed: 14 additions & 3 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
325 | 325 | | |
326 | 326 | | |
327 | 327 | | |
| 328 | + | |
328 | 329 | | |
329 | 330 | | |
330 | 331 | | |
| |||
429 | 430 | | |
430 | 431 | | |
431 | 432 | | |
| 433 | + | |
432 | 434 | | |
433 | 435 | | |
434 | 436 | | |
| |||
458 | 460 | | |
459 | 461 | | |
460 | 462 | | |
461 | | - | |
| 463 | + | |
| 464 | + | |
462 | 465 | | |
463 | 466 | | |
464 | 467 | | |
| |||
533 | 536 | | |
534 | 537 | | |
535 | 538 | | |
536 | | - | |
| 539 | + | |
| 540 | + | |
537 | 541 | | |
538 | 542 | | |
539 | 543 | | |
| |||
565 | 569 | | |
566 | 570 | | |
567 | 571 | | |
| 572 | + | |
568 | 573 | | |
569 | 574 | | |
570 | 575 | | |
| |||
624 | 629 | | |
625 | 630 | | |
626 | 631 | | |
| 632 | + | |
627 | 633 | | |
628 | 634 | | |
629 | 635 | | |
| |||
651 | 657 | | |
652 | 658 | | |
653 | 659 | | |
654 | | - | |
| 660 | + | |
| 661 | + | |
655 | 662 | | |
656 | 663 | | |
657 | 664 | | |
| |||
1930 | 1937 | | |
1931 | 1938 | | |
1932 | 1939 | | |
| 1940 | + | |
| 1941 | + | |
| 1942 | + | |
| 1943 | + | |
1933 | 1944 | | |
1934 | 1945 | | |
1935 | 1946 | | |
| |||
Lines changed: 1 addition & 1 deletion
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
115 | 115 | | |
116 | 116 | | |
117 | 117 | | |
118 | | - | |
| 118 | + | |
119 | 119 | | |
120 | 120 | | |
121 | 121 | | |
| |||
Lines changed: 19 additions & 40 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
47 | 47 | | |
48 | 48 | | |
49 | 49 | | |
50 | | - | |
51 | 50 | | |
52 | 51 | | |
53 | | - | |
54 | 52 | | |
55 | 53 | | |
56 | 54 | | |
| |||
62 | 60 | | |
63 | 61 | | |
64 | 62 | | |
| 63 | + | |
65 | 64 | | |
66 | 65 | | |
67 | | - | |
68 | | - | |
69 | | - | |
70 | | - | |
71 | | - | |
72 | | - | |
73 | | - | |
74 | 66 | | |
75 | 67 | | |
76 | 68 | | |
77 | 69 | | |
78 | 70 | | |
79 | 71 | | |
80 | | - | |
81 | 72 | | |
82 | 73 | | |
83 | 74 | | |
84 | 75 | | |
85 | 76 | | |
86 | 77 | | |
87 | 78 | | |
| 79 | + | |
| 80 | + | |
| 81 | + | |
| 82 | + | |
| 83 | + | |
| 84 | + | |
| 85 | + | |
| 86 | + | |
| 87 | + | |
| 88 | + | |
| 89 | + | |
| 90 | + | |
88 | 91 | | |
89 | 92 | | |
90 | 93 | | |
91 | 94 | | |
92 | 95 | | |
93 | 96 | | |
| 97 | + | |
94 | 98 | | |
95 | 99 | | |
96 | 100 | | |
| |||
168 | 172 | | |
169 | 173 | | |
170 | 174 | | |
171 | | - | |
172 | | - | |
173 | | - | |
174 | | - | |
175 | | - | |
176 | | - | |
177 | | - | |
178 | | - | |
179 | | - | |
180 | | - | |
181 | | - | |
182 | | - | |
183 | | - | |
184 | | - | |
185 | | - | |
186 | | - | |
187 | | - | |
188 | | - | |
189 | | - | |
190 | | - | |
191 | | - | |
| 175 | + | |
| 176 | + | |
192 | 177 | | |
193 | 178 | | |
194 | 179 | | |
195 | 180 | | |
196 | 181 | | |
197 | 182 | | |
198 | 183 | | |
199 | | - | |
200 | | - | |
201 | | - | |
202 | | - | |
203 | | - | |
204 | | - | |
205 | | - | |
| 184 | + | |
206 | 185 | | |
207 | 186 | | |
208 | 187 | | |
| |||
357 | 336 | | |
358 | 337 | | |
359 | 338 | | |
360 | | - | |
| 339 | + | |
361 | 340 | | |
362 | 341 | | |
363 | 342 | | |
| |||
367 | 346 | | |
368 | 347 | | |
369 | 348 | | |
370 | | - | |
| 349 | + | |
371 | 350 | | |
372 | 351 | | |
373 | 352 | | |
| |||
Lines changed: 8 additions & 7 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
119 | 119 | | |
120 | 120 | | |
121 | 121 | | |
| 122 | + | |
122 | 123 | | |
123 | 124 | | |
124 | 125 | | |
| |||
140 | 141 | | |
141 | 142 | | |
142 | 143 | | |
143 | | - | |
| 144 | + | |
144 | 145 | | |
145 | 146 | | |
146 | 147 | | |
| |||
231 | 232 | | |
232 | 233 | | |
233 | 234 | | |
234 | | - | |
235 | | - | |
| 235 | + | |
| 236 | + | |
236 | 237 | | |
237 | 238 | | |
238 | 239 | | |
| |||
243 | 244 | | |
244 | 245 | | |
245 | 246 | | |
246 | | - | |
| 247 | + | |
247 | 248 | | |
248 | 249 | | |
249 | 250 | | |
| |||
252 | 253 | | |
253 | 254 | | |
254 | 255 | | |
255 | | - | |
| 256 | + | |
256 | 257 | | |
257 | 258 | | |
258 | 259 | | |
| |||
262 | 263 | | |
263 | 264 | | |
264 | 265 | | |
265 | | - | |
| 266 | + | |
266 | 267 | | |
267 | 268 | | |
268 | 269 | | |
| |||
501 | 502 | | |
502 | 503 | | |
503 | 504 | | |
504 | | - | |
| 505 | + | |
505 | 506 | | |
506 | 507 | | |
507 | 508 | | |
| |||
0 commit comments