view_updating_consumer: make buffer limit a variable
The limit doesn't change at runtime, but we this patch makes it variable for unit testing purposes.
This commit is contained in:
@@ -2569,9 +2569,6 @@ future<bool> check_needs_view_update_path(db::system_distributed_keyspace& sys_d
|
||||
});
|
||||
}
|
||||
|
||||
const size_t view_updating_consumer::buffer_size_soft_limit{1 * 1024 * 1024};
|
||||
const size_t view_updating_consumer::buffer_size_hard_limit{2 * 1024 * 1024};
|
||||
|
||||
void view_updating_consumer::do_flush_buffer() {
|
||||
_staging_reader_handle.pause();
|
||||
|
||||
@@ -2606,7 +2603,7 @@ void view_updating_consumer::end_builder() {
|
||||
}
|
||||
|
||||
void view_updating_consumer::maybe_flush_buffer_mid_partition() {
|
||||
if (_buffer_size >= buffer_size_hard_limit) {
|
||||
if (_buffer_size >= _buffer_size_hard_limit) {
|
||||
flush_builder();
|
||||
do_flush_buffer();
|
||||
}
|
||||
|
||||
@@ -35,8 +35,17 @@ public:
|
||||
// We prefer flushing on partition boundaries, so at the end of a partition,
|
||||
// we flush on reaching the soft limit. Otherwise we continue accumulating
|
||||
// data. We flush mid-partition if we reach the hard limit.
|
||||
static const size_t buffer_size_soft_limit;
|
||||
static const size_t buffer_size_hard_limit;
|
||||
static constexpr size_t buffer_size_soft_limit_default = 1 * 1024 * 1024;
|
||||
static constexpr size_t buffer_size_hard_limit_default = 2 * 1024 * 1024;
|
||||
private:
|
||||
size_t _buffer_size_soft_limit = buffer_size_soft_limit_default;
|
||||
size_t _buffer_size_hard_limit = buffer_size_hard_limit_default;
|
||||
public:
|
||||
// Meant only for usage in tests.
|
||||
void set_buffer_size_limit_for_testing_purposes(size_t sz) {
|
||||
_buffer_size_soft_limit = sz;
|
||||
_buffer_size_hard_limit = sz;
|
||||
}
|
||||
|
||||
private:
|
||||
schema_ptr _schema;
|
||||
@@ -117,7 +126,7 @@ public:
|
||||
return stop_iteration::yes;
|
||||
}
|
||||
end_builder();
|
||||
if (_buffer_size >= buffer_size_soft_limit) {
|
||||
if (_buffer_size >= _buffer_size_soft_limit) {
|
||||
do_flush_buffer();
|
||||
}
|
||||
return stop_iteration::no;
|
||||
|
||||
@@ -783,8 +783,8 @@ SEASTAR_THREAD_TEST_CASE(test_view_update_generator_buffering) {
|
||||
, _rl(std::make_unique<row_locker>(_schema))
|
||||
, _rl_stats(std::make_unique<row_locker::stats>())
|
||||
, _less_cmp(*_schema)
|
||||
, _max_rows_soft(rows_in_limit(db::view::view_updating_consumer::buffer_size_soft_limit))
|
||||
, _max_rows_hard(rows_in_limit(db::view::view_updating_consumer::buffer_size_hard_limit))
|
||||
, _max_rows_soft(rows_in_limit(db::view::view_updating_consumer::buffer_size_soft_limit_default))
|
||||
, _max_rows_hard(rows_in_limit(db::view::view_updating_consumer::buffer_size_hard_limit_default))
|
||||
, _ok(ok)
|
||||
{ }
|
||||
|
||||
|
||||
Reference in New Issue
Block a user