Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
32 commits
Select commit Hold shift + click to select a range
91c1c2e
cloud_topics/stm: don't pin truncation on an idle ctp_stm
sjust-redpanda Jun 11, 2026
a3a48c3
cloud_topics/stm: pre-install an idle ctp_stm on tiered-storage parti…
sjust-redpanda Jun 11, 2026
1702aa6
cloud_topics/stm: add explicit-log-offset advance_reconciled_offset o…
sjust-redpanda Jun 5, 2026
29f156c
archival: create the archival STM on cloud-topic partitions
sjust-redpanda Jun 5, 2026
52b9849
archival: clamp local-log trim while the manifest holds archived data
sjust-redpanda Jun 12, 2026
dfd6695
cluster: install the eviction STM on cloud-topic partitions
sjust-redpanda Jun 12, 2026
15928dd
cloud_storage: split offset_index into its own library
sjust-redpanda Jun 21, 2026
3f11ea1
cloud_topics/l1: carry tiered-storage segment metadata in L1
sjust-redpanda Jun 10, 2026
aee815e
cloud_topics/l1: add a per-partition migrating flag to the metastore
sjust-redpanda Jun 5, 2026
67e51da
cloud_topics/l1: register imported segments through add_objects
sjust-redpanda Jun 5, 2026
7ef5a71
cluster: carry partition_mode in partition_properties_stm
sjust-redpanda Jun 30, 2026
ec471e9
cloud_topics/l1: add a chunked data source
sjust-redpanda Jun 25, 2026
37e1b7c
cloud_topics/l1: read L1 objects through an open_object/object_handle…
sjust-redpanda Jun 16, 2026
ddd7509
cloud_topics/l1: add the imported tiered-storage reader and index types
sjust-redpanda Jun 16, 2026
95064cd
cloud_topics/l1: serve imported tiered-storage segments
sjust-redpanda Jul 3, 2026
6d22f75
cloud_topics/l1: delete an imported segment's tiered-storage objects
sjust-redpanda Jun 16, 2026
6304839
cloud_topics/l1: factor object removal into remove_objects()
sjust-redpanda Jun 5, 2026
ab2db05
features: add the tiered_to_cloud_migration feature
sjust-redpanda Jun 30, 2026
2f2be91
storage: split ntp_config storage mode into topic_mode and partition_…
sjust-redpanda Jun 30, 2026
c6652be
cluster/partition: feed partition_mode from partition_properties into…
sjust-redpanda Jun 30, 2026
5e671f5
cluster/partition: bootstrap partition_mode on leadership and creation
sjust-redpanda Jun 30, 2026
ad2bc8c
Merge PR0 (partition_mode substrate) into PR2 (STM coexistence) as th…
sjust-redpanda Jul 9, 2026
a83c523
cluster: report cloud high watermark for a trimmed-local-log tiered p…
sjust-redpanda Jul 1, 2026
cf888fb
tests: migrating partition is served transparently as tiered storage
sjust-redpanda Jul 1, 2026
87a3ca5
Merge PR3 (L1 metastore/reader + object removal) into PR4 as the PR5 …
sjust-redpanda Jul 9, 2026
c2bb3a2
storage: add ntp_config::is_migrating() migration-phase helper
sjust-redpanda Jul 1, 2026
9ba0d2f
cluster/partition: construct the archiver for a migrating partition
sjust-redpanda Jul 1, 2026
f2cb38c
cloud_topics: add the injected metastore sink for the migration mirror
sjust-redpanda Jun 6, 2026
301ba07
cluster: inject the migration metastore sink into partitions
sjust-redpanda Jun 6, 2026
d94273a
cluster/archival: add the tiered->cloud migration mirror to the archiver
sjust-redpanda Jul 1, 2026
e2fb933
cloud_topics: run housekeeping only on cloud topics
sjust-redpanda Jul 1, 2026
92593e6
cluster: cut a converged migrating partition over to a native cloud t…
sjust-redpanda Jul 1, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
30 changes: 30 additions & 0 deletions proto/redpanda/core/admin/internal/cloud_topics/v1/metastore.proto
Original file line number Diff line number Diff line change
Expand Up @@ -237,6 +237,34 @@ message MetadataValue {
int64 compaction_epoch = 3;
uint64 size = 4;
uint64 num_extents = 5;
// True while the partition is mid tiered->cloud migration.
bool migrating = 6;
}

// Where the backing tiered-storage segment of an imported object lives. An
// object property: the imported analog of a native object's id->bucket path.
message ImportedTsObjectLocation {
string ts_path = 1;
}

// Whether an imported tiered-storage segment has an aborted-transaction (.tx)
// manifest, resolved at import time so the read path need not probe object
// storage. UNKNOWN (v1/v2 non-compacted) => probe and tolerate a missing .tx.
enum ImportedTsTxManifestState {
IMPORTED_TS_TX_MANIFEST_STATE_UNKNOWN = 0;
IMPORTED_TS_TX_MANIFEST_STATE_ABSENT = 1;
IMPORTED_TS_TX_MANIFEST_STATE_PRESENT = 2;
}

// Properties of the data in an imported tiered-storage extent. An extent
// property, alongside the extent's Kafka offset bounds (base/last_offset).
message ImportedTsSegmentInfo {
int64 segment_term = 1;
// Offset-translation delta at the segment's base (source segment_meta's
// delta_offset).
int64 delta_base = 2;
// Whether the segment's .tx manifest exists (resolved at import time).
ImportedTsTxManifestState tx_state = 3;
}

// Value for an extent row.
Expand All @@ -246,6 +274,7 @@ message ExtentValue {
uint64 filepos = 3;
uint64 len = 4;
string object_id = 5;
optional ImportedTsSegmentInfo imported_ts_info = 6;
}

// Value for a term row.
Expand Down Expand Up @@ -280,6 +309,7 @@ message ObjectValue {
uint64 object_size = 4;
int64 last_updated = 5;
bool is_preregistration = 6;
optional ImportedTsObjectLocation imported_ts_location = 7;
}

// A typed value for a metastore row.
Expand Down
27 changes: 27 additions & 0 deletions src/v/cloud_storage/BUILD
Original file line number Diff line number Diff line change
Expand Up @@ -86,6 +86,32 @@ redpanda_cc_library(
],
)

redpanda_cc_library(
name = "offset_index",
srcs = [
"offset_index.cc",
],
hdrs = [
"offset_index.h",
],
implementation_deps = [
":logger",
"//src/v/base",
"//src/v/bytes:iobuf_parser",
"//src/v/serde",
"//src/v/serde:iobuf",
"//src/v/serde:vector",
"@seastar",
],
visibility = ["//visibility:public"],
deps = [
"//src/v/bytes:iobuf",
"//src/v/model",
"//src/v/utils:delta_for",
"@abseil-cpp//absl/container:btree",
],
)

redpanda_cc_library(
name = "cloud_storage",
srcs = [
Expand Down Expand Up @@ -183,6 +209,7 @@ redpanda_cc_library(
visibility = ["//visibility:public"],
deps = [
":logger",
":offset_index",
":remote_label",
":segment_meta_cstore",
":topic_mount_manifest_path",
Expand Down
Loading