This patch enables passing a timeout to the restricted_mutation_reader through the read path interface -- using fill_buffer and friends. This will serve as a basis for having per-timeout requests. The config structure still has a timeout, but that is so far only used to actually pass the value to the query interface. Once that starts coming from the storage proxy layer (next patch) we will remove. The query callers are patched so that we pass the timeout down. We patch the callers in database.cc, but leave the streaming ones alone. That can be safely done because the default for the query path is now no_timeout, and that is what the streaming code wants. So there is no need to complicate the interface to allow for passing a timeout that we intend to disable. Signed-off-by: Glauber Costa <glauber@scylladb.com>
50 lines
1.3 KiB
C++
50 lines
1.3 KiB
C++
/*
|
|
* This file is part of Scylla.
|
|
*
|
|
* Scylla is free software: you can redistribute it and/or modify
|
|
* it under the terms of the GNU Affero General Public License as published by
|
|
* the Free Software Foundation, either version 3 of the License, or
|
|
* (at your option) any later version.
|
|
*
|
|
* Scylla is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU General Public License
|
|
* along with Scylla. If not, see <http://www.gnu.org/licenses/>.
|
|
*/
|
|
|
|
/*
|
|
* Copyright (C) 2017 ScyllaDB
|
|
*/
|
|
|
|
#pragma once
|
|
|
|
#include <core/file.hh>
|
|
#include <core/semaphore.hh>
|
|
#include "db/timeout_clock.hh"
|
|
|
|
class reader_resource_tracker {
|
|
db::timeout_semaphore* _sem = nullptr;
|
|
public:
|
|
reader_resource_tracker() = default;
|
|
explicit reader_resource_tracker(db::timeout_semaphore* sem)
|
|
: _sem(sem) {
|
|
}
|
|
|
|
bool operator==(const reader_resource_tracker& other) const {
|
|
return _sem == other._sem;
|
|
}
|
|
|
|
file track(file f) const;
|
|
|
|
db::timeout_semaphore* get_semaphore() const {
|
|
return _sem;
|
|
}
|
|
};
|
|
|
|
inline reader_resource_tracker no_resource_tracking() {
|
|
return reader_resource_tracker(nullptr);
|
|
}
|