diff --git a/CHANGELOG b/CHANGELOG index 8f5a8015dc..8f7598ca22 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,6 +1,9 @@ v3.3.9 (xxxx-xx-xx) ------------------- +* make /_api/index, /_api/database and /_api/user REST handlers use the scheduler's internal + queue, so they do not run in an I/O handling thread + * fixed issue #4919: C++ implementation of LIKE function now matches the old and correct behaviour of the javascript implementation. diff --git a/arangod/RestHandler/RestDatabaseHandler.h b/arangod/RestHandler/RestDatabaseHandler.h index 6dd8efffd4..60f75d5a9b 100644 --- a/arangod/RestHandler/RestDatabaseHandler.h +++ b/arangod/RestHandler/RestDatabaseHandler.h @@ -32,7 +32,7 @@ class RestDatabaseHandler : public arangodb::RestVocbaseBaseHandler { public: char const* name() const override final { return "RestDatabaseHandler"; } - bool isDirect() const override { return true; } + bool isDirect() const override { return false; } RestStatus execute() override; private: diff --git a/arangod/RestHandler/RestIndexHandler.h b/arangod/RestHandler/RestIndexHandler.h index 8fc000cb35..070413ecf2 100644 --- a/arangod/RestHandler/RestIndexHandler.h +++ b/arangod/RestHandler/RestIndexHandler.h @@ -36,7 +36,7 @@ class RestIndexHandler : public arangodb::RestVocbaseBaseHandler { public: char const* name() const override final { return "RestIndexHandler"; } - bool isDirect() const override { return true; } + bool isDirect() const override { return false; } RestStatus execute() override; private: diff --git a/arangod/RestHandler/RestUsersHandler.h b/arangod/RestHandler/RestUsersHandler.h index 8e2e130105..a166fd2424 100644 --- a/arangod/RestHandler/RestUsersHandler.h +++ b/arangod/RestHandler/RestUsersHandler.h @@ -36,7 +36,7 @@ class RestUsersHandler : public arangodb::RestBaseHandler { public: virtual char const* name() const override { return "RestUsersHandler"; } - bool isDirect() const override { return true; } + bool isDirect() const override { return false; } RestStatus execute() override; private: diff --git a/arangod/Scheduler/JobGuard.h b/arangod/Scheduler/JobGuard.h index c423e577a1..fae68c1f59 100644 --- a/arangod/Scheduler/JobGuard.h +++ b/arangod/Scheduler/JobGuard.h @@ -69,6 +69,7 @@ class JobGuard : public SameThreadAsserter { if (_isWorkingFlag) { _isWorkingFlag = false; + TRI_ASSERT(_isWorking > 0); if (0 == --_isWorking) { // if this is the last JobGuard we inform the // scheduler that the thread is back to idle @@ -79,6 +80,7 @@ class JobGuard : public SameThreadAsserter { if (_isBlockedFlag) { _isBlockedFlag = false; + TRI_ASSERT(_isBlocked > 0); if (0 == --_isBlocked) { // if this is the last JobGuard we inform the // scheduler that the thread is now unblocked