2014-12-04 4 views
1

ArangoDB 사용 2.3.1. 내 커서가 몇 분 안에 만료되는 것 같습니다. 나는 그들이 1 시간 동안 지속되기를 바란다.ArangoDB 커서 시간 초과

{ 
    "query": 'removed actual query', 
    "count": true, 
    "batchSize": 5, 
    "ttl": 3600000 
} 

나의 이해는 TTL 매개 변수는 3,600,000 밀리 초 또는 1 시간 동안 서버를 유지하기 위해 서버를 얘기해야한다는 것입니다 다음과 같이 나는 TTL 매개 변수 내 AQL 쿼리 개체를 설정했습니다. 하지만 약 60 초 내에 만료됩니다. 사실, TTL을 여러 다른 숫자로 변경하려고 시도했지만 아무 것도하지 않는 것 같습니다. 어떤 아이디어?

업데이트 : 아란로부터받은 실제 오류는

+0

설명서에 따르면 커서의 TTL은 밀리 초가 아닌 초 단위입니다. –

+0

TTL은 나중에 호출 할 수 있도록 커서를 활성 상태로 유지해야합니다. 연결이 시간 초과되면 ttl은 차이를 만들지 않습니다. –

+0

Arango의 실제 오류는 "커서를 찾을 수 없음"입니다. 따라서 커서가 시간 초과되어 더 이상 사용할 수 없다고 가정합니다. 이 시간 초과를 연장 할 수있는 아이디어는 있습니까? – skinneejoe

답변

0

당신이 시간 제한 지시어를 사용하여 시도 해 봤나 "커서를 찾을 수 없습니다"? X 초에

--server.keep-alive-timeout=X

. HTTP 연결 유지를위한 연결을

아니면 수동

에 따르면

keep-alive-timout=X

로 서버 섹션 아래 arangod.conf 파일에이를 삽입 할 수는 timout를 지정할 수 있습니다 . 제한 시간 값은 초 단위 여야합니다. 대기 상태의 연결 유지 연결은 제한 시간에 도달하면 서버에 의해 자동으로 닫힙니다.

+0

시도했지만 여전히 "커서를 찾을 수 없습니다"오류가 발생합니다. – skinneejoe

4

여러분 모두가 옳습니다. 그러나 나는 그것이 2.3의 버그라고 생각 :

--- a/arangod/V8Server/v8-vocbase.cpp 
+++ b/arangod/V8Server/v8-vocbase.cpp 
@@ -1216,13 +1216,13 @@ static v8::Handle<v8::Value> JS_ExecuteAql (v8::Arguments const& argv) { 

    optionName = v8::String::New("ttl"); 
    if (argValue->Has(optionName)) { 
-  ttl = TRI_ObjectToBoolean(argValue->Get(optionName)); 
+  ttl = TRI_ObjectToDouble(argValue->Get(optionName)); 
     ttl = (ttl <= 0.0 ? 30.0 : ttl); 
    } 

TTL 더블이고 그래서이 두 번되지 부울로 주조되어야한다. 불행히도 double에 bool을 할당하는 것은 C++에서 유효하므로 컴파일러는 불평하지 않았습니다.

+1

수정은 2.3.2와 함께 제공됩니다 – stj

+0

2.3.2 이전에이 문제를 해결하거나 해결할 수있는 방법에 대한 의견이 있으십니까? 감사! – skinneejoe

+0

2.3.2 이전 버전으로 가져올 수있는 유일한 방법은 위의 위치에 소스 코드를 수정하고 다시 컴파일하는 것입니다. 그러나 2.3.2는 곧 제공 될 예정입니다 (다음 주). – stj