Skip to content

[CORE-13383] Implement KIP-709: offset fetch v8#27794

Merged
BenPope merged 9 commits intoredpanda-data:devfrom
BenPope:core-13383-kip-709-offset-fetch-v8
Oct 7, 2025
Merged

[CORE-13383] Implement KIP-709: offset fetch v8#27794
BenPope merged 9 commits intoredpanda-data:devfrom
BenPope:core-13383-kip-709-offset-fetch-v8

Conversation

@BenPope
Copy link
Copy Markdown
Member

@BenPope BenPope commented Sep 29, 2025

This PR implements KIP-709 for offset fetch version 8, enabling support for fetching offsets for multiple consumer groups in a single request. Currently, the implementation runs tests against version 7 to verify existing functionality isn't broken.

Key changes:

  • Extends the offset fetch protocol to support multiple groups in a single request
  • Updates data structures to use chunked_vector for better memory efficiency
  • Adds new protocol schema definitions for v8 request/response structures

Backports Required

  • none - not a bug fix
  • none - this is a backport
  • none - issue does not exist in previous branches
  • none - papercut/not impactful enough to backport
  • v25.2.x
  • v25.1.x
  • v24.3.x

Release Notes

Features

  • Support KIP-709

Signed-off-by: Ben Pope <ben@redpanda.com>
@BenPope BenPope self-assigned this Sep 29, 2025
Copilot AI review requested due to automatic review settings September 29, 2025 19:29
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull Request Overview

This PR implements KIP-709 for offset fetch version 8, enabling support for fetching offsets for multiple consumer groups in a single request. Currently, the implementation runs tests against version 7 to verify existing functionality isn't broken.

Key changes:

  • Extends the offset fetch protocol to support multiple groups in a single request
  • Updates data structures to use chunked_vector for better memory efficiency
  • Adds new protocol schema definitions for v8 request/response structures

Reviewed Changes

Copilot reviewed 19 out of 19 changed files in this pull request and generated 4 comments.

Show a summary per file
File Description
src/v/pandaproxy/json/requests/offset_fetch.h Updates return type to use chunked_vector
src/v/kafka/server/tests/offset_fetch_test.cc Adds comprehensive test coverage for all supported versions including v8+
src/v/kafka/server/tests/BUILD Adds dependency for server code in tests
src/v/kafka/server/server.cc Core implementation of v8 protocol with request/response conversion logic
src/v/kafka/server/group_router.h Updates method signature to pass by value
src/v/kafka/server/group_router.cc Implements multi-group routing logic
src/v/kafka/server/group_manager.h Updates method signature
src/v/kafka/server/group_manager.cc Implements multi-group offset fetch handling
src/v/kafka/server/group.h Updates method signature and return type
src/v/kafka/server/group.cc Implements single-group offset fetch logic
src/v/kafka/protocol/schemata/offset_fetch_response.json Schema definition for v8 response
src/v/kafka/protocol/schemata/offset_fetch_request.json Schema definition for v8 request
src/v/kafka/protocol/schemata/generator.py Updates code generation for new structures
src/v/kafka/protocol/offset_fetch.h Updates response construction helpers
src/v/kafka/client/test/consumer_group.cc Updates client test code
src/v/kafka/client/consumer.h Updates consumer interface
src/v/kafka/client/consumer.cc Updates consumer implementation
src/v/kafka/client/client.h Updates client interface
src/v/kafka/client/client.cc Updates client implementation

@BenPope BenPope force-pushed the core-13383-kip-709-offset-fetch-v8 branch 2 times, most recently from 4152bac to f3fa1ac Compare September 29, 2025 21:26
@vbotbuildovich
Copy link
Copy Markdown
Collaborator

vbotbuildovich commented Sep 29, 2025

Retry command for Build#73193

please wait until all jobs are finished before running the slash command

/ci-repeat 1
tests/rptest/tests/consumer_group_test.py::ConsumerGroupTest.test_group_recovery
tests/rptest/tests/cluster_linking_e2e_test.py::ShadowLinkingReplicationTests.test_replication_basic@{"shuffle_leadership":false,"source_cluster_spec":{"cluster_type":"kafka","kafka_quorum":"COMBINED_KRAFT","kafka_version":"3.8.0"}}
tests/rptest/tests/write_caching_fi_e2e_test.py::WriteCachingFailureInjectionE2ETest.test_crash_all_with_consumer_group
tests/rptest/tests/cluster_linking_e2e_test.py::ShadowLinkingReplicationTests.test_replication_basic@{"shuffle_leadership":true,"source_cluster_spec":{"cluster_type":"kafka","kafka_quorum":"COMBINED_KRAFT","kafka_version":"3.8.0"}}
tests/rptest/tests/cluster_linking_e2e_test.py::ShadowLinkConsumeGroupsMirroringTest.test_consumer_groups_mirroring@{"source_cluster_spec":{"cluster_type":"kafka","kafka_quorum":"COMBINED_KRAFT","kafka_version":"3.8.0"}}
tests/rptest/tests/cluster_linking_e2e_test.py::ShadowLinkConsumeGroupsMirroringTest.test_continuous_group_sync@{"source_cluster_spec":{"cluster_type":"kafka","kafka_quorum":"COMBINED_KRAFT","kafka_version":"3.8.0"},"with_failures":false}

@vbotbuildovich
Copy link
Copy Markdown
Collaborator

vbotbuildovich commented Sep 30, 2025

CI test results

