From 2a178df99c8ee6d796708478e33dffc4f46a1701 Mon Sep 17 00:00:00 2001 From: Willem Kaufmann Date: Fri, 17 Apr 2026 12:00:30 -0400 Subject: [PATCH 1/6] `mvlog`: fix use after move --- src/v/storage/mvlog/segment_appender.cc | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/v/storage/mvlog/segment_appender.cc b/src/v/storage/mvlog/segment_appender.cc index 3f38fdc93a12f..8698e1e51d3e9 100644 --- a/src/v/storage/mvlog/segment_appender.cc +++ b/src/v/storage/mvlog/segment_appender.cc @@ -19,6 +19,8 @@ namespace storage::experimental::mvlog { ss::future<> segment_appender::append(model::record_batch batch) { + auto base_offset = batch.base_offset(); + auto last_offset = batch.last_offset(); // Build the body of the entry first so we can checksum its size. record_batch_entry_body entry_body; entry_body.term = batch.term(); @@ -42,8 +44,8 @@ ss::future<> segment_appender::append(model::record_batch batch) { vlog( log.trace, "Appended offsets [{}, {}], pos [{}, {})", - batch.base_offset(), - batch.last_offset(), + base_offset, + last_offset, orig_size, file_->size()); } From 6508b1a6e4fb78ea4083a527ce73ec0123b649f6 Mon Sep 17 00:00:00 2001 From: Willem Kaufmann Date: Fri, 17 Apr 2026 12:10:05 -0400 Subject: [PATCH 2/6] `transform`: fix use after move --- src/v/transform/rpc/client.cc | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/v/transform/rpc/client.cc b/src/v/transform/rpc/client.cc index 368855c1147a7..420bfc7a5f26a 100644 --- a/src/v/transform/rpc/client.cc +++ b/src/v/transform/rpc/client.cc @@ -1022,12 +1022,13 @@ ss::future client::do_remote_delete_committed_offsets( model::partition_id partition, absl::btree_set ids, model::timeout_clock::duration timeout) { + auto ids_size = ids.size(); vlog( log.trace, "delete_committed_offsets(node={}): {} {}", node, partition, - ids.size()); + ids_size); auto resp = co_await _connections->local() .with_node_client( _self, @@ -1047,7 +1048,7 @@ ss::future client::do_remote_delete_committed_offsets( "delete_committed_offsets(node={}): {} {}", node, resp, - ids.size()); + ids_size); if (resp.has_error()) { co_return map_errc(resp.error()); } From b2f0658c7775921eab62aaac5e030ed2a9305f6a Mon Sep 17 00:00:00 2001 From: Willem Kaufmann Date: Fri, 17 Apr 2026 12:19:21 -0400 Subject: [PATCH 3/6] `cluster`: fix use after move in `rm_stm` --- src/v/cluster/rm_stm.cc | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/v/cluster/rm_stm.cc b/src/v/cluster/rm_stm.cc index dca79c0dc8f28..7b51cfd070039 100644 --- a/src/v/cluster/rm_stm.cc +++ b/src/v/cluster/rm_stm.cc @@ -1755,11 +1755,12 @@ void rm_stm::apply_fence(model::producer_identity pid, model::record_batch b) { } auto producer = result.value().first; auto header = b.header(); + auto base_offset = b.base_offset(); auto batch_data = read_fence_batch(std::move(b)); vlog( _ctx_log.trace, "applying fence batch, offset: {}, pid: {}", - b.base_offset(), + base_offset, batch_data.bid.pid); producer->apply_transaction_begin(header, batch_data); _highest_producer_id = std::max( From 12df2ae9c8900f064dd3455ac36f97f16b72c4e3 Mon Sep 17 00:00:00 2001 From: Willem Kaufmann Date: Fri, 17 Apr 2026 12:34:46 -0400 Subject: [PATCH 4/6] `cluster`: fix use after move in `log_eviction_stm` --- src/v/cluster/log_eviction_stm.cc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/v/cluster/log_eviction_stm.cc b/src/v/cluster/log_eviction_stm.cc index 47b67ded61772..4476cc139b0fd 100644 --- a/src/v/cluster/log_eviction_stm.cc +++ b/src/v/cluster/log_eviction_stm.cc @@ -224,8 +224,8 @@ ss::future log_eviction_stm::truncate( "Replicating prefix_truncate command, redpanda start offset: {}, kafka " "start offset: {} " "current last snapshot offset: {}, current last visible offset: {}", - val.rp_start_offset, - val.kafka_start_offset, + rp_start_offset, + kafka_start_offset, _raft->last_snapshot_index(), _raft->last_visible_index()); From 00e3f9db46b423a7ed91df347b9de48536fa9db5 Mon Sep 17 00:00:00 2001 From: Willem Kaufmann Date: Fri, 17 Apr 2026 12:41:43 -0400 Subject: [PATCH 5/6] `kafka`: fix use after move --- src/v/kafka/server/group_manager.cc | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/v/kafka/server/group_manager.cc b/src/v/kafka/server/group_manager.cc index 513fd80c1282b..b8fa8bbf5344a 100644 --- a/src/v/kafka/server/group_manager.cc +++ b/src/v/kafka/server/group_manager.cc @@ -1055,10 +1055,11 @@ group_manager::do_bulk_write_offsets(group_offsets_snapshot snap, bool merge) { kafka_topics.emplace_back(std::move(kafka_t)); co_await ss::maybe_yield(); } + auto group_id = kafka_r.data.group_id; vlog( cg_klog.info, "Restoring group {} from snapshot on {}", - kafka_r.data.group_id, + group_id, offsets_ntp); auto stages = offset_commit(std::move(kafka_r)); co_await std::move(stages.dispatched); @@ -1072,7 +1073,7 @@ group_manager::do_bulk_write_offsets(group_offsets_snapshot snap, bool merge) { "Error on {}/{} while restoring group {} on {}: {}", kafka_t.name, kafka_p.partition_index, - kafka_r.data.group_id, + group_id, offsets_ntp, kafka_p.error_code); if (first_error != error_code::none) { From 5684e55e25c1eebf955fd71c6b10aa01d6567f38 Mon Sep 17 00:00:00 2001 From: Willem Kaufmann Date: Sat, 18 Apr 2026 12:35:50 -0400 Subject: [PATCH 6/6] `base`: remove `NOLINTNEXTLINE` from `vlog` macros --- src/v/base/vlog.h | 6 ------ 1 file changed, 6 deletions(-) diff --git a/src/v/base/vlog.h b/src/v/base/vlog.h index 8653f37df1194..5a1ac9e794dc2 100644 --- a/src/v/base/vlog.h +++ b/src/v/base/vlog.h @@ -11,25 +11,19 @@ #pragma once #include "base/source_location.h" -// NOLINTNEXTLINE #define fmt_with_ctx(method, fmt, args...) \ method("{} - " fmt, vlog::file_line::current(), ##args) -// NOLINTNEXTLINE #define vlog(method, fmt, args...) fmt_with_ctx(method, fmt, ##args) -// NOLINTNEXTLINE #define fmt_with_ctx_level(logger, level, fmt, args...) \ logger.log(level, "{} - " fmt, vlog::file_line::current(), ##args) -// NOLINTNEXTLINE #define vlogl(logger, level, fmt, args...) \ fmt_with_ctx_level(logger, level, fmt, ##args) -// NOLINTNEXTLINE #define fmt_with_ctx_level_and_rate(logger, level, rate, fmt, args...) \ logger.log(level, rate, "{} - " fmt, vlog::file_line::current(), ##args) -// NOLINTNEXTLINE #define vloglr(logger, level, rate, fmt, args...) \ fmt_with_ctx_level_and_rate(logger, level, rate, fmt, ##args)