1
0
Fork 0

Destroy all traverser engines when AQL is shut down.

This commit is contained in:
Max Neunhoeffer 2017-02-10 09:12:15 +01:00
parent cf2a47e52c
commit fd3f3a88e7
3 changed files with 17 additions and 0 deletions

View File

@ -171,3 +171,16 @@ size_t TraverserEngineRegistry::numberRegisteredEngines() {
return _engines.size();
}
/// @brief destroy all registered engines
void TraverserEngineRegistry::destroyAll() {
std::vector<TraverserEngineID> engines;
{
READ_LOCKER(readLocker, _lock);
for (auto& p : _engines) {
engines.push_back(p.first);
}
}
for (auto& i : engines) {
destroy(i, true);
}
}

View File

@ -72,6 +72,9 @@ class TraverserEngineRegistry {
/// @brief return number of registered engines
size_t numberRegisteredEngines();
/// @brief destroy all registered engines
void destroyAll();
private:
void destroy(TraverserEngineID, bool doLock);

View File

@ -86,6 +86,7 @@ void AqlFeature::stop() {
}
LOG_TOPIC(DEBUG, Logger::QUERIES) << "AQL feature stopped";
QueryRegistryFeature::QUERY_REGISTRY->destroyAll();
TraverserEngineRegistryFeature::TRAVERSER_ENGINE_REGISTRY->destroyAll();
// Wait until all AQL queries are done
while (true) {