Skip to content

Commit 2b377d8

Browse files
Remove dead code in StorageManager and Query (#5193)
With the removal of deprecated function in #5146, the opportunity arises to remove asynchronous query submission, which the C API no longer has any reference to. Alongside this, there is other dead code in `StorageManager` in need of pruning. This PR simplifies its constructor a bit and removes unused members variables. [SC-50038] --- TYPE: NO_HISTORY DESC: Remove dead code in `StorageManager` and `Query`
1 parent 3275bd5 commit 2b377d8

File tree

5 files changed

+21
-151
lines changed

5 files changed

+21
-151
lines changed

tiledb/api/c_api_test_support/storage_manager_stub/storage_manager_override.h

Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -38,32 +38,26 @@
3838
#include "tiledb/sm/storage_manager/context_resources.h"
3939

4040
namespace tiledb::common {
41-
class ThreadPool;
4241
class Logger;
4342
} // namespace tiledb::common
44-
namespace tiledb::stats {
45-
class Stats;
46-
}
4743
namespace tiledb::sm {
4844
class Config;
49-
class VFS;
5045

5146
class StorageManagerStub {
5247
Config config_;
5348

5449
public:
5550
static constexpr bool is_overriding_class = true;
5651
StorageManagerStub(
57-
ContextResources&, std::shared_ptr<common::Logger>, const Config& config)
52+
ContextResources&,
53+
const std::shared_ptr<common::Logger>&,
54+
const Config& config)
5855
: config_(config) {
5956
}
6057

6158
inline Status cancel_all_tasks() {
6259
return Status{};
6360
}
64-
inline Status set_tag(const std::string&, const std::string&) {
65-
return Status{};
66-
}
6761
};
6862

6963
} // namespace tiledb::sm

tiledb/sm/query/query.cc

Lines changed: 0 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1638,24 +1638,6 @@ Status Query::submit() {
16381638
return Status::Ok();
16391639
}
16401640

1641-
Status Query::submit_async(
1642-
std::function<void(void*)> callback, void* callback_data) {
1643-
// Do not resubmit completed reads.
1644-
if (type_ == QueryType::READ && status_ == QueryStatus::COMPLETED) {
1645-
callback(callback_data);
1646-
return Status::Ok();
1647-
}
1648-
init();
1649-
if (array_->is_remote())
1650-
return logger_->status(
1651-
Status_QueryError("Error in async query submission; async queries not "
1652-
"supported for remote arrays."));
1653-
1654-
callback_ = callback;
1655-
callback_data_ = callback_data;
1656-
return storage_manager_->query_submit_async(this);
1657-
}
1658-
16591641
QueryStatus Query::status() const {
16601642
return status_;
16611643
}