test results on build#73193
test_class test_method test_arguments test_kind job_url test_status passed reason test_history
ShadowLinkConsumeGroupsMirroringTest test_consumer_groups_mirroring {"source_cluster_spec": {"cluster_type": "kafka", "kafka_quorum": "COMBINED_KRAFT", "kafka_version": "3.8.0"}} integration https://buildkite.com/redpanda/redpanda/builds/73193#0199978b-6f37-4c8c-9b18-86a93bba7342 FAIL 0/21 The test has failed across all retries https://redpanda.metabaseapp.com/dashboard/87-tests?tab=142-dt-individual-test-history&test_class=ShadowLinkConsumeGroupsMirroringTest&test_method=test_consumer_groups_mirroring
ShadowLinkConsumeGroupsMirroringTest test_consumer_groups_mirroring {"source_cluster_spec": {"cluster_type": "kafka", "kafka_quorum": "COMBINED_KRAFT", "kafka_version": "3.8.0"}} integration https://buildkite.com/redpanda/redpanda/builds/73193#0199978f-18f6-454e-bcc1-2cb0fbc58d08 FAIL 0/21 The test has failed across all retries https://redpanda.metabaseapp.com/dashboard/87-tests?tab=142-dt-individual-test-history&test_class=ShadowLinkConsumeGroupsMirroringTest&test_method=test_consumer_groups_mirroring
ShadowLinkConsumeGroupsMirroringTest test_continuous_group_sync {"source_cluster_spec": {"cluster_type": "kafka", "kafka_quorum": "COMBINED_KRAFT", "kafka_version": "3.8.0"}, "with_failures": false} integration https://buildkite.com/redpanda/redpanda/builds/73193#0199978b-6f39-4a01-a5e2-667390119746 FAIL 0/21 The test has failed across all retries https://redpanda.metabaseapp.com/dashboard/87-tests?tab=142-dt-individual-test-history&test_class=ShadowLinkConsumeGroupsMirroringTest&test_method=test_continuous_group_sync
ShadowLinkConsumeGroupsMirroringTest test_continuous_group_sync {"source_cluster_spec": {"cluster_type": "kafka", "kafka_quorum": "COMBINED_KRAFT", "kafka_version": "3.8.0"}, "with_failures": false} integration https://buildkite.com/redpanda/redpanda/builds/73193#0199978f-18f8-4e2b-bc6d-b6529bd656d0 FAIL 0/21 The test has failed across all retries https://redpanda.metabaseapp.com/dashboard/87-tests?tab=142-dt-individual-test-history&test_class=ShadowLinkConsumeGroupsMirroringTest&test_method=test_continuous_group_sync
ShadowLinkingReplicationTests test_replication_basic {"shuffle_leadership": false, "source_cluster_spec": {"cluster_type": "kafka", "kafka_quorum": "COMBINED_KRAFT", "kafka_version": "3.8.0"}} integration https://buildkite.com/redpanda/redpanda/builds/73193#0199978b-6f34-45b8-906d-3ac0f4adf2fb FAIL 0/21 The test has failed across all retries https://redpanda.metabaseapp.com/dashboard/87-tests?tab=142-dt-individual-test-history&test_class=ShadowLinkingReplicationTests&test_method=test_replication_basic
ShadowLinkingReplicationTests test_replication_basic {"shuffle_leadership": false, "source_cluster_spec": {"cluster_type": "kafka", "kafka_quorum": "COMBINED_KRAFT", "kafka_version": "3.8.0"}} integration https://buildkite.com/redpanda/redpanda/builds/73193#0199978f-18f4-457c-bd3f-c364147673cd FAIL 0/21 The test has failed across all retries https://redpanda.metabaseapp.com/dashboard/87-tests?tab=142-dt-individual-test-history&test_class=ShadowLinkingReplicationTests&test_method=test_replication_basic
ShadowLinkingReplicationTests test_replication_basic {"shuffle_leadership": true, "source_cluster_spec": {"cluster_type": "kafka", "kafka_quorum": "COMBINED_KRAFT", "kafka_version": "3.8.0"}} integration https://buildkite.com/redpanda/redpanda/builds/73193#0199978b-6f37-4c8c-9b18-86a93bba7342 FAIL 0/21 The test has failed across all retries https://redpanda.metabaseapp.com/dashboard/87-tests?tab=142-dt-individual-test-history&test_class=ShadowLinkingReplicationTests&test_method=test_replication_basic
ShadowLinkingReplicationTests test_replication_basic {"shuffle_leadership": true, "source_cluster_spec": {"cluster_type": "kafka", "kafka_quorum": "COMBINED_KRAFT", "kafka_version": "3.8.0"}} integration https://buildkite.com/redpanda/redpanda/builds/73193#0199978f-18f6-454e-bcc1-2cb0fbc58d08 FAIL 0/21 The test has failed across all retries https://redpanda.metabaseapp.com/dashboard/87-tests?tab=142-dt-individual-test-history&test_class=ShadowLinkingReplicationTests&test_method=test_replication_basic
ConsumerGroupTest test_group_recovery null integration https://buildkite.com/redpanda/redpanda/builds/73193#0199978b-6f35-4209-92fc-4298c36792f7 FAIL 0/21 The test has failed across all retries https://redpanda.metabaseapp.com/dashboard/87-tests?tab=142-dt-individual-test-history&test_class=ConsumerGroupTest&test_method=test_group_recovery
ConsumerGroupTest test_group_recovery null integration https://buildkite.com/redpanda/redpanda/builds/73193#0199978f-18f4-4b28-b627-6b3ba62ccb6b FAIL 0/21 https://redpanda.metabaseapp.com/dashboard/87-tests?tab=142-dt-individual-test-history&test_class=ConsumerGroupTest&test_method=test_group_recovery
WriteCachingFailureInjectionE2ETest test_crash_all_with_consumer_group null integration https://buildkite.com/redpanda/redpanda/builds/73193#0199978b-6f34-45b8-906d-3ac0f4adf2fb FAIL 0/21 The test has failed across all retries https://redpanda.metabaseapp.com/dashboard/87-tests?tab=142-dt-individual-test-history&test_class=WriteCachingFailureInjectionE2ETest&test_method=test_crash_all_with_consumer_group
WriteCachingFailureInjectionE2ETest test_crash_all_with_consumer_group null integration https://buildkite.com/redpanda/redpanda/builds/73193#0199978f-18f4-457c-bd3f-c364147673cd FAIL 0/21 The test has failed across all retries https://redpanda.metabaseapp.com/dashboard/87-tests?tab=142-dt-individual-test-history&test_class=WriteCachingFailureInjectionE2ETest&test_method=test_crash_all_with_consumer_group
test results on build#73226
test_class test_method test_arguments test_kind job_url test_status passed reason test_history
ShadowLinkConsumeGroupsMirroringTest test_consumer_groups_mirroring {"source_cluster_spec": {"cluster_type": "kafka", "kafka_quorum": "COMBINED_KRAFT", "kafka_version": "3.8.0"}} integration https://buildkite.com/redpanda/redpanda/builds/73226#01999a86-898a-4fe5-835c-6e36a40b87e8 FAIL 0/21 The test has failed across all retries https://redpanda.metabaseapp.com/dashboard/87-tests?tab=142-dt-individual-test-history&test_class=ShadowLinkConsumeGroupsMirroringTest&test_method=test_consumer_groups_mirroring
ShadowLinkConsumeGroupsMirroringTest test_consumer_groups_mirroring {"source_cluster_spec": {"cluster_type": "kafka", "kafka_quorum": "COMBINED_KRAFT", "kafka_version": "3.8.0"}} integration https://buildkite.com/redpanda/redpanda/builds/73226#01999a87-1dca-4fd3-b799-821598327d38 FAIL 0/21 The test has failed across all retries https://redpanda.metabaseapp.com/dashboard/87-tests?tab=142-dt-individual-test-history&test_class=ShadowLinkConsumeGroupsMirroringTest&test_method=test_consumer_groups_mirroring
ShadowLinkConsumeGroupsMirroringTest test_continuous_group_sync {"source_cluster_spec": {"cluster_type": "kafka", "kafka_quorum": "COMBINED_KRAFT", "kafka_version": "3.8.0"}, "with_failures": false} integration https://buildkite.com/redpanda/redpanda/builds/73226#01999a86-898a-4fe5-835c-6e36a40b87e8 FAIL 0/21 The test has failed across all retries https://redpanda.metabaseapp.com/dashboard/87-tests?tab=142-dt-individual-test-history&test_class=ShadowLinkConsumeGroupsMirroringTest&test_method=test_continuous_group_sync
ShadowLinkConsumeGroupsMirroringTest test_continuous_group_sync {"source_cluster_spec": {"cluster_type": "kafka", "kafka_quorum": "COMBINED_KRAFT", "kafka_version": "3.8.0"}, "with_failures": false} integration https://buildkite.com/redpanda/redpanda/builds/73226#01999a87-1dca-4fd3-b799-821598327d38 FAIL 0/21 The test has failed across all retries https://redpanda.metabaseapp.com/dashboard/87-tests?tab=142-dt-individual-test-history&test_class=ShadowLinkConsumeGroupsMirroringTest&test_method=test_continuous_group_sync
ShadowLinkingReplicationTests test_replication_basic {"shuffle_leadership": false, "source_cluster_spec": {"cluster_type": "kafka", "kafka_quorum": "COMBINED_KRAFT", "kafka_version": "3.8.0"}} integration https://buildkite.com/redpanda/redpanda/builds/73226#01999a86-898a-4fe5-835c-6e36a40b87e8 FAIL 0/21 The test has failed across all retries https://redpanda.metabaseapp.com/dashboard/87-tests?tab=142-dt-individual-test-history&test_class=ShadowLinkingReplicationTests&test_method=test_replication_basic
ShadowLinkingReplicationTests test_replication_basic {"shuffle_leadership": false, "source_cluster_spec": {"cluster_type": "kafka", "kafka_quorum": "COMBINED_KRAFT", "kafka_version": "3.8.0"}} integration https://buildkite.com/redpanda/redpanda/builds/73226#01999a87-1dca-4fd3-b799-821598327d38 FAIL 0/21 The test has failed across all retries https://redpanda.metabaseapp.com/dashboard/87-tests?tab=142-dt-individual-test-history&test_class=ShadowLinkingReplicationTests&test_method=test_replication_basic
ShadowLinkingReplicationTests test_replication_basic {"shuffle_leadership": true, "source_cluster_spec": {"cluster_type": "kafka", "kafka_quorum": "COMBINED_KRAFT", "kafka_version": "3.8.0"}} integration https://buildkite.com/redpanda/redpanda/builds/73226#01999a86-898a-4fe5-835c-6e36a40b87e8 FAIL 0/21 The test has failed across all retries https://redpanda.metabaseapp.com/dashboard/87-tests?tab=142-dt-individual-test-history&test_class=ShadowLinkingReplicationTests&test_method=test_replication_basic
ShadowLinkingReplicationTests test_replication_basic {"shuffle_leadership": true, "source_cluster_spec": {"cluster_type": "kafka", "kafka_quorum": "COMBINED_KRAFT", "kafka_version": "3.8.0"}} integration https://buildkite.com/redpanda/redpanda/builds/73226#01999a87-1dca-4fd3-b799-821598327d38 FAIL 0/21 The test has failed across all retries https://redpanda.metabaseapp.com/dashboard/87-tests?tab=142-dt-individual-test-history&test_class=ShadowLinkingReplicationTests&test_method=test_replication_basic
ConsumerGroupTest test_group_recovery null integration https://buildkite.com/redpanda/redpanda/builds/73226#01999a86-898a-4fe5-835c-6e36a40b87e8 FAIL 0/21 The test has failed across all retries https://redpanda.metabaseapp.com/dashboard/87-tests?tab=142-dt-individual-test-history&test_class=ConsumerGroupTest&test_method=test_group_recovery
ConsumerGroupTest test_group_recovery null integration https://buildkite.com/redpanda/redpanda/builds/73226#01999a87-1dca-4fd3-b799-821598327d38 FAIL 0/21 The test has failed across all retries https://redpanda.metabaseapp.com/dashboard/87-tests?tab=142-dt-individual-test-history&test_class=ConsumerGroupTest&test_method=test_group_recovery
WriteCachingFailureInjectionE2ETest test_crash_all_with_consumer_group null integration https://buildkite.com/redpanda/redpanda/builds/73226#01999a86-898a-4fe5-835c-6e36a40b87e8 FAIL 0/21 The test has failed across all retries https://redpanda.metabaseapp.com/dashboard/87-tests?tab=142-dt-individual-test-history&test_class=WriteCachingFailureInjectionE2ETest&test_method=test_crash_all_with_consumer_group
WriteCachingFailureInjectionE2ETest test_crash_all_with_consumer_group null integration https://buildkite.com/redpanda/redpanda/builds/73226#01999a87-1dca-4fd3-b799-821598327d38 FAIL 0/21 The test has failed across all retries https://redpanda.metabaseapp.com/dashboard/87-tests?tab=142-dt-individual-test-history&test_class=WriteCachingFailureInjectionE2ETest&test_method=test_crash_all_with_consumer_group
test results on build#73332
test_class test_method test_arguments test_kind job_url test_status passed reason test_history
ShadowLinkingReplicationTests test_replication_basic {"shuffle_leadership": true, "source_cluster_spec": {"cluster_type": "kafka", "kafka_quorum": "COMBINED_KRAFT", "kafka_version": "3.8.0"}} integration https://buildkite.com/redpanda/redpanda/builds/73332#01999fd4-164d-4e90-8624-acc0e627cc4f FLAKY 20/21 upstream reliability is '100.0'. current run reliability is '95.23809523809523'. drift is 4.7619 and the allowed drift is set to 50. The test should PASS https://redpanda.metabaseapp.com/dashboard/87-tests?tab=142-dt-individual-test-history&test_class=ShadowLinkingReplicationTests&test_method=test_replication_basic
DataMigrationsApiTest test_migrated_topic_data_integrity {"include_groups": false, "params": {"cancellation": {"dir": "in", "stage": "prepared"}, "use_alias": false}, "transfer_leadership": true} integration https://buildkite.com/redpanda/redpanda/builds/73332#01999fcf-4fcf-4737-ae15-ab7a9b2f4c9c FLAKY 20/21 upstream reliability is '100.0'. current run reliability is '95.23809523809523'. drift is 4.7619 and the allowed drift is set to 50. The test should PASS https://redpanda.metabaseapp.com/dashboard/87-tests?tab=142-dt-individual-test-history&test_class=DataMigrationsApiTest&test_method=test_migrated_topic_data_integrity
RapidTopicRecreateTest test_topic_rapid_recreation null integration https://buildkite.com/redpanda/redpanda/builds/73332#01999fcf-4fd5-4981-b328-3107e95743a9 FLAKY 20/21 upstream reliability is '99.50372208436724'. current run reliability is '95.23809523809523'. drift is 4.26563 and the allowed drift is set to 50. The test should PASS https://redpanda.metabaseapp.com/dashboard/87-tests?tab=142-dt-individual-test-history&test_class=RapidTopicRecreateTest&test_method=test_topic_rapid_recreation
test results on build#73626
test_class test_method test_arguments test_kind job_url test_status passed reason test_history
ShadowLinkingReplicationTests test_replication_basic {"shuffle_leadership": false, "source_cluster_spec": {"cluster_type": "kafka", "kafka_quorum": "COMBINED_KRAFT", "kafka_version": "3.8.0"}} integration https://buildkite.com/redpanda/redpanda/builds/73626#0199b9b7-eb1f-4ad8-b575-becb4227ffd1 FLAKY 19/21 upstream reliability is '96.21212121212122'. current run reliability is '90.47619047619048'. drift is 5.73593 and the allowed drift is set to 50. The test should PASS https://redpanda.metabaseapp.com/dashboard/87-tests?tab=142-dt-individual-test-history&test_class=ShadowLinkingReplicationTests&test_method=test_replication_basic
SegmentMsTest test_segment_rolling_with_retention_consumer null integration https://buildkite.com/redpanda/redpanda/builds/73626#0199b9b2-7e1f-475b-afdd-cd5a36042862 FLAKY 16/21 upstream reliability is '98.76237623762376'. current run reliability is '76.19047619047619'. drift is 22.5719 and the allowed drift is set to 50. The test should PASS https://redpanda.metabaseapp.com/dashboard/87-tests?tab=142-dt-individual-test-history&test_class=SegmentMsTest&test_method=test_segment_rolling_with_retention_consumer

