diff --git a/application/pom.xml b/application/pom.xml
index ddd91e07e9..91965dfed5 100644
--- a/application/pom.xml
+++ b/application/pom.xml
@@ -20,7 +20,7 @@
4.0.0
org.thingsboard
- 2.3.0
+ 2.3.1-SNAPSHOT
thingsboard
application
diff --git a/application/src/main/java/org/thingsboard/server/actors/ActorSystemContext.java b/application/src/main/java/org/thingsboard/server/actors/ActorSystemContext.java
index 8433fdb1ea..2cc7e470c2 100644
--- a/application/src/main/java/org/thingsboard/server/actors/ActorSystemContext.java
+++ b/application/src/main/java/org/thingsboard/server/actors/ActorSystemContext.java
@@ -67,6 +67,7 @@ import org.thingsboard.server.service.encoding.DataDecodingEncodingService;
import org.thingsboard.server.service.executors.ClusterRpcCallbackExecutorService;
import org.thingsboard.server.service.executors.DbCallbackExecutorService;
import org.thingsboard.server.service.executors.ExternalCallExecutorService;
+import org.thingsboard.server.service.executors.SharedEventLoopGroupService;
import org.thingsboard.server.service.mail.MailExecutorService;
import org.thingsboard.server.service.rpc.DeviceRpcService;
import org.thingsboard.server.service.script.JsExecutorService;
@@ -206,6 +207,10 @@ public class ActorSystemContext {
@Getter
private ExternalCallExecutorService externalCallExecutorService;
+ @Autowired
+ @Getter
+ private SharedEventLoopGroupService sharedEventLoopGroupService;
+
@Autowired
@Getter
private MailService mailService;
diff --git a/application/src/main/java/org/thingsboard/server/actors/ruleChain/DefaultTbContext.java b/application/src/main/java/org/thingsboard/server/actors/ruleChain/DefaultTbContext.java
index ed50bdafa6..90a9d56e0c 100644
--- a/application/src/main/java/org/thingsboard/server/actors/ruleChain/DefaultTbContext.java
+++ b/application/src/main/java/org/thingsboard/server/actors/ruleChain/DefaultTbContext.java
@@ -17,6 +17,7 @@ package org.thingsboard.server.actors.ruleChain;
import akka.actor.ActorRef;
import com.datastax.driver.core.utils.UUIDs;
+import io.netty.channel.EventLoopGroup;
import org.springframework.util.StringUtils;
import org.thingsboard.rule.engine.api.ListeningExecutor;
import org.thingsboard.rule.engine.api.MailService;
@@ -238,6 +239,11 @@ class DefaultTbContext implements TbContext {
return mainCtx.getRuleChainTransactionService();
}
+ @Override
+ public EventLoopGroup getSharedEventLoop() {
+ return mainCtx.getSharedEventLoopGroupService().getSharedEventLoopGroup();
+ }
+
@Override
public MailService getMailService() {
if (mainCtx.isAllowSystemMailService()) {
diff --git a/application/src/main/java/org/thingsboard/server/service/executors/AbstractListeningExecutor.java b/application/src/main/java/org/thingsboard/server/service/executors/AbstractListeningExecutor.java
index fabd345b64..221915d02c 100644
--- a/application/src/main/java/org/thingsboard/server/service/executors/AbstractListeningExecutor.java
+++ b/application/src/main/java/org/thingsboard/server/service/executors/AbstractListeningExecutor.java
@@ -34,7 +34,7 @@ public abstract class AbstractListeningExecutor implements ListeningExecutor {
@PostConstruct
public void init() {
- this.service = MoreExecutors.listeningDecorator(Executors.newFixedThreadPool(getThreadPollSize()));
+ this.service = MoreExecutors.listeningDecorator(Executors.newWorkStealingPool(getThreadPollSize()));
}
@PreDestroy
diff --git a/application/src/main/java/org/thingsboard/server/service/executors/SharedEventLoopGroupService.java b/application/src/main/java/org/thingsboard/server/service/executors/SharedEventLoopGroupService.java
new file mode 100644
index 0000000000..e61b0db0f6
--- /dev/null
+++ b/application/src/main/java/org/thingsboard/server/service/executors/SharedEventLoopGroupService.java
@@ -0,0 +1,48 @@
+/**
+ * Copyright © 2016-2019 The Thingsboard Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.thingsboard.server.service.executors;
+
+import com.google.common.util.concurrent.MoreExecutors;
+import io.netty.channel.EventLoopGroup;
+import io.netty.channel.nio.NioEventLoopGroup;
+import lombok.Getter;
+import org.springframework.stereotype.Component;
+
+import javax.annotation.PostConstruct;
+import javax.annotation.PreDestroy;
+import java.util.concurrent.Executors;
+import java.util.concurrent.TimeUnit;
+
+@Component
+public class SharedEventLoopGroupService {
+
+ @Getter
+ private EventLoopGroup sharedEventLoopGroup;
+
+ @PostConstruct
+ public void init() {
+ this.sharedEventLoopGroup = new NioEventLoopGroup();
+ }
+
+ @PreDestroy
+ public void destroy() {
+ if (this.sharedEventLoopGroup != null) {
+ this.sharedEventLoopGroup.shutdownGracefully(0, 5, TimeUnit.SECONDS);
+ }
+ }
+
+}
diff --git a/application/src/main/java/org/thingsboard/server/service/script/AbstractNashornJsInvokeService.java b/application/src/main/java/org/thingsboard/server/service/script/AbstractNashornJsInvokeService.java
index f365ef68dc..62e7c24b1a 100644
--- a/application/src/main/java/org/thingsboard/server/service/script/AbstractNashornJsInvokeService.java
+++ b/application/src/main/java/org/thingsboard/server/service/script/AbstractNashornJsInvokeService.java
@@ -42,7 +42,7 @@ public abstract class AbstractNashornJsInvokeService extends AbstractJsInvokeSer
public void init() {
if (useJsSandbox()) {
sandbox = NashornSandboxes.create();
- monitorExecutorService = Executors.newFixedThreadPool(getMonitorThreadPoolSize());
+ monitorExecutorService = Executors.newWorkStealingPool(getMonitorThreadPoolSize());
sandbox.setExecutor(monitorExecutorService);
sandbox.setMaxCPUTime(getMaxCpuTime());
sandbox.allowNoBraces(false);
diff --git a/application/src/main/resources/thingsboard.yml b/application/src/main/resources/thingsboard.yml
index ba9382aa2d..235646f6c2 100644
--- a/application/src/main/resources/thingsboard.yml
+++ b/application/src/main/resources/thingsboard.yml
@@ -200,13 +200,13 @@ actors:
# Specify thread pool size for database request callbacks executor service
db_callback_thread_pool_size: "${ACTORS_RULE_DB_CALLBACK_THREAD_POOL_SIZE:1}"
# Specify thread pool size for javascript executor service
- js_thread_pool_size: "${ACTORS_RULE_JS_THREAD_POOL_SIZE:10}"
+ js_thread_pool_size: "${ACTORS_RULE_JS_THREAD_POOL_SIZE:50}"
# Specify thread pool size for mail sender executor service
- mail_thread_pool_size: "${ACTORS_RULE_MAIL_THREAD_POOL_SIZE:10}"
+ mail_thread_pool_size: "${ACTORS_RULE_MAIL_THREAD_POOL_SIZE:50}"
# Whether to allow usage of system mail service for rules
allow_system_mail_service: "${ACTORS_RULE_ALLOW_SYSTEM_MAIL_SERVICE:true}"
# Specify thread pool size for external call service
- external_call_thread_pool_size: "${ACTORS_RULE_EXTERNAL_CALL_THREAD_POOL_SIZE:10}"
+ external_call_thread_pool_size: "${ACTORS_RULE_EXTERNAL_CALL_THREAD_POOL_SIZE:50}"
chain:
# Errors for particular actor are persisted once per specified amount of milliseconds
error_persist_frequency: "${ACTORS_RULE_CHAIN_ERROR_FREQUENCY:3000}"
diff --git a/common/data/pom.xml b/common/data/pom.xml
index a289ee7d04..bb5d9c76ff 100644
--- a/common/data/pom.xml
+++ b/common/data/pom.xml
@@ -20,7 +20,7 @@
4.0.0
org.thingsboard
- 2.3.0
+ 2.3.1-SNAPSHOT
common
org.thingsboard.common
diff --git a/common/message/pom.xml b/common/message/pom.xml
index 24e2d8bb38..62fffe5d19 100644
--- a/common/message/pom.xml
+++ b/common/message/pom.xml
@@ -20,7 +20,7 @@
4.0.0
org.thingsboard
- 2.3.0
+ 2.3.1-SNAPSHOT
common
org.thingsboard.common
diff --git a/common/pom.xml b/common/pom.xml
index bb689002e1..3e7aa22dfc 100644
--- a/common/pom.xml
+++ b/common/pom.xml
@@ -20,7 +20,7 @@
4.0.0
org.thingsboard
- 2.3.0
+ 2.3.1-SNAPSHOT
thingsboard
common
diff --git a/common/queue/pom.xml b/common/queue/pom.xml
index aa5542cede..694d64ac21 100644
--- a/common/queue/pom.xml
+++ b/common/queue/pom.xml
@@ -20,7 +20,7 @@
4.0.0
org.thingsboard
- 2.3.0
+ 2.3.1-SNAPSHOT
common
org.thingsboard.common
diff --git a/common/transport/coap/pom.xml b/common/transport/coap/pom.xml
index b27fcd7763..18d2cc7590 100644
--- a/common/transport/coap/pom.xml
+++ b/common/transport/coap/pom.xml
@@ -20,7 +20,7 @@
4.0.0
org.thingsboard.common
- 2.3.0
+ 2.3.1-SNAPSHOT
transport
org.thingsboard.common.transport
diff --git a/common/transport/http/pom.xml b/common/transport/http/pom.xml
index e867aa1605..0933bb0b40 100644
--- a/common/transport/http/pom.xml
+++ b/common/transport/http/pom.xml
@@ -20,7 +20,7 @@
4.0.0
org.thingsboard.common
- 2.3.0
+ 2.3.1-SNAPSHOT
transport
org.thingsboard.common.transport
diff --git a/common/transport/mqtt/pom.xml b/common/transport/mqtt/pom.xml
index 95832aac51..08a8d56ef0 100644
--- a/common/transport/mqtt/pom.xml
+++ b/common/transport/mqtt/pom.xml
@@ -20,7 +20,7 @@
4.0.0
org.thingsboard.common
- 2.3.0
+ 2.3.1-SNAPSHOT
transport
org.thingsboard.common.transport
diff --git a/common/transport/pom.xml b/common/transport/pom.xml
index b63d6488bd..f2b70be45c 100644
--- a/common/transport/pom.xml
+++ b/common/transport/pom.xml
@@ -20,7 +20,7 @@
4.0.0
org.thingsboard
- 2.3.0
+ 2.3.1-SNAPSHOT
common
org.thingsboard.common
diff --git a/common/transport/transport-api/pom.xml b/common/transport/transport-api/pom.xml
index 407c414fce..aae1c3f930 100644
--- a/common/transport/transport-api/pom.xml
+++ b/common/transport/transport-api/pom.xml
@@ -20,7 +20,7 @@
4.0.0
org.thingsboard.common
- 2.3.0
+ 2.3.1-SNAPSHOT
transport
org.thingsboard.common.transport
diff --git a/dao/pom.xml b/dao/pom.xml
index 817a5449f6..3b73edede3 100644
--- a/dao/pom.xml
+++ b/dao/pom.xml
@@ -20,7 +20,7 @@
4.0.0
org.thingsboard
- 2.3.0
+ 2.3.1-SNAPSHOT
thingsboard
dao
diff --git a/docker/tb-js-executor.env b/docker/tb-js-executor.env
index f7f24acabf..38f283cd1a 100644
--- a/docker/tb-js-executor.env
+++ b/docker/tb-js-executor.env
@@ -4,4 +4,5 @@ TB_KAFKA_SERVERS=kafka:9092
LOGGER_LEVEL=info
LOG_FOLDER=logs
LOGGER_FILENAME=tb-js-executor-%DATE%.log
-DOCKER_MODE=true
\ No newline at end of file
+DOCKER_MODE=true
+SCRIPT_BODY_TRACE_FREQUENCY=1000
\ No newline at end of file
diff --git a/msa/black-box-tests/pom.xml b/msa/black-box-tests/pom.xml
index 813d344605..40461e1e9f 100644
--- a/msa/black-box-tests/pom.xml
+++ b/msa/black-box-tests/pom.xml
@@ -21,7 +21,7 @@
org.thingsboard
- 2.3.0
+ 2.3.1-SNAPSHOT
msa
org.thingsboard.msa
diff --git a/msa/js-executor/api/jsInvokeMessageProcessor.js b/msa/js-executor/api/jsInvokeMessageProcessor.js
index f79233ef76..1a1df75e09 100644
--- a/msa/js-executor/api/jsInvokeMessageProcessor.js
+++ b/msa/js-executor/api/jsInvokeMessageProcessor.js
@@ -15,16 +15,20 @@
*/
'use strict';
-const logger = require('../config/logger')('JsInvokeMessageProcessor'),
+const config = require('config'),
+ logger = require('../config/logger')('JsInvokeMessageProcessor'),
Utils = require('./utils'),
js = require('./jsinvoke.proto').js,
KeyedMessage = require('kafka-node').KeyedMessage,
JsExecutor = require('./jsExecutor');
+const scriptBodyTraceFrequency = Number(config.get('script.script_body_trace_frequency'));
+
function JsInvokeMessageProcessor(producer) {
this.producer = producer;
this.executor = new JsExecutor();
this.scriptMap = {};
+ this.executedScriptsCounter = 0;
}
JsInvokeMessageProcessor.prototype.onJsInvokeMessage = function(message) {
@@ -74,6 +78,13 @@ JsInvokeMessageProcessor.prototype.processCompileRequest = function(requestId, r
JsInvokeMessageProcessor.prototype.processInvokeRequest = function(requestId, responseTopic, invokeRequest) {
var scriptId = getScriptId(invokeRequest);
logger.debug('[%s] Processing invoke request, scriptId: [%s]', requestId, scriptId);
+ this.executedScriptsCounter++;
+ if ( this.executedScriptsCounter >= scriptBodyTraceFrequency ) {
+ this.executedScriptsCounter = 0;
+ if (logger.levels[logger.level] >= logger.levels['debug']) {
+ logger.debug('[%s] Executing script body: [%s]', scriptId, invokeRequest.scriptBody);
+ }
+ }
this.getOrCompileScript(scriptId, invokeRequest.scriptBody).then(
(script) => {
this.executor.executeScript(script, invokeRequest.args, invokeRequest.timeout).then(
diff --git a/msa/js-executor/config/custom-environment-variables.yml b/msa/js-executor/config/custom-environment-variables.yml
index d074bd9e45..99f47cb5f1 100644
--- a/msa/js-executor/config/custom-environment-variables.yml
+++ b/msa/js-executor/config/custom-environment-variables.yml
@@ -23,3 +23,6 @@ logger:
level: "LOGGER_LEVEL"
path: "LOG_FOLDER"
filename: "LOGGER_FILENAME"
+
+script:
+ script_body_trace_frequency: "SCRIPT_BODY_TRACE_FREQUENCY"
diff --git a/msa/js-executor/config/default.yml b/msa/js-executor/config/default.yml
index 9f82caa016..fb470567e7 100644
--- a/msa/js-executor/config/default.yml
+++ b/msa/js-executor/config/default.yml
@@ -24,3 +24,6 @@ logger:
level: "info"
path: "logs"
filename: "tb-js-executor-%DATE%.log"
+
+script:
+ script_body_trace_frequency: "1000"
diff --git a/msa/js-executor/package.json b/msa/js-executor/package.json
index 7ec6f92e7e..b1c512e54c 100644
--- a/msa/js-executor/package.json
+++ b/msa/js-executor/package.json
@@ -1,7 +1,7 @@
{
"name": "thingsboard-js-executor",
"private": true,
- "version": "2.3.0",
+ "version": "2.3.1",
"description": "ThingsBoard JavaScript Executor Microservice",
"main": "server.js",
"bin": "server.js",
diff --git a/msa/js-executor/pom.xml b/msa/js-executor/pom.xml
index 97c4b166b5..e5102798a7 100644
--- a/msa/js-executor/pom.xml
+++ b/msa/js-executor/pom.xml
@@ -20,7 +20,7 @@
4.0.0
org.thingsboard
- 2.3.0
+ 2.3.1-SNAPSHOT
msa
org.thingsboard.msa
diff --git a/msa/pom.xml b/msa/pom.xml
index 180ecae29a..5965b7f2fc 100644
--- a/msa/pom.xml
+++ b/msa/pom.xml
@@ -20,7 +20,7 @@
4.0.0
org.thingsboard
- 2.3.0
+ 2.3.1-SNAPSHOT
thingsboard
msa
diff --git a/msa/tb-node/pom.xml b/msa/tb-node/pom.xml
index bc0bd0ee60..d23a9b0710 100644
--- a/msa/tb-node/pom.xml
+++ b/msa/tb-node/pom.xml
@@ -20,7 +20,7 @@
4.0.0
org.thingsboard
- 2.3.0
+ 2.3.1-SNAPSHOT
msa
org.thingsboard.msa
diff --git a/msa/tb/pom.xml b/msa/tb/pom.xml
index f1eb88fffc..8a815e2e00 100644
--- a/msa/tb/pom.xml
+++ b/msa/tb/pom.xml
@@ -20,7 +20,7 @@
4.0.0
org.thingsboard
- 2.3.0
+ 2.3.1-SNAPSHOT
msa
org.thingsboard.msa
diff --git a/msa/transport/coap/pom.xml b/msa/transport/coap/pom.xml
index df185220a2..f92330a2d9 100644
--- a/msa/transport/coap/pom.xml
+++ b/msa/transport/coap/pom.xml
@@ -20,7 +20,7 @@
4.0.0
org.thingsboard.msa
- 2.3.0
+ 2.3.1-SNAPSHOT
transport
org.thingsboard.msa.transport
diff --git a/msa/transport/http/pom.xml b/msa/transport/http/pom.xml
index 628f0665eb..a45e05356a 100644
--- a/msa/transport/http/pom.xml
+++ b/msa/transport/http/pom.xml
@@ -20,7 +20,7 @@
4.0.0
org.thingsboard.msa
- 2.3.0
+ 2.3.1-SNAPSHOT
transport
org.thingsboard.msa.transport
diff --git a/msa/transport/mqtt/pom.xml b/msa/transport/mqtt/pom.xml
index 33eeaf9146..5347497606 100644
--- a/msa/transport/mqtt/pom.xml
+++ b/msa/transport/mqtt/pom.xml
@@ -20,7 +20,7 @@
4.0.0
org.thingsboard.msa
- 2.3.0
+ 2.3.1-SNAPSHOT
transport
org.thingsboard.msa.transport
diff --git a/msa/transport/pom.xml b/msa/transport/pom.xml
index 644605eafe..a78532f0c6 100644
--- a/msa/transport/pom.xml
+++ b/msa/transport/pom.xml
@@ -20,7 +20,7 @@
4.0.0
org.thingsboard
- 2.3.0
+ 2.3.1-SNAPSHOT
msa
org.thingsboard.msa
diff --git a/msa/web-ui/package.json b/msa/web-ui/package.json
index 43a7962aee..0bdb6cfa84 100644
--- a/msa/web-ui/package.json
+++ b/msa/web-ui/package.json
@@ -1,7 +1,7 @@
{
"name": "thingsboard-web-ui",
"private": true,
- "version": "2.3.0",
+ "version": "2.3.1",
"description": "ThingsBoard Web UI Microservice",
"main": "server.js",
"bin": "server.js",
diff --git a/msa/web-ui/pom.xml b/msa/web-ui/pom.xml
index 3768993e9b..8fb039b27e 100644
--- a/msa/web-ui/pom.xml
+++ b/msa/web-ui/pom.xml
@@ -20,7 +20,7 @@
4.0.0
org.thingsboard
- 2.3.0
+ 2.3.1-SNAPSHOT
msa
org.thingsboard.msa
diff --git a/netty-mqtt/pom.xml b/netty-mqtt/pom.xml
index 4e69394015..1af619fec2 100644
--- a/netty-mqtt/pom.xml
+++ b/netty-mqtt/pom.xml
@@ -19,12 +19,12 @@
4.0.0
org.thingsboard
- 2.3.0
+ 2.3.1-SNAPSHOT
thingsboard
org.thingsboard
netty-mqtt
- 2.3.0
+ 2.3.1-SNAPSHOT
jar
Netty MQTT Client
diff --git a/pom.xml b/pom.xml
index 794aa2ff9b..f2cde239b7 100755
--- a/pom.xml
+++ b/pom.xml
@@ -20,7 +20,7 @@
4.0.0
org.thingsboard
thingsboard
- 2.3.0
+ 2.3.1-SNAPSHOT
pom
Thingsboard
diff --git a/rule-engine/pom.xml b/rule-engine/pom.xml
index a704dd7d4e..53a516d7cb 100644
--- a/rule-engine/pom.xml
+++ b/rule-engine/pom.xml
@@ -20,7 +20,7 @@
4.0.0
org.thingsboard
- 2.3.0
+ 2.3.1-SNAPSHOT
thingsboard
rule-engine
diff --git a/rule-engine/rule-engine-api/pom.xml b/rule-engine/rule-engine-api/pom.xml
index 15f629a5d8..aed0372b0b 100644
--- a/rule-engine/rule-engine-api/pom.xml
+++ b/rule-engine/rule-engine-api/pom.xml
@@ -22,7 +22,7 @@
4.0.0
org.thingsboard
- 2.3.0
+ 2.3.1-SNAPSHOT
rule-engine
org.thingsboard.rule-engine
diff --git a/rule-engine/rule-engine-api/src/main/java/org/thingsboard/rule/engine/api/TbContext.java b/rule-engine/rule-engine-api/src/main/java/org/thingsboard/rule/engine/api/TbContext.java
index d3476a470c..9ebc610e1b 100644
--- a/rule-engine/rule-engine-api/src/main/java/org/thingsboard/rule/engine/api/TbContext.java
+++ b/rule-engine/rule-engine-api/src/main/java/org/thingsboard/rule/engine/api/TbContext.java
@@ -15,6 +15,7 @@
*/
package org.thingsboard.rule.engine.api;
+import io.netty.channel.EventLoopGroup;
import org.thingsboard.server.common.data.id.EntityId;
import org.thingsboard.server.common.data.id.RuleNodeId;
import org.thingsboard.server.common.data.id.TenantId;
@@ -105,4 +106,7 @@ public interface TbContext {
String getNodeId();
RuleChainTransactionService getRuleChainTransactionService();
+
+ EventLoopGroup getSharedEventLoop();
+
}
diff --git a/rule-engine/rule-engine-components/pom.xml b/rule-engine/rule-engine-components/pom.xml
index d95003c9df..01253f0acc 100644
--- a/rule-engine/rule-engine-components/pom.xml
+++ b/rule-engine/rule-engine-components/pom.xml
@@ -22,7 +22,7 @@
4.0.0
org.thingsboard
- 2.3.0
+ 2.3.1-SNAPSHOT
rule-engine
org.thingsboard.rule-engine
diff --git a/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/mqtt/TbMqttNode.java b/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/mqtt/TbMqttNode.java
index 3ffa910802..dd17414b87 100644
--- a/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/mqtt/TbMqttNode.java
+++ b/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/mqtt/TbMqttNode.java
@@ -59,15 +59,13 @@ public class TbMqttNode implements TbNode {
private TbMqttNodeConfiguration config;
- private EventLoopGroup eventLoopGroup;
private MqttClient mqttClient;
@Override
public void init(TbContext ctx, TbNodeConfiguration configuration) throws TbNodeException {
try {
this.config = TbNodeUtils.convert(configuration, TbMqttNodeConfiguration.class);
- this.eventLoopGroup = new NioEventLoopGroup();
- this.mqttClient = initClient();
+ this.mqttClient = initClient(ctx);
} catch (Exception e) {
throw new TbNodeException(e);
}
@@ -99,12 +97,9 @@ public class TbMqttNode implements TbNode {
if (this.mqttClient != null) {
this.mqttClient.disconnect();
}
- if (this.eventLoopGroup != null) {
- this.eventLoopGroup.shutdownGracefully(0, 5, TimeUnit.SECONDS);
- }
}
- private MqttClient initClient() throws Exception {
+ private MqttClient initClient(TbContext ctx) throws Exception {
Optional sslContextOpt = initSslContext();
MqttClientConfig config = sslContextOpt.isPresent() ? new MqttClientConfig(sslContextOpt.get()) : new MqttClientConfig();
if (!StringUtils.isEmpty(this.config.getClientId())) {
@@ -113,7 +108,7 @@ public class TbMqttNode implements TbNode {
config.setCleanSession(this.config.isCleanSession());
this.config.getCredentials().configure(config);
MqttClient client = MqttClient.create(config, null);
- client.setEventLoop(this.eventLoopGroup);
+ client.setEventLoop(ctx.getSharedEventLoop());
Future connectFuture = client.connect(this.config.getHost(), this.config.getPort());
MqttConnectResult result;
try {
diff --git a/tools/pom.xml b/tools/pom.xml
index 6da6c2fdc1..7f3e79be8c 100644
--- a/tools/pom.xml
+++ b/tools/pom.xml
@@ -20,7 +20,7 @@
4.0.0
org.thingsboard
- 2.3.0
+ 2.3.1-SNAPSHOT
thingsboard
tools
diff --git a/transport/coap/pom.xml b/transport/coap/pom.xml
index 05088b5bc6..874979c74d 100644
--- a/transport/coap/pom.xml
+++ b/transport/coap/pom.xml
@@ -20,7 +20,7 @@
4.0.0
org.thingsboard
- 2.3.0
+ 2.3.1-SNAPSHOT
transport
org.thingsboard.transport
diff --git a/transport/http/pom.xml b/transport/http/pom.xml
index d3e5cc47b4..8fc24706d6 100644
--- a/transport/http/pom.xml
+++ b/transport/http/pom.xml
@@ -20,7 +20,7 @@
4.0.0
org.thingsboard
- 2.3.0
+ 2.3.1-SNAPSHOT
transport
org.thingsboard.transport
diff --git a/transport/mqtt/pom.xml b/transport/mqtt/pom.xml
index cc0628e399..10dc810ff8 100644
--- a/transport/mqtt/pom.xml
+++ b/transport/mqtt/pom.xml
@@ -20,7 +20,7 @@
4.0.0
org.thingsboard
- 2.3.0
+ 2.3.1-SNAPSHOT
transport
org.thingsboard.transport
diff --git a/transport/pom.xml b/transport/pom.xml
index 4a70402d66..05abf6aa7b 100644
--- a/transport/pom.xml
+++ b/transport/pom.xml
@@ -20,7 +20,7 @@
4.0.0
org.thingsboard
- 2.3.0
+ 2.3.1-SNAPSHOT
thingsboard
transport
diff --git a/ui/package-lock.json b/ui/package-lock.json
index 30fd603198..9b8224e0ff 100644
--- a/ui/package-lock.json
+++ b/ui/package-lock.json
@@ -1,6 +1,6 @@
{
"name": "thingsboard",
- "version": "2.3.0",
+ "version": "2.3.1",
"lockfileVersion": 1,
"requires": true,
"dependencies": {
diff --git a/ui/package.json b/ui/package.json
index 7345ae6425..2600c62438 100644
--- a/ui/package.json
+++ b/ui/package.json
@@ -1,7 +1,7 @@
{
"name": "thingsboard",
"private": true,
- "version": "2.3.0",
+ "version": "2.3.1",
"description": "ThingsBoard UI",
"licenses": [
{
diff --git a/ui/pom.xml b/ui/pom.xml
index d5f91db026..591e92c458 100644
--- a/ui/pom.xml
+++ b/ui/pom.xml
@@ -20,7 +20,7 @@
4.0.0
org.thingsboard
- 2.3.0
+ 2.3.1-SNAPSHOT
thingsboard
org.thingsboard
diff --git a/ui/src/app/widget/lib/map-widget2.js b/ui/src/app/widget/lib/map-widget2.js
index 42e9cdb463..4762a3fda1 100644
--- a/ui/src/app/widget/lib/map-widget2.js
+++ b/ui/src/app/widget/lib/map-widget2.js
@@ -305,12 +305,9 @@ export default class TbMapWidgetV2 {
}
function updateLocationPolygonColor(location, color) {
- if (!location.settings.calculatedPolygonColor || location.settings.calculatedPolygonColor !== color) {
+ if (location.polygon && color) {
location.settings.calculatedPolygonColor = color;
- if (location.polygon) {
- tbMap.map.updatePolygonColor(location.polygon, location.settings, color);
- }
-
+ tbMap.map.updatePolygonColor(location.polygon, location.settings, color);
}
}
@@ -338,10 +335,8 @@ export default class TbMapWidgetV2 {
function updateLocationStyle(location, dataMap) {
updateLocationLabel(location, dataMap);
var color = calculateLocationColor(location, dataMap);
- var polygonColor = calculateLocationPolygonColor(location, dataMap);
var image = calculateLocationMarkerImage(location, dataMap);
updateLocationColor(location, color, image);
- if (location.settings.usePolygonColorFunction) updateLocationPolygonColor(location, polygonColor);
updateLocationMarkerIcon(location, image);
}
@@ -441,6 +436,7 @@ export default class TbMapWidgetV2 {
if (location.marker) {
updateLocationStyle(location, dataMap);
}
+
}
}
return locationChanged;
@@ -456,11 +452,13 @@ export default class TbMapWidgetV2 {
locationPolygonClick(event, location);
}, [location.dsIndex]);
tbMap.polygons.push(location.polygon);
+ if (location.settings.usePolygonColorFunction) updateLocationPolygonColor(location, calculateLocationPolygonColor(location, dataMap));
} else if (polygonLatLngs.length > 0) {
let prevPolygonArr = tbMap.map.getPolygonLatLngs(location.polygon);
if (!prevPolygonArr || !arraysEqual(prevPolygonArr, polygonLatLngs)) {
tbMap.map.setPolygonLatLngs(location.polygon, polygonLatLngs);
}
+ if (location.settings.usePolygonColorFunction) updateLocationPolygonColor(location, calculateLocationPolygonColor(location, dataMap));
}
}
}