tiledb/sm/query/query.h

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -705,14 +705,6 @@ class Query {
705705
/** Submits the query to the storage manager. */
706706
Status submit();
707707

708-
/**
709-
* Submits the query to the storage manager. The query will be
710-
* processed asynchronously (i.e., in a non-blocking manner).
711-
* Once the query is completed, the input callback function will
712-
* be executed using the input callback data.
713-
*/
714-
Status submit_async(std::function<void(void*)> callback, void* callback_data);
715-
716708
/** Returns the query status. */
717709
QueryStatus status() const;
718710

tiledb/sm/storage_manager/storage_manager.cc

Lines changed: 7 additions & 69 deletions
Original file line numberDiff line numberDiff line change
@@ -32,41 +32,10 @@
3232

3333
#include "tiledb/common/common.h"
3434

35-
#include <algorithm>
36-
#include <functional>
37-
#include <iostream>
38-
#include <sstream>
39-
40-
#include "tiledb/common/heap_memory.h"
41-
#include "tiledb/common/logger.h"
4235
#include "tiledb/common/memory.h"
43-
#include "tiledb/sm/array/array.h"
44-
#include "tiledb/sm/array/array_directory.h"
45-
#include "tiledb/sm/array_schema/array_schema.h"
46-
#include "tiledb/sm/array_schema/array_schema_evolution.h"
47-
#include "tiledb/sm/array_schema/array_schema_operations.h"
48-
#include "tiledb/sm/array_schema/enumeration.h"
49-
#include "tiledb/sm/consolidator/consolidator.h"
50-
#include "tiledb/sm/enums/array_type.h"
51-
#include "tiledb/sm/enums/layout.h"
52-
#include "tiledb/sm/enums/object_type.h"
53-
#include "tiledb/sm/filesystem/vfs.h"
5436
#include "tiledb/sm/global_state/global_state.h"
55-
#include "tiledb/sm/global_state/unit_test_config.h"
56-
#include "tiledb/sm/group/group.h"
57-
#include "tiledb/sm/misc/parallel_functions.h"
58-
#include "tiledb/sm/misc/tdb_time.h"
59-
#include "tiledb/sm/object/object.h"
60-
#include "tiledb/sm/object/object_mutex.h"
6137
#include "tiledb/sm/query/query.h"
62-
#include "tiledb/sm/rest/rest_client.h"
6338
#include "tiledb/sm/storage_manager/storage_manager.h"
64-
#include "tiledb/sm/tile/generic_tile_io.h"
65-
#include "tiledb/sm/tile/tile.h"
66-
67-
#include <algorithm>
68-
#include <iostream>
69-
#include <sstream>
7039

7140
using namespace tiledb::common;
7241

@@ -83,29 +52,22 @@ class StorageManagerException : public StatusException {
8352
/* CONSTRUCTORS & DESTRUCTORS */
8453
/* ****************************** */
8554

55+
/*
56+
* Note: The logger argument is no longer used, but has not been removed from
57+
* the constructor signature as yet.
58+
*/
8659
StorageManagerCanonical::StorageManagerCanonical(
8760
ContextResources& resources,
88-
shared_ptr<Logger> logger,
61+
const shared_ptr<Logger>&, // unused
8962
const Config& config)
90-
: resources_(resources)
91-
, logger_(logger)
63+
: vfs_(resources.vfs())
9264
, cancellation_in_progress_(false)
9365
, config_(config)
9466
, queries_in_progress_(0) {
95-
/*
96-
* This is a transitional version the implementation of this constructor. To
97-
* complete the transition, the `init` member function must disappear.
98-
*/
99-
throw_if_not_ok(init());
100-
}
101-
102-
Status StorageManagerCanonical::init() {
10367
auto& global_state = global_state::GlobalState::GetGlobalState();
10468
global_state.init(config_);
10569

10670
global_state.register_storage_manager(this);
107-
108-
return Status::Ok();
10971
}
11072

11173
StorageManagerCanonical::~StorageManagerCanonical() {
@@ -127,24 +89,6 @@ StorageManagerCanonical::~StorageManagerCanonical() {
12789
/* API */
12890
/* ****************************** */
12991

130-
Status StorageManagerCanonical::async_push_query(Query* query) {
131-
cancelable_tasks_.execute(
132-
&resources_.compute_tp(),
133-
[this, query]() {
134-
// Process query.
135-
throw_if_not_ok(query_submit(query));
136-
return Status::Ok();
137-
},
138-
[query]() {
139-
// Task was cancelled. This is safe to perform in a separate thread,
140-
// as we are guaranteed by the thread pool not to have entered
141-
// query->process() yet.
142-
throw_if_not_ok(query->cancel());
143-
});
144-
145-
return Status::Ok();
146-
}
147-
14892
Status StorageManagerCanonical::cancel_all_tasks() {
14993
// Check if there is already a "cancellation" in progress.
15094
bool handle_cancel = false;
@@ -159,8 +103,7 @@ Status StorageManagerCanonical::cancel_all_tasks() {
159103
// Handle the cancellation.
160104
if (handle_cancel) {
161105
// Cancel any queued tasks.
162-
cancelable_tasks_.cancel_all_tasks();
163-
throw_if_not_ok(resources_.vfs().cancel_all_tasks());
106+
throw_if_not_ok(vfs_.cancel_all_tasks());
164107

165108
// Wait for in-progress queries to finish.
166109
wait_for_zero_in_progress();
@@ -198,11 +141,6 @@ Status StorageManagerCanonical::query_submit(Query* query) {
198141
return st;
199142
}
200143

201-
Status StorageManagerCanonical::query_submit_async(Query* query) {
202-
// Push the query into the async queue
203-
return async_push_query(query);
204-
}
205-
206144
void StorageManagerCanonical::wait_for_zero_in_progress() {
207145
std::unique_lock<std::mutex> lck(queries_in_progress_mtx_);
208146
queries_in_progress_cv_.wait(

tiledb/sm/storage_manager/storage_manager_canonical.h

Lines changed: 11 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -61,16 +61,11 @@ using namespace tiledb::common;
6161

6262
namespace tiledb::sm {
6363

64-
class Array;
65-
class ArrayDirectory;
66-
class ArraySchema;
67-
class Consolidator;
68-
class EncryptionKey;
6964
class Query;
7065

7166
enum class EncryptionType : uint8_t;
7267

73-
/** The storage manager that manages pretty much everything in TileDB. */
68+
/** The storage manager that manages pretty much nothing in TileDB. */
7469
class StorageManagerCanonical {
7570
public:
7671
/* ********************************* */
@@ -80,24 +75,18 @@ class StorageManagerCanonical {
8075
/**
8176
* Complete, C.41-compliant constructor
8277
*
78+
* The `resources` argument is only used for its `vfs()` member function. This
79+
* is the VFS instance that's waited on in `cancel_all_tasks`.
80+
*
81+
*
82+
* @param resources Resource object from associated context
8383
* @param config The configuration parameters.
8484
*/
8585
StorageManagerCanonical(
8686
ContextResources& resources,
87-
shared_ptr<Logger> logger,
87+
const shared_ptr<Logger>& logger,
8888
const Config& config);
8989

90-
private:
91-
/**
92-
* Initializes the storage manager. Only used in the constructor.
93-
*
94-
* TODO: Integrate what this function does into the constructor directly.
95-
* TODO: Eliminate this function.
96-
*
97-
* @return Status
98-
*/
99-
Status init();
100-
10190
public:
10291
/** Destructor. */
10392
~StorageManagerCanonical();
@@ -109,14 +98,6 @@ class StorageManagerCanonical {
10998
/* API */
11099
/* ********************************* */
111100

112-
/**
113-
* Pushes an async query to the queue.
114-
*
115-
* @param query The async query.
116-
* @return Status
117-
*/
118-
Status async_push_query(Query* query);
119-
120101
/** Cancels all background tasks. */
121102
Status cancel_all_tasks();
122103

@@ -126,18 +107,6 @@ class StorageManagerCanonical {
126107
/** Submits a query for (sync) execution. */
127108
Status query_submit(Query* query);
128109

129-
/**
130-
* Submits a query for async execution.
131-
*
132-
* @param query The query to submit.
133-
* @return Status
134-
*/
135-
Status query_submit_async(Query* query);
136-
137-
[[nodiscard]] inline ContextResources& resources() const {
138-
return resources_;
139-
}
140-
141110
private:
142111
/* ********************************* */
143112
/* PRIVATE DATATYPES */
@@ -177,11 +146,10 @@ class StorageManagerCanonical {
177146
/* PRIVATE ATTRIBUTES */
178147
/* ********************************* */
179148

180-
/** Context create resources object. */
181-
ContextResources& resources_;
182-
183-
/** The class logger. */
184-
shared_ptr<Logger> logger_;
149+
/**
150+
* VFS instance used in `cancel_all_tasks`.
151+
*/
152+
VFS& vfs_;
185153

186154
/** Set to true when tasks are being cancelled. */
187155
bool cancellation_in_progress_;
@@ -201,10 +169,6 @@ class StorageManagerCanonical {
201169
/** Guards queries_in_progress_ counter. */
202170
std::condition_variable queries_in_progress_cv_;
203171

204-
/** Tracks all scheduled tasks that can be safely cancelled before execution.
205-
*/
206-
CancelableTasks cancelable_tasks_;
207-
208172
/* ********************************* */
209173
/* PRIVATE METHODS */
210174
/* ********************************* */

0 commit comments

Comments
 (0)