separated max_requests_timeout for RemoteJsInvokeService

This commit is contained in:
YevhenBondarenko 2020-05-14 12:06:12 +03:00 committed by Andrew Shvayka
parent c2dd91d819
commit ebee42a0ee
6 changed files with 20 additions and 15 deletions

View File

@ -46,8 +46,11 @@ import java.util.concurrent.atomic.AtomicInteger;
@Service
public class RemoteJsInvokeService extends AbstractJsInvokeService {
@Value("${queue.js.max_requests_timeout}")
private long maxRequestsTimeout;
@Value("${queue.js.max_eval_requests_timeout}")
private long maxEvalRequestsTimeout;
@Value("${queue.js.max_invoke_requests_timeout}")
private long maxInvokeRequestsTimeout;
@Getter
@Value("${js.remote.max_errors}")
@ -87,7 +90,7 @@ public class RemoteJsInvokeService extends AbstractJsInvokeService {
@PostConstruct
public void init() {
super.init(maxRequestsTimeout);
super.init(maxInvokeRequestsTimeout);
requestTemplate.init();
}
@ -113,8 +116,8 @@ public class RemoteJsInvokeService extends AbstractJsInvokeService {
log.trace("Post compile request for scriptId [{}]", scriptId);
ListenableFuture<TbProtoQueueMsg<JsInvokeProtos.RemoteJsResponse>> future = requestTemplate.send(new TbProtoJsQueueMsg<>(UUID.randomUUID(), jsRequestWrapper));
if (maxRequestsTimeout > 0) {
future = Futures.withTimeout(future, maxRequestsTimeout, TimeUnit.MILLISECONDS, timeoutExecutorService);
if (maxEvalRequestsTimeout > 0) {
future = Futures.withTimeout(future, maxEvalRequestsTimeout, TimeUnit.MILLISECONDS, timeoutExecutorService);
}
queuePushedMsgs.incrementAndGet();
Futures.addCallback(future, new FutureCallback<TbProtoQueueMsg<JsInvokeProtos.RemoteJsResponse>>() {
@ -155,7 +158,7 @@ public class RemoteJsInvokeService extends AbstractJsInvokeService {
.setScriptIdMSB(scriptId.getMostSignificantBits())
.setScriptIdLSB(scriptId.getLeastSignificantBits())
.setFunctionName(functionName)
.setTimeout((int) maxRequestsTimeout)
.setTimeout((int) maxInvokeRequestsTimeout)
.setScriptBody(scriptIdToBodysMap.get(scriptId));
for (Object arg : args) {
@ -167,8 +170,8 @@ public class RemoteJsInvokeService extends AbstractJsInvokeService {
.build();
ListenableFuture<TbProtoQueueMsg<JsInvokeProtos.RemoteJsResponse>> future = requestTemplate.send(new TbProtoJsQueueMsg<>(UUID.randomUUID(), jsRequestWrapper));
if (maxRequestsTimeout > 0) {
future = Futures.withTimeout(future, maxRequestsTimeout, TimeUnit.MILLISECONDS, timeoutExecutorService);
if (maxInvokeRequestsTimeout > 0) {
future = Futures.withTimeout(future, maxInvokeRequestsTimeout, TimeUnit.MILLISECONDS, timeoutExecutorService);
}
queuePushedMsgs.incrementAndGet();
Futures.addCallback(future, new FutureCallback<TbProtoQueueMsg<JsInvokeProtos.RemoteJsResponse>>() {
@ -210,8 +213,8 @@ public class RemoteJsInvokeService extends AbstractJsInvokeService {
.build();
ListenableFuture<TbProtoQueueMsg<JsInvokeProtos.RemoteJsResponse>> future = requestTemplate.send(new TbProtoJsQueueMsg<>(UUID.randomUUID(), jsRequestWrapper));
if (maxRequestsTimeout > 0) {
future = Futures.withTimeout(future, maxRequestsTimeout, TimeUnit.MILLISECONDS, timeoutExecutorService);
if (maxInvokeRequestsTimeout > 0) {
future = Futures.withTimeout(future, maxInvokeRequestsTimeout, TimeUnit.MILLISECONDS, timeoutExecutorService);
}
JsInvokeProtos.RemoteJsResponse response = future.get().getValue();

View File

@ -669,7 +669,9 @@ queue:
# JS Eval max pending requests
max_pending_requests: "${REMOTE_JS_MAX_PENDING_REQUESTS:10000}"
# JS Eval max request timeout
max_requests_timeout: "${REMOTE_JS_MAX_REQUEST_TIMEOUT:10000}"
max_eval_requests_timeout: "${REMOTE_JS_MAX_EVAL_REQUEST_TIMEOUT:60000}"
# JS Invoke max request timeout
max_invoke_requests_timeout: "${REMOTE_JS_MAX_INVOKE_REQUEST_TIMEOUT:10000}"
# JS response poll interval
response_poll_interval: "${REMOTE_JS_RESPONSE_POLL_INTERVAL_MS:25}"
# JS response auto commit interval

View File

@ -37,6 +37,6 @@ public class TbQueueRemoteJsInvokeSettings {
@Value("${queue.js.response_auto_commit_interval}")
private int autoCommitInterval;
@Value("${queue.js.max_requests_timeout}")
@Value("${queue.js.max_invoke_requests_timeout}")
private long maxRequestsTimeout;
}

View File

@ -2,4 +2,4 @@ TB_QUEUE_TYPE=aws-sqs
TB_QUEUE_AWS_SQS_ACCESS_KEY_ID=YOUR_KEY
TB_QUEUE_AWS_SQS_SECRET_ACCESS_KEY=YOUR_SECRET
TB_QUEUE_AWS_SQS_REGION=YOUR_REGION
REMOTE_JS_MAX_REQUEST_TIMEOUT=60000
REMOTE_JS_MAX_INVOKE_REQUEST_TIMEOUT=60000

View File

@ -1,4 +1,4 @@
TB_QUEUE_TYPE=pubsub
TB_QUEUE_PUBSUB_PROJECT_ID=YOUR_PROJECT_ID
TB_QUEUE_PUBSUB_SERVICE_ACCOUNT=YOUR_SERVICE_ACCOUNT
REMOTE_JS_MAX_REQUEST_TIMEOUT=60000
REMOTE_JS_MAX_INVOKE_REQUEST_TIMEOUT=60000

View File

@ -2,4 +2,4 @@ TB_QUEUE_TYPE=service-bus
TB_QUEUE_SERVICE_BUS_NAMESPACE_NAME=YOUR_NAMESPACE_NAME
TB_QUEUE_SERVICE_BUS_SAS_KEY_NAME=YOUR_SAS_KEY_NAME
TB_QUEUE_SERVICE_BUS_SAS_KEY=YOUR_SAS_KEY
REMOTE_JS_MAX_REQUEST_TIMEOUT=60000
REMOTE_JS_MAX_INVOKE_REQUEST_TIMEOUT=60000