Details
diff --git a/application/src/main/java/org/thingsboard/server/service/script/RemoteJsInvokeService.java b/application/src/main/java/org/thingsboard/server/service/script/RemoteJsInvokeService.java
index da8d62a..3507397 100644
--- a/application/src/main/java/org/thingsboard/server/service/script/RemoteJsInvokeService.java
+++ b/application/src/main/java/org/thingsboard/server/service/script/RemoteJsInvokeService.java
@@ -47,9 +47,6 @@ public class RemoteJsInvokeService extends AbstractJsInvokeService {
@Autowired
private TbKafkaSettings kafkaSettings;
- @Value("${js.remote.use_js_sandbox}")
- private boolean useJsSandbox;
-
@Value("${js.remote.request_topic}")
private String requestTopic;
@@ -99,8 +96,8 @@ public class RemoteJsInvokeService extends AbstractJsInvokeService {
}
@PreDestroy
- public void destroy(){
- if(kafkaTemplate != null){
+ public void destroy() {
+ if (kafkaTemplate != null) {
kafkaTemplate.stop();
}
}
@@ -138,14 +135,19 @@ public class RemoteJsInvokeService extends AbstractJsInvokeService {
if (scriptBody == null) {
return Futures.immediateFailedFuture(new RuntimeException("No script body found for scriptId: [" + scriptId + "]!"));
}
- JsInvokeProtos.JsInvokeRequest jsRequest = JsInvokeProtos.JsInvokeRequest.newBuilder()
+ JsInvokeProtos.JsInvokeRequest.Builder jsRequestBuilder = JsInvokeProtos.JsInvokeRequest.newBuilder()
.setScriptIdMSB(scriptId.getMostSignificantBits())
.setScriptIdLSB(scriptId.getLeastSignificantBits())
.setFunctionName(functionName)
- .setScriptBody(scriptIdToBodysMap.get(scriptId)).build();
+ .setTimeout((int) maxRequestsTimeout)
+ .setScriptBody(scriptIdToBodysMap.get(scriptId));
+
+ for (int i = 0; i < args.length; i++) {
+ jsRequestBuilder.setArgs(i, args[i].toString());
+ }
JsInvokeProtos.RemoteJsRequest jsRequestWrapper = JsInvokeProtos.RemoteJsRequest.newBuilder()
- .setInvokeRequest(jsRequest)
+ .setInvokeRequest(jsRequestBuilder.build())
.build();
ListenableFuture<JsInvokeProtos.RemoteJsResponse> future = kafkaTemplate.post(scriptId.toString(), jsRequestWrapper);
diff --git a/application/src/main/proto/jsinvoke.proto b/application/src/main/proto/jsinvoke.proto
index 475c7bd..d85c353 100644
--- a/application/src/main/proto/jsinvoke.proto
+++ b/application/src/main/proto/jsinvoke.proto
@@ -19,10 +19,10 @@ package js;
option java_package = "org.thingsboard.server.gen.js";
option java_outer_classname = "JsInvokeProtos";
-enum JsInvokeErrorCode{
+enum JsInvokeErrorCode {
COMPILATION_ERROR = 0;
RUNTIME_ERROR = 1;
- CPU_USAGE_ERROR = 2;
+ TIMEOUT_ERROR = 2;
}
message RemoteJsRequest {
@@ -69,7 +69,8 @@ message JsInvokeRequest {
int64 scriptIdLSB = 2;
string functionName = 3;
string scriptBody = 4;
- repeated string args = 5;
+ int32 timeout = 5;
+ repeated string args = 6;
}
message JsInvokeResponse {
diff --git a/application/src/main/resources/thingsboard.yml b/application/src/main/resources/thingsboard.yml
index eb40ac5..37fd6cf 100644
--- a/application/src/main/resources/thingsboard.yml
+++ b/application/src/main/resources/thingsboard.yml
@@ -415,7 +415,7 @@ kafka:
buffer.memory: "${TB_BUFFER_MEMORY:33554432}"
js:
- evaluator: "${JS_EVALUATOR:local}" # local/external
+ evaluator: "${JS_EVALUATOR:local}" # local/remote
# Built-in JVM JavaScript environment properties
local:
# Use Sandboxed (secured) JVM JavaScript environment
@@ -428,8 +428,6 @@ js:
max_errors: "${LOCAL_JS_SANDBOX_MAX_ERRORS:3}"
# Remote JavaScript environment properties
remote:
- # Use Sandboxed (secured) JVM JavaScript environment
- use_js_sandbox: "${USE_REMOTE_JS_SANDBOX:true}"
# JS Eval request topic
request_topic: "${REMOTE_JS_EVAL_REQUEST_TOPIC:js.eval.requests}"
# JS Eval responses topic prefix that is combined with node id
@@ -437,7 +435,7 @@ js:
# 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:20000}"
+ max_requests_timeout: "${REMOTE_JS_MAX_REQUEST_TIMEOUT:10000}"
# JS response poll interval
response_poll_interval: "${REMOTE_JS_RESPONSE_POLL_INTERVAL_MS:25}"
# Maximum allowed JavaScript execution errors before JavaScript will be blacklisted