view: generate_view_updates: close builder readers when done

Make sure to close the builder's _updates and optional _existings
readers before they are destroyed.

Signed-off-by: Benny Halevy <bhalevy@scylladb.com>
This commit is contained in:
Benny Halevy
2021-02-11 10:08:38 +02:00
parent 652ba714fe
commit 2d8b00f2d8

View File

@@ -854,6 +854,10 @@ public:
future<std::vector<frozen_mutation_and_schema>> build(); future<std::vector<frozen_mutation_and_schema>> build();
future<> close() noexcept {
return when_all_succeed(_updates.close(), _existings->close()).discard_result();
}
private: private:
void generate_update(clustering_row&& update, std::optional<clustering_row>&& existing); void generate_update(clustering_row&& update, std::optional<clustering_row>&& existing);
future<stop_iteration> on_results(); future<stop_iteration> on_results();
@@ -1039,7 +1043,9 @@ future<std::vector<frozen_mutation_and_schema>> generate_view_updates(
})); }));
auto builder = std::make_unique<view_update_builder>(base, std::move(vs), std::move(updates), std::move(existings), now); auto builder = std::make_unique<view_update_builder>(base, std::move(vs), std::move(updates), std::move(existings), now);
auto f = builder->build(); auto f = builder->build();
return f.finally([builder = std::move(builder)] { }); return f.finally([builder = std::move(builder)] {
return builder->close();
});
} }
query::clustering_row_ranges calculate_affected_clustering_ranges(const schema& base, query::clustering_row_ranges calculate_affected_clustering_ranges(const schema& base,