Skip to content

Commit 497c3c6

Browse files
Merge branch 'v25.3.x' into manual-backport-28935-v25.3.x-95
2 parents 3a23e35 + 0a7b2c6 commit 497c3c6

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

58 files changed

+900
-311
lines changed

.github/workflows/dispatch-api-docs.yml renamed to .github/workflows/dispatch-docs-updates.yml

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
---
2-
name: Dispatch Admin API docs update on latest release
2+
name: Dispatch docs updates on latest release
33

44
on:
55
release:
@@ -51,8 +51,8 @@ jobs:
5151
echo "is_latest=false" >> $GITHUB_OUTPUT
5252
fi
5353
54-
# Dispatch to docs repo if latest
55-
- name: Dispatch to docs repo
54+
# Dispatch to api-docs repo if latest
55+
- name: Dispatch to api-docs repo
5656
if: steps.latest.outputs.is_latest == 'true'
5757
uses: peter-evans/repository-dispatch@v3
5858
with:
@@ -61,3 +61,14 @@ jobs:
6161
event-type: redpanda-openapi-bundle
6262
client-payload: |
6363
{ "tag": "${{ github.event.release.tag_name }}" }
64+
65+
# Dispatch to docs repo for property docs generation if latest
66+
- name: Dispatch property docs generation to docs repo
67+
if: steps.latest.outputs.is_latest == 'true'
68+
uses: peter-evans/repository-dispatch@v3
69+
with:
70+
token: ${{ env.ACTIONS_BOT_TOKEN }}
71+
repository: redpanda-data/docs
72+
event-type: trigger-property-docs-generation
73+
client-payload: |
74+
{ "tag": "${{ github.event.release.tag_name }}" }

MODULE.bazel.lock

Lines changed: 4 additions & 4 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

bazel/repositories.bzl

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -40,9 +40,9 @@ def data_dependency():
4040
http_archive(
4141
name = "c-ares",
4242
build_file = "//bazel/thirdparty:c-ares.BUILD",
43-
sha256 = "7d935790e9af081c25c495fd13c2cfcda4792983418e96358ef6e7320ee06346",
44-
strip_prefix = "c-ares-1.34.5",
45-
url = "https://vectorized-public.s3.amazonaws.com/dependencies/c-ares-1.34.5.tar.gz",
43+
sha256 = "912dd7cc3b3e8a79c52fd7fb9c0f4ecf0aaa73e45efda880266a2d6e26b84ef5",
44+
strip_prefix = "c-ares-1.34.6",
45+
url = "https://vectorized-public.s3.amazonaws.com/dependencies/c-ares-1.34.6.tar.gz",
4646
)
4747

4848
http_archive(

src/go/rpk/pkg/cli/shadow/describe.go

Lines changed: 24 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ const (
3434
secTopicSync = "Topic Sync"
3535
secConsumerOffset = "Consumer Offset Sync"
3636
secSecurity = "Security Sync"
37+
secSchemaRegistry = "Schema Registry Sync"
3738
)
3839

3940
func newDescribeCommand(fs afero.Fs, p *config.Params) *cobra.Command {
@@ -109,6 +110,7 @@ Display only the client configuration:
109110
cmd.Flags().BoolVarP(&opts.topic, "print-topic", "t", false, "Print the detailed topic configuration section")
110111
cmd.Flags().BoolVarP(&opts.co, "print-consumer", "r", false, "Print the detailed consumer offset configuration section")
111112
cmd.Flags().BoolVarP(&opts.sec, "print-security", "s", false, "Print the detailed security configuration section")
113+
cmd.Flags().BoolVarP(&opts.sr, "print-registry", "y", false, "Print the detailed schema registry configuration section")
112114
cmd.Flags().BoolVarP(&opts.all, "print-all", "a", false, "Print all sections")
113115
return cmd
114116
}
@@ -120,16 +122,17 @@ type slDescribeOptions struct {
120122
topic bool
121123
co bool // consumer offset
122124
sec bool // security
125+
sr bool // schema registry
123126
}
124127

125128
// If no flags are set, default to overview and client sections.
126129
func (o *slDescribeOptions) defaultOrAll() {
127-
if !o.all && !o.overview && !o.client && !o.topic && !o.co && !o.sec {
130+
if !o.all && !o.overview && !o.client && !o.topic && !o.co && !o.sec && !o.sr {
128131
o.overview, o.client = true, true
129132
}
130133

131134
if o.all {
132-
o.overview, o.client, o.topic, o.co, o.sec = true, true, true, true, true
135+
o.overview, o.client, o.topic, o.co, o.sec, o.sr = true, true, true, true, true, true
133136
}
134137
}
135138

@@ -141,6 +144,7 @@ func printShadowLinkDescription(link *adminv2.ShadowLink, opts slDescribeOptions
141144
secTopicSync: opts.topic,
142145
secConsumerOffset: opts.co,
143146
secSecurity: opts.sec,
147+
secSchemaRegistry: opts.sr,
144148
})...,
145149
)
146150

