Files
scylladb/reader_resource_tracker.hh
Glauber Costa 3c9eeea4cf restricted_mutation_reader: don't pass timeouts through the config structure
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>
2018-01-12 07:43:21 -05:00

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);
}