1
0
Fork 0

rename timeout to maxRuntime (#10552)

* rename timeout out maxRuntime

* Update CHANGELOG

Co-Authored-By: Jan <jsteemann@users.noreply.github.com>
This commit is contained in:
Jan Christoph Uhde 2019-11-27 15:08:50 +01:00 committed by KVS85
parent fa2ebde506
commit 1cd71a8d11
7 changed files with 15 additions and 15 deletions

View File

@ -99,8 +99,8 @@ devel
engine, but comes with a big performance penalty as all collections will be locked engine, but comes with a big performance penalty as all collections will be locked
exclusively for writes. exclusively for writes.
* Added new timeout option for AQL queries. If a query does not finish execution * Added new maxRuntime option for queries. If a query does not finish execution within
within the given time in seconds it will be killed. the given time (in seconds) it will be killed.
* Fixed undefined behaviour with creation of ArangoSearch links with custom * Fixed undefined behaviour with creation of ArangoSearch links with custom
analyzers in cluster environment. analyzers in cluster environment.

View File

@ -107,8 +107,8 @@ to bring the satellite collections involved in the query into sync.
The default value is *60.0* (seconds). When the max time has been reached the query The default value is *60.0* (seconds). When the max time has been reached the query
will be stopped. will be stopped.
@RESTSTRUCT{timeout,post_api_cursor_opts,number,optional,double} @RESTSTRUCT{maxRuntime,post_api_cursor_opts,number,optional,double}
The query has to be executed within the given timeout or it will be killed. The query has to be executed within the given runtime or it will be killed.
The value is specified in seconds. The default value is *0.0* (no timeout). The value is specified in seconds. The default value is *0.0* (no timeout).
@RESTSTRUCT{maxTransactionSize,post_api_cursor_opts,integer,optional,int64} @RESTSTRUCT{maxTransactionSize,post_api_cursor_opts,integer,optional,int64}

View File

@ -276,8 +276,8 @@ Query* Query::clone(QueryPart part, bool withPlan) {
} }
bool Query::killed() const { bool Query::killed() const {
if (_queryOptions.timeout > std::numeric_limits<double>::epsilon()) { if(_queryOptions.maxRuntime > std::numeric_limits<double>::epsilon()) {
if (TRI_microtime() > (_startTime + _queryOptions.timeout)) { if(TRI_microtime() > (_startTime + _queryOptions.maxRuntime)) {
return true; return true;
} }
} }

View File

@ -110,7 +110,7 @@ class Query {
/// @brief whether or not the query is killed /// @brief whether or not the query is killed
bool killed() const; bool killed() const;
void setKilled() { _killed = true; } void setKilled() { _killed = true; }
/// @brief set the query to killed /// @brief set the query to killed

View File

@ -38,7 +38,7 @@ QueryOptions::QueryOptions()
: memoryLimit(0), : memoryLimit(0),
maxNumberOfPlans(0), maxNumberOfPlans(0),
maxWarningCount(10), maxWarningCount(10),
timeout(0), maxRuntime(0),
satelliteSyncWait(60.0), satelliteSyncWait(60.0),
ttl(0), ttl(0),
profile(PROFILE_LEVEL_NONE), profile(PROFILE_LEVEL_NONE),
@ -104,9 +104,9 @@ void QueryOptions::fromVelocyPack(VPackSlice const& slice) {
maxWarningCount = value.getNumber<size_t>(); maxWarningCount = value.getNumber<size_t>();
} }
value = slice.get("timeout"); value = slice.get("maxRuntime");
if (value.isNumber()) { if (value.isNumber()) {
timeout = value.getNumber<double>(); maxRuntime = value.getNumber<double>();
} }
@ -221,7 +221,7 @@ void QueryOptions::toVelocyPack(VPackBuilder& builder, bool disableOptimizerRule
builder.add("memoryLimit", VPackValue(memoryLimit)); builder.add("memoryLimit", VPackValue(memoryLimit));
builder.add("maxNumberOfPlans", VPackValue(maxNumberOfPlans)); builder.add("maxNumberOfPlans", VPackValue(maxNumberOfPlans));
builder.add("maxWarningCount", VPackValue(maxWarningCount)); builder.add("maxWarningCount", VPackValue(maxWarningCount));
builder.add("timeout", VPackValue(timeout)); builder.add("maxRuntime", VPackValue(maxRuntime));
builder.add("satelliteSyncWait", VPackValue(satelliteSyncWait)); builder.add("satelliteSyncWait", VPackValue(satelliteSyncWait));
builder.add("ttl", VPackValue(ttl)); builder.add("ttl", VPackValue(ttl));
builder.add("profile", VPackValue(static_cast<uint32_t>(profile))); builder.add("profile", VPackValue(static_cast<uint32_t>(profile)));

View File

@ -61,7 +61,7 @@ struct QueryOptions {
size_t memoryLimit; size_t memoryLimit;
size_t maxNumberOfPlans; size_t maxNumberOfPlans;
size_t maxWarningCount; size_t maxWarningCount;
double timeout; // query has to execute within the given time or will be killed double maxRuntime; // query has to execute within the given time or will be killed
double satelliteSyncWait; double satelliteSyncWait;
double ttl; // time until query cursor expires - avoids coursors to double ttl; // time until query cursor expires - avoids coursors to
// stick around for ever if client does not collect the data // stick around for ever if client does not collect the data

View File

@ -41,12 +41,12 @@ function aqlOptionsTestSuite () {
return { return {
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
/// @brief test timeout option /// @brief test maxRuntime option
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
testTimeOut : function () { testMaxRuntime : function () {
try { try {
internal.db._query("LET x = SLEEP(10) RETURN 1", {} /*bind*/, { timeout : 1} /*options*/); internal.db._query("LET x = SLEEP(10) RETURN 1", {} /*bind*/, { maxRuntime : 1} /*options*/);
fail(); fail();
} catch (e) { } catch (e) {
assertEqual(e.errorNum, errors.ERROR_QUERY_KILLED.code); assertEqual(e.errorNum, errors.ERROR_QUERY_KILLED.code);