@@ -165,6 +169,10 @@ func printShadowLinkDescription(link *adminv2.ShadowLink, opts slDescribeOptions
165169
sections.Add(secSecurity, func() {
166170
printSecuritySync(cfg.GetSecuritySyncOptions())
167171
})
172+
173+
sections.Add(secSchemaRegistry, func() {
174+
printSchemaRegistrySync(cfg.GetSchemaRegistrySyncOptions())
175+
})
168176
}
169177

170178
func printCloudShadowLinkDescription(link *controlplanev1.ShadowLink, opts slDescribeOptions) {
@@ -197,6 +205,10 @@ func printCloudShadowLinkDescription(link *controlplanev1.ShadowLink, opts slDes
197205
sections.Add(secSecurity, func() {
198206
printSecuritySync(link.GetSecuritySyncOptions())
199207
})
208+
209+
sections.Add(secSchemaRegistry, func() {
210+
printSchemaRegistrySync(link.GetSchemaRegistrySyncOptions())
211+
})
200212
}
201213

202214
func printOverview(link *adminv2.ShadowLink) {
@@ -448,6 +460,16 @@ func printSecuritySync(opts *adminv2.SecuritySettingsSyncOptions) {
448460
}
449461
}
450462

463+
func printSchemaRegistrySync(opts *adminv2.SchemaRegistrySyncOptions) {
464+
tw := out.NewTabWriter()
465+
defer tw.Flush()
466+
if opts == nil {
467+
tw.Print("No schema registry sync configuration")
468+
return
469+
}
470+
tw.Print("SHADOWING MODE", strings.ReplaceAll(opts.WhichSchemaRegistryShadowingMode().String(), "_", " "))
471+
}
472+
451473
func formatScramMechanism(m adminv2.ScramMechanism) string {
452474
switch m {
453475
case adminv2.ScramMechanism_SCRAM_MECHANISM_SCRAM_SHA_256:

src/go/rpk/pkg/cli/topic/consume.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -682,8 +682,14 @@ func (c *consumer) filterEmptyPartitions() (allEmpty bool) {
682682
for lp, lat := range lps {
683683
rat, exists := rps[lp]
684684
if exists && rat <= lat {
685+
zap.L().Sugar().Warnf("no data to consume for %s/%d: requested end offset %d, available start offset %d",
686+
lt, lp, rat, lat)
685687
delete(rps, lp)
686688
delete(lps, lp)
689+
} else if rat > lat {
690+
// There is data to consume. We consume from the available start offset (lat),
691+
// which automatically adjusts if the user's requested start was too low.
692+
zap.L().Sugar().Debugf("consuming %s/%d from offset %d", lt, lp, lat)
687693
}
688694
}
689695
}

src/v/cluster/archival/tests/archival_metadata_stm_test.cc

Lines changed: 21 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -128,6 +128,22 @@ struct archival_metadata_stm_base_fixture
128128
.get();
129129
}
130130

131+
void populate_log_with_data(size_t record_count) {
132+
for (size_t i = 0; i < record_count; ++i) {
133+
auto batch = model::test::make_random_batch(
134+
model::test::record_batch_spec{
135+
.count = 1,
136+
.bt = model::record_batch_type::raft_data,
137+
});
138+
batch.header().ctx.term = model::term_id(1);
139+
auto appender = _raft->log()->make_appender(
140+
storage::log_append_config{});
141+
auto rdr = model::make_memory_record_batch_reader(std::move(batch));
142+
rdr.for_each_ref(std::move(appender), model::no_timeout).get();
143+
}
144+
_raft->log()->flush().get();
145+
}
146+
131147
~archival_metadata_stm_base_fixture() override {
132148
stop_all();
133149
cloud_conn_pool.local().shutdown_connections();
@@ -319,6 +335,7 @@ void check_snapshot_size(
319335

320336
FIXTURE_TEST(test_snapshot_loading, archival_metadata_stm_base_fixture) {
321337
create_raft();
338+
populate_log_with_data(43);
322339
auto& ntp_cfg = _raft->log_config();
323340
partition_manifest m(ntp_cfg.ntp(), ntp_cfg.get_remote_revision());
324341
m.add(
@@ -400,7 +417,9 @@ FIXTURE_TEST(test_snapshot_loading, archival_metadata_stm_base_fixture) {
400417
}
401418

402419
BOOST_REQUIRE_EQUAL(archival_stm->get_start_offset(), model::offset{100});
403-
BOOST_REQUIRE(archival_stm->manifest() == m);
420+
BOOST_REQUIRE(
421+
archival_stm->manifest().make_manifest_metadata()
422+
== m.make_manifest_metadata());
404423
check_snapshot_size(*archival_stm, ntp_cfg);
405424

406425
// A snapshot constructed with make_snapshot is always clean
@@ -411,6 +430,7 @@ FIXTURE_TEST(test_snapshot_loading, archival_metadata_stm_base_fixture) {
411430

412431
FIXTURE_TEST(test_sname_derivation, archival_metadata_stm_base_fixture) {
413432
create_raft();
433+
populate_log_with_data(50);
414434
auto& ntp_cfg = _raft->log_config();
415435
partition_manifest m(ntp_cfg.ntp(), ntp_cfg.get_remote_revision());
416436

@@ -670,57 +690,6 @@ ss::future<> make_old_snapshot(
670690
tmp_snapshot_mgr, std::move(snapshot));
671691
}
672692

673-
FIXTURE_TEST(
674-
test_archival_metadata_stm_snapshot_version_compatibility,
675-
archival_metadata_stm_base_fixture) {
676-
create_raft();
677-
auto& ntp_cfg = _raft->log_config();
678-
partition_manifest m(ntp_cfg.ntp(), ntp_cfg.get_remote_revision());
679-
m.add(
680-
segment_name("0-1-v1.log"),
681-
segment_meta{
682-
.base_offset = model::offset(0),
683-
.committed_offset = model::offset(99),
684-
.archiver_term = model::term_id(1),
685-
.segment_term = model::term_id(1),
686-
});
687-
m.add(
688-
segment_name("100-1-v1.log"),
689-
segment_meta{
690-
.base_offset = model::offset(100),
691-
.committed_offset = model::offset(199),
692-
.archiver_term = model::term_id(1),
693-
.segment_term = model::term_id(1),
694-
});
695-
m.add(
696-
segment_name("200-1-v1.log"),
697-
segment_meta{
698-
.base_offset = model::offset(200),
699-
.committed_offset = model::offset(299),
700-
.archiver_term = model::term_id(1),
701-
.segment_term = model::term_id(1),
702-
});
703-
m.advance_insync_offset(model::offset(3));
704-
705-
make_old_snapshot(ntp_cfg, m, model::offset{3}).get();
706-
707-
raft::state_machine_manager_builder builder;
708-
auto archival_stm = builder.create_stm<cluster::archival_metadata_stm>(
709-
_raft.get(),
710-
cloud_api.local(),
711-
_feature_table.local(),
712-
logger,
713-
std::nullopt,
714-
std::nullopt);
715-
716-
_raft->start(std::move(builder)).get();
717-
_started = true;
718-
wait_for_confirmed_leader();
719-
720-
BOOST_REQUIRE(archival_stm->manifest() == m);
721-
check_snapshot_size(*archival_stm, ntp_cfg);
722-
}
723-
724693
FIXTURE_TEST(test_archival_stm_batching, archival_metadata_stm_fixture) {
725694
wait_for_confirmed_leader();
726695
std::vector<cloud_storage::segment_meta> m;

src/v/cluster/cluster_link/frontend.cc

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1089,7 +1089,7 @@ errc frontend::validator::validate_metadata_mirroring_config(
10891089
}
10901090

10911091
ss::future<errc> frontend::failover_link_topics(
1092-
::cluster_link::model::id_t id, model::timeout_clock::time_point timeout) {
1092+
::cluster_link::model::id_t id, model::timeout_clock::duration timeout) {
10931093
auto meta = _table->find_link_by_id(id);
10941094
if (!meta.has_value()) {
10951095
co_return errc::does_not_exist;
@@ -1136,7 +1136,7 @@ ss::future<errc> frontend::failover_link_topics(
11361136
{.topic = t,
11371137
.status
11381138
= ::cluster_link::model::mirror_topic_status::failing_over},
1139-
timeout)
1139+
model::timeout_clock::now() + timeout)
11401140
.then([&errors](errc err_code) {
11411141
if (err_code != errc::success) {
11421142
errors.push_back(err_code);

src/v/cluster/cluster_link/frontend.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,7 @@ class frontend : public ss::peering_sharded_service<frontend> {
7878
model::timeout_clock::time_point);
7979

8080
ss::future<errc> failover_link_topics(
81-
::cluster_link::model::id_t, model::timeout_clock::time_point);
81+
::cluster_link::model::id_t, model::timeout_clock::duration);
8282

8383
bool cluster_link_active() const;
8484

src/v/cluster/controller.cc

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -682,6 +682,7 @@ ss::future<> controller::start(
682682
std::ref(_members_table),
683683
std::ref(_partition_balancer),
684684
std::ref(_partition_manager),
685+
std::ref(_partition_leaders),
685686
std::ref(_as));
686687

687688
co_await set_raft_manager_remake_cb();

0 commit comments

Comments
 (0)