From ddc8c8b0196ec96df67d537dc7dfbf8b92548d8c Mon Sep 17 00:00:00 2001 From: Pavel Emelyanov Date: Tue, 28 Mar 2023 11:57:03 +0300 Subject: [PATCH] view: Keep v.u.generator shared pointer on view_builder::consumer This is another mutations consumer that pushes view updates forward and thus also needs the view updates generator pointer. It gets one from the view builder that already has the dependency on generator. Signed-off-by: Pavel Emelyanov --- db/view/view.cc | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/db/view/view.cc b/db/view/view.cc index 4cfbf43571..65059421ec 100644 --- a/db/view/view.cc +++ b/db/view/view.cc @@ -2269,6 +2269,7 @@ public: private: view_builder& _builder; + shared_ptr _gen; build_step& _step; built_views _built_views; gc_clock::time_point _now; @@ -2285,14 +2286,16 @@ private: // beyond our limit on mutation size (by default 32 MB). size_t _fragments_memory_usage = 0; public: - consumer(view_builder& builder, build_step& step, gc_clock::time_point now) + consumer(view_builder& builder, shared_ptr gen, build_step& step, gc_clock::time_point now) : _builder(builder) + , _gen(std::move(gen)) , _step(step) , _built_views{step} , _now(now) { if (!step.current_key.key().is_empty(*_step.reader.schema())) { load_views_to_build(); } + (void)_gen; } void load_views_to_build() { @@ -2441,7 +2444,7 @@ void view_builder::execute(build_step& step, exponential_backoff_retry r) { step.pslice, batch_size, query::max_partitions); - auto consumer = compact_for_query_v2(compaction_state, view_builder::consumer{*this, step, now}); + auto consumer = compact_for_query_v2(compaction_state, view_builder::consumer{*this, _vug.shared_from_this(), step, now}); auto built = step.reader.consume_in_thread(std::move(consumer)); if (auto ds = std::move(*compaction_state).detach_state()) { if (ds->current_tombstone) {