mirror of
https://github.com/matrix-construct/construct
synced 2024-11-26 08:42:34 +01:00
ircd::db: Remove the handles vector optimization.
This commit is contained in:
parent
bb354c5c05
commit
36bcb9a300
1 changed files with 2 additions and 9 deletions
11
ircd/db.cc
11
ircd/db.cc
|
@ -9351,16 +9351,8 @@ ircd::db::row::row(database &d,
|
||||||
std::vector<Iterator *> iterators;
|
std::vector<Iterator *> iterators;
|
||||||
if(key)
|
if(key)
|
||||||
{
|
{
|
||||||
// The goal here is to optimize away the heap allocation incurred by
|
|
||||||
// having to pass RocksDB the specific std::vector type which doesn't
|
|
||||||
// have room for an allocator. We use a single thread_local vector
|
|
||||||
// and reserve() it with one worst-case size of all possible columns.
|
|
||||||
// Then we resize it to this specific call's requirements and copy the
|
|
||||||
// column pointers. On sane platforms only one allocation ever occurs.
|
|
||||||
thread_local std::vector<ColumnFamilyHandle *> handles;
|
|
||||||
assert(column_count <= d.columns.size());
|
assert(column_count <= d.columns.size());
|
||||||
handles.reserve(d.columns.size());
|
std::vector<ColumnFamilyHandle *> handles(column_count);
|
||||||
handles.resize(column_count);
|
|
||||||
std::transform(colptr, colptr + column_count, begin(handles), []
|
std::transform(colptr, colptr + column_count, begin(handles), []
|
||||||
(database::column *const &ptr)
|
(database::column *const &ptr)
|
||||||
{
|
{
|
||||||
|
@ -9370,6 +9362,7 @@ ircd::db::row::row(database &d,
|
||||||
// This has been seen to lead to IO and block the ircd::ctx;
|
// This has been seen to lead to IO and block the ircd::ctx;
|
||||||
// specifically when background options are aggressive and shortly
|
// specifically when background options are aggressive and shortly
|
||||||
// after db opens.
|
// after db opens.
|
||||||
|
//const ctx::critical_assertion ca;
|
||||||
throw_on_error
|
throw_on_error
|
||||||
{
|
{
|
||||||
d.d->NewIterators(options, handles, &iterators)
|
d.d->NewIterators(options, handles, &iterators)
|
||||||
|
|
Loading…
Reference in a new issue