@BenPope
Copy link
Copy Markdown
Member Author

BenPope commented Sep 30, 2025

/ci-repeat 1
tests/rptest/tests/consumer_group_test.py::ConsumerGroupTest.test_group_recovery
tests/rptest/tests/cluster_linking_e2e_test.py::ShadowLinkingReplicationTests.test_replication_basic@{"shuffle_leadership":false,"source_cluster_spec":{"cluster_type":"kafka","kafka_quorum":"COMBINED_KRAFT","kafka_version":"3.8.0"}}
tests/rptest/tests/write_caching_fi_e2e_test.py::WriteCachingFailureInjectionE2ETest.test_crash_all_with_consumer_group
tests/rptest/tests/cluster_linking_e2e_test.py::ShadowLinkingReplicationTests.test_replication_basic@{"shuffle_leadership":true,"source_cluster_spec":{"cluster_type":"kafka","kafka_quorum":"COMBINED_KRAFT","kafka_version":"3.8.0"}}
tests/rptest/tests/cluster_linking_e2e_test.py::ShadowLinkConsumeGroupsMirroringTest.test_consumer_groups_mirroring@{"source_cluster_spec":{"cluster_type":"kafka","kafka_quorum":"COMBINED_KRAFT","kafka_version":"3.8.0"}}
tests/rptest/tests/cluster_linking_e2e_test.py::ShadowLinkConsumeGroupsMirroringTest.test_continuous_group_sync@{"source_cluster_spec":{"cluster_type":"kafka","kafka_quorum":"COMBINED_KRAFT","kafka_version":"3.8.0"},"with_failures":false}

@vbotbuildovich
Copy link
Copy Markdown
Collaborator

vbotbuildovich commented Sep 30, 2025

Retry command for Build#73226

please wait until all jobs are finished before running the slash command

/ci-repeat 1
tests/rptest/tests/cluster_linking_e2e_test.py::ShadowLinkConsumeGroupsMirroringTest.test_consumer_groups_mirroring@{"source_cluster_spec":{"cluster_type":"kafka","kafka_quorum":"COMBINED_KRAFT","kafka_version":"3.8.0"}}
tests/rptest/tests/cluster_linking_e2e_test.py::ShadowLinkingReplicationTests.test_replication_basic@{"shuffle_leadership":false,"source_cluster_spec":{"cluster_type":"kafka","kafka_quorum":"COMBINED_KRAFT","kafka_version":"3.8.0"}}
tests/rptest/tests/consumer_group_test.py::ConsumerGroupTest.test_group_recovery
tests/rptest/tests/cluster_linking_e2e_test.py::ShadowLinkingReplicationTests.test_replication_basic@{"shuffle_leadership":true,"source_cluster_spec":{"cluster_type":"kafka","kafka_quorum":"COMBINED_KRAFT","kafka_version":"3.8.0"}}
tests/rptest/tests/write_caching_fi_e2e_test.py::WriteCachingFailureInjectionE2ETest.test_crash_all_with_consumer_group
tests/rptest/tests/cluster_linking_e2e_test.py::ShadowLinkConsumeGroupsMirroringTest.test_continuous_group_sync@{"source_cluster_spec":{"cluster_type":"kafka","kafka_quorum":"COMBINED_KRAFT","kafka_version":"3.8.0"},"with_failures":false}

Pin cluster_link to v7 for now, since that's what it supports.

Signed-off-by: Ben Pope <ben@redpanda.com>
No functional change.

* Make the constructors explicit
* Take the sink parameter by value, to make the callsite obvious
* Extract get_topics to a general function

Signed-off-by: Ben Pope <ben@redpanda.com>
@BenPope BenPope force-pushed the core-13383-kip-709-offset-fetch-v8 branch 2 times, most recently from c8f19a1 to 2e1cb0a Compare October 1, 2025 15:08
@BenPope BenPope marked this pull request as draft October 1, 2025 15:08
@BenPope BenPope force-pushed the core-13383-kip-709-offset-fetch-v8 branch from 2e1cb0a to ceb254c Compare October 1, 2025 15:10
@BenPope BenPope marked this pull request as ready for review October 1, 2025 15:10
if (api_version < version_with_groups) {
check_response_topics(resp.data, all_topics);
} else {
BOOST_REQUIRE_EQUAL(resp.data.groups.size(), 1);
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can you add a test case with >1 groups?

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can you add a test case with >1 groups?

Done

joe-redpanda
joe-redpanda previously approved these changes Oct 2, 2025
Copy link
Copy Markdown
Contributor

@joe-redpanda joe-redpanda left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Minor comments, otherwise looks good

Comment on lines +1131 to +1134
vassert(
res.data.groups.size() == 1,
"Only single group fetch is supported in v{}",
target_version);
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I would remove this assertion as it depends on user input ?

Copy link
Copy Markdown
Member Author

@BenPope BenPope Oct 6, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I would remove this assertion as it depends on user input ?

It depends on:

  • Deserialization
  • The logic for offset fetch

It shouldn't be possible to have not 1 group in version <= 8, but I've changed it from an assert anyway.

mmaslankaprv
mmaslankaprv previously approved these changes Oct 3, 2025
Signed-off-by: Ben Pope <ben@redpanda.com>
Signed-off-by: Ben Pope <ben@redpanda.com>
No functional change.

* Extract functionality into functions.

Signed-off-by: Ben Pope <ben@redpanda.com>
No functional change.

* Reorder functions

Signed-off-by: Ben Pope <ben@redpanda.com>
In preperation for offset_fetch v8, which allows multiple groups
to be requested, implement everything as if it were v8.

If the incoming request is < v8, then convert the request to latest,
and the response to the version that was requested.

Signed-off-by: Ben Pope <ben@redpanda.com>
Signed-off-by: Ben Pope <ben@redpanda.com>
@BenPope BenPope dismissed stale reviews from mmaslankaprv and joe-redpanda via 4555fe5 October 6, 2025 12:39
@BenPope BenPope force-pushed the core-13383-kip-709-offset-fetch-v8 branch from ceb254c to 4555fe5 Compare October 6, 2025 12:39
@BenPope
Copy link
Copy Markdown
Member Author

BenPope commented Oct 6, 2025

Changes in force-push

  • Do not assert if there is not one group
  • Add tests for AuthZ and multiple groups (tests are rewritten)
  • Fix incorrect error code for topic auth.

@BenPope BenPope merged commit 2cc7c33 into redpanda-data:dev Oct 7, 2025
18 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

6 participants