mirror of https://gitee.com/bigwinds/arangodb
Avoid occasional query id not found errors (#8914)
This commit is contained in:
parent
c9a35ea2fa
commit
9f09b2fb15
|
@ -264,6 +264,12 @@ std::pair<ExecutionState, Result> ExecutionBlockImpl<RemoteExecutor>::initialize
|
||||||
|
|
||||||
/// @brief shutdown, will be called exactly once for the whole query
|
/// @brief shutdown, will be called exactly once for the whole query
|
||||||
std::pair<ExecutionState, Result> ExecutionBlockImpl<RemoteExecutor>::shutdown(int errorCode) {
|
std::pair<ExecutionState, Result> ExecutionBlockImpl<RemoteExecutor>::shutdown(int errorCode) {
|
||||||
|
|
||||||
|
if (!_isResponsibleForInitializeCursor) {
|
||||||
|
// do nothing...
|
||||||
|
return {ExecutionState::DONE, TRI_ERROR_NO_ERROR};
|
||||||
|
}
|
||||||
|
|
||||||
if (!_hasTriggeredShutdown) {
|
if (!_hasTriggeredShutdown) {
|
||||||
// Make sure to cover against the race that the request
|
// Make sure to cover against the race that the request
|
||||||
// in flight is not overtaking in the drop phase here.
|
// in flight is not overtaking in the drop phase here.
|
||||||
|
@ -283,19 +289,24 @@ std::pair<ExecutionState, Result> ExecutionBlockImpl<RemoteExecutor>::shutdown(i
|
||||||
_lastResponse.reset();
|
_lastResponse.reset();
|
||||||
_hasTriggeredShutdown = true;
|
_hasTriggeredShutdown = true;
|
||||||
}
|
}
|
||||||
/* We need to handle this here in ASYNC case
|
|
||||||
if (isShutdown && errorNum == TRI_ERROR_QUERY_NOT_FOUND) {
|
|
||||||
// this error may happen on shutdown and is thus tolerated
|
|
||||||
// pass the info to the caller who can opt to ignore this error
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
|
|
||||||
if (_lastError.fail()) {
|
if (_lastError.fail()) {
|
||||||
TRI_ASSERT(_lastResponse == nullptr);
|
TRI_ASSERT(_lastResponse == nullptr);
|
||||||
Result res = _lastError;
|
Result res = _lastError;
|
||||||
_lastError.reset();
|
_lastError.reset();
|
||||||
// we were called with an error need to throw it.
|
|
||||||
|
if (res.is(TRI_ERROR_QUERY_NOT_FOUND)) {
|
||||||
|
// Ignore query not found errors, they should do no harm.
|
||||||
|
// However, as only the snippet with _isResponsibleForInitializeCursor
|
||||||
|
// should now call shutdown, this should not usually happen, so emit a
|
||||||
|
// warning.
|
||||||
|
LOG_TOPIC("8d035", WARN, Logger::AQL)
|
||||||
|
<< "During AQL query shutdown: "
|
||||||
|
<< "Query ID " << _queryId << " not found on " << _server;
|
||||||
|
return {ExecutionState::DONE, TRI_ERROR_NO_ERROR};
|
||||||
|
}
|
||||||
|
|
||||||
|
// we were called with an error and need to throw it.
|
||||||
THROW_ARANGO_EXCEPTION(res);
|
THROW_ARANGO_EXCEPTION(res);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue