Commit e563939c66d76af9b0fe93721513cb48d45ab4a7

Authored by Igor Kulikov
2 parents 7a2b76b8 1ce365d8

Merge branch 'master' of github.com:thingsboard/thingsboard

... ... @@ -93,6 +93,7 @@ public class BaseRuleChainTransactionService implements RuleChainTransactionServ
93 93 TbTransactionTask transactionTask = new TbTransactionTask(msg, onStart, onEnd, onFailure, System.currentTimeMillis() + duration);
94 94 int queueSize = queue.size();
95 95 if (queueSize >= finalQueueSize) {
  96 + log.trace("Queue has no space: {}", transactionTask);
96 97 executeOnFailure(transactionTask.getOnFailure(), "Queue has no space!");
97 98 } else {
98 99 addMsgToQueues(queue, transactionTask);
... ...
... ... @@ -250,9 +250,9 @@ actors:
250 250 error_persist_frequency: "${ACTORS_RULE_NODE_ERROR_FREQUENCY:3000}"
251 251 transaction:
252 252 # Size of queues which store messages for transaction rule nodes
253   - queue_size: "${ACTORS_RULE_TRANSACTION_QUEUE_SIZE:20}"
  253 + queue_size: "${ACTORS_RULE_TRANSACTION_QUEUE_SIZE:15000}"
254 254 # Time in milliseconds for transaction to complete
255   - duration: "${ACTORS_RULE_TRANSACTION_DURATION:15000}"
  255 + duration: "${ACTORS_RULE_TRANSACTION_DURATION:60000}"
256 256 statistics:
257 257 # Enable/disable actor statistics
258 258 enabled: "${ACTORS_STATISTICS_ENABLED:true}"
... ...
... ... @@ -22,6 +22,7 @@ import org.thingsboard.server.common.data.kv.BaseAttributeKvEntry;
22 22 import org.thingsboard.server.common.data.kv.BasicTsKvEntry;
23 23 import org.thingsboard.server.common.data.kv.BooleanDataEntry;
24 24 import org.thingsboard.server.common.data.kv.DoubleDataEntry;
  25 +import org.thingsboard.server.common.data.kv.JsonDataEntry;
25 26 import org.thingsboard.server.common.data.kv.KvEntry;
26 27 import org.thingsboard.server.common.data.kv.LongDataEntry;
27 28 import org.thingsboard.server.common.data.kv.StringDataEntry;
... ... @@ -73,15 +74,28 @@ public class RestJsonConverter {
73 74 if (!value.isObject()) {
74 75 if (value.isBoolean()) {
75 76 return new BooleanDataEntry(key, value.asBoolean());
76   - } else if (value.isDouble()) {
77   - return new DoubleDataEntry(key, value.asDouble());
78   - } else if (value.isLong()) {
79   - return new LongDataEntry(key, value.asLong());
80   - } else {
  77 + } else if (value.isNumber()) {
  78 + return parseNumericValue(key, value);
  79 + } else if (value.isTextual()) {
81 80 return new StringDataEntry(key, value.asText());
  81 + } else {
  82 + throw new RuntimeException(CAN_T_PARSE_VALUE + value);
82 83 }
83 84 } else {
84   - throw new RuntimeException(CAN_T_PARSE_VALUE + value);
  85 + return new JsonDataEntry(key, value.toString());
  86 + }
  87 + }
  88 +
  89 + private static KvEntry parseNumericValue(String key, JsonNode value) {
  90 + if (value.isFloatingPointNumber()) {
  91 + return new DoubleDataEntry(key, value.asDouble());
  92 + } else {
  93 + try {
  94 + long longValue = Long.parseLong(value.toString());
  95 + return new LongDataEntry(key, longValue);
  96 + } catch (NumberFormatException e) {
  97 + throw new IllegalArgumentException("Big integer values are not supported!");
  98 + }
85 99 }
86 100 }
87 101 }
... ...