Skip to content

Revert "Merge pull request #29673 from redpanda-data/l1-readahead"#29757

Merged
oleiman merged 1 commit intoredpanda-data:devfrom
oleiman:ci/noticket/revert-l1-lookahead
Mar 5, 2026
Merged

Revert "Merge pull request #29673 from redpanda-data/l1-readahead"#29757
oleiman merged 1 commit intoredpanda-data:devfrom
oleiman:ci/noticket/revert-l1-lookahead

Conversation

@oleiman
Copy link
Copy Markdown
Member

@oleiman oleiman commented Mar 5, 2026

This reverts commit 2ea7c06, reversing changes made to 250b0f7.

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.3.x
  • v25.2.x
  • v25.1.x

Release Notes

  • none

@oleiman oleiman self-assigned this Mar 5, 2026
Copilot AI review requested due to automatic review settings March 5, 2026 03:26
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 reverts the previously introduced L1 “readahead/lookahead” functionality and the related “include object metadata” path for extent metadata fetching in the Cloud Topics L1 metastore/reader.

Changes:

  • Removes lookahead_objects from cloud_topic_log_reader_config and deletes the L1 reader lookahead buffer/code paths and associated tests.
  • Simplifies metastore::get_extent_metadata_forwards (and RPC equivalents) by removing the include_object_metadata parameter and stripping object_info from extent metadata.
  • Updates metastore implementations (simple/replicated/db/simple domain) and unit tests to match the reverted APIs.

Reviewed changes

Copilot reviewed 15 out of 15 changed files in this pull request and generated 1 comment.

Show a summary per file
File Description
src/v/cloud_topics/log_reader_config.h Removes L1 lookahead configuration field.
src/v/cloud_topics/level_one/metastore/metastore.h Removes include_object_metadata and object_info from extent metadata API/model.
src/v/cloud_topics/level_one/metastore/simple_metastore.{h,cc} Updates extent-metadata forward path to match reverted API and drops object metadata population.
src/v/cloud_topics/level_one/metastore/replicated_metastore.{h,cc} Updates forward extent-metadata RPC wrapper and conversion logic.
src/v/cloud_topics/level_one/metastore/rpc_types.h Removes object-metadata fields from extent metadata / request serialization.
src/v/cloud_topics/level_one/domain/{simple_domain_manager.cc,db_domain_manager.cc} Removes object-metadata mapping/fetching from extent metadata RPC handling.
src/v/cloud_topics/level_one/metastore/extent_metadata_reader.cc Updates call site for reverted metastore API.
src/v/cloud_topics/level_one/metastore/tests/simple_metastore_test.cc Updates tests for reverted API; removes object-metadata-specific test.
src/v/cloud_topics/level_one/frontend_reader/level_one_reader.{h,cc} Removes lookahead buffer and switches back to single-object lookup via get_first_ge.
src/v/cloud_topics/level_one/frontend_reader/tests/{l1_reader_fixture.h,reader_test.cc} Removes lookahead plumbing and tests.

Comment on lines 12 to 22
#include "cloud_topics/level_one/common/object_id.h"
#include "cloud_topics/level_one/metastore/domain_uuid.h"
#include "cloud_topics/level_one/metastore/offset_interval_set.h"
#include "cloud_topics/level_one/metastore/state_update.h"
#include "model/fundamental.h"
#include "serde/envelope.h"
#include "serde/rw/enum.h"
#include "serde/rw/envelope.h"
#include "serde/rw/optional.h"

#include <fmt/format.h>

Copy link

Copilot AI Mar 5, 2026

Choose a reason for hiding this comment

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

rpc_types.h still uses std::optional (e.g., get_compaction_info_reply::earliest_dirty_ts is serialized), but this diff removed both <optional> and serde/rw/optional.h. This will either fail to compile or rely on transitive includes/serde specializations. Re-add the missing includes (or otherwise ensure std::optional and its serde read/write support are directly included here).

Copilot uses AI. Check for mistakes.
@oleiman oleiman enabled auto-merge March 5, 2026 04:42
@piyushredpanda piyushredpanda disabled auto-merge March 5, 2026 04:42
…readahead"

This reverts commit 2ea7c06, reversing
changes made to 250b0f7.
@oleiman oleiman force-pushed the ci/noticket/revert-l1-lookahead branch from e14a60b to a54a229 Compare March 5, 2026 04:46
@oleiman oleiman removed the request for review from wdberkeley March 5, 2026 04:46
@vbotbuildovich
Copy link
Copy Markdown
Collaborator

CI test results

test results on build#81415
test_class test_method test_arguments test_kind job_url test_status passed reason test_history
QuotaManagementUpgradeTest test_upgrade null integration https://buildkite.com/redpanda/redpanda/builds/81415#019cbc59-efa1-4202-8d14-b2c5802d08c3 FLAKY 10/11 Test PASSES after retries.No significant increase in flaky rate(baseline=0.0369, p0=1.0000, reject_threshold=0.0100. adj_baseline=0.1066, p1=0.3239, trust_threshold=0.5000) https://redpanda.metabaseapp.com/dashboard/87-tests?tab=142-dt-individual-test-history&test_class=QuotaManagementUpgradeTest&test_method=test_upgrade
WriteCachingFailureInjectionE2ETest test_crash_all {"use_transactions": false} integration https://buildkite.com/redpanda/redpanda/builds/81415#019cbc58-9e76-401c-a4e3-9decd69c9efa FLAKY 9/11 Test PASSES after retries.No significant increase in flaky rate(baseline=0.0854, p0=0.5903, reject_threshold=0.0100. adj_baseline=0.2349, p1=0.2798, trust_threshold=0.5000) https://redpanda.metabaseapp.com/dashboard/87-tests?tab=142-dt-individual-test-history&test_class=WriteCachingFailureInjectionE2ETest&test_method=test_crash_all

@oleiman oleiman merged commit 2b30e1c into redpanda-data:dev Mar 5, 2026
19 checks passed
wdberkeley added a commit that referenced this pull request Mar 5, 2026
Re-applies the changes from #29673 (reverted in #29757) with a fix
for the TestGetExtentMetadataForwardsWithObjectMetadata test, which
needed preregister_objects calls after #29739 made preregistration
mandatory.
wdberkeley added a commit that referenced this pull request Mar 5, 2026
Re-applies the changes from #29673 (reverted in #29757) with two fixes:

1. TestGetExtentMetadataForwardsWithObjectMetadata now calls
   preregister_objects before add_objects, required after #29739 made
   preregistration mandatory.

2. l1_reader_cache::evict_stale() had a co_await inside its iteration
   loop. During suspension, take_reader() on the fetch scheduling group
   could erase entries from the intrusive list, invalidating the
   iterator. Fix by collecting stale readers without yielding, then
   closing them after the loop — matching the pattern already used by
   stop().
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.

4 participants