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

This commit is contained in:
Igor Kulikov 2020-02-24 18:24:50 +02:00
commit e563939c66
3 changed files with 23 additions and 8 deletions

View File

@ -93,6 +93,7 @@ public class BaseRuleChainTransactionService implements RuleChainTransactionServ
TbTransactionTask transactionTask = new TbTransactionTask(msg, onStart, onEnd, onFailure, System.currentTimeMillis() + duration); TbTransactionTask transactionTask = new TbTransactionTask(msg, onStart, onEnd, onFailure, System.currentTimeMillis() + duration);
int queueSize = queue.size(); int queueSize = queue.size();
if (queueSize >= finalQueueSize) { if (queueSize >= finalQueueSize) {
log.trace("Queue has no space: {}", transactionTask);
executeOnFailure(transactionTask.getOnFailure(), "Queue has no space!"); executeOnFailure(transactionTask.getOnFailure(), "Queue has no space!");
} else { } else {
addMsgToQueues(queue, transactionTask); addMsgToQueues(queue, transactionTask);

View File

@ -250,9 +250,9 @@ actors:
error_persist_frequency: "${ACTORS_RULE_NODE_ERROR_FREQUENCY:3000}" error_persist_frequency: "${ACTORS_RULE_NODE_ERROR_FREQUENCY:3000}"
transaction: transaction:
# Size of queues which store messages for transaction rule nodes # Size of queues which store messages for transaction rule nodes
queue_size: "${ACTORS_RULE_TRANSACTION_QUEUE_SIZE:20}" queue_size: "${ACTORS_RULE_TRANSACTION_QUEUE_SIZE:15000}"
# Time in milliseconds for transaction to complete # Time in milliseconds for transaction to complete
duration: "${ACTORS_RULE_TRANSACTION_DURATION:15000}" duration: "${ACTORS_RULE_TRANSACTION_DURATION:60000}"
statistics: statistics:
# Enable/disable actor statistics # Enable/disable actor statistics
enabled: "${ACTORS_STATISTICS_ENABLED:true}" enabled: "${ACTORS_STATISTICS_ENABLED:true}"

View File

@ -22,6 +22,7 @@ import org.thingsboard.server.common.data.kv.BaseAttributeKvEntry;
import org.thingsboard.server.common.data.kv.BasicTsKvEntry; import org.thingsboard.server.common.data.kv.BasicTsKvEntry;
import org.thingsboard.server.common.data.kv.BooleanDataEntry; import org.thingsboard.server.common.data.kv.BooleanDataEntry;
import org.thingsboard.server.common.data.kv.DoubleDataEntry; import org.thingsboard.server.common.data.kv.DoubleDataEntry;
import org.thingsboard.server.common.data.kv.JsonDataEntry;
import org.thingsboard.server.common.data.kv.KvEntry; import org.thingsboard.server.common.data.kv.KvEntry;
import org.thingsboard.server.common.data.kv.LongDataEntry; import org.thingsboard.server.common.data.kv.LongDataEntry;
import org.thingsboard.server.common.data.kv.StringDataEntry; import org.thingsboard.server.common.data.kv.StringDataEntry;
@ -73,15 +74,28 @@ public class RestJsonConverter {
if (!value.isObject()) { if (!value.isObject()) {
if (value.isBoolean()) { if (value.isBoolean()) {
return new BooleanDataEntry(key, value.asBoolean()); return new BooleanDataEntry(key, value.asBoolean());
} else if (value.isDouble()) { } else if (value.isNumber()) {
return new DoubleDataEntry(key, value.asDouble()); return parseNumericValue(key, value);
} else if (value.isLong()) { } else if (value.isTextual()) {
return new LongDataEntry(key, value.asLong());
} else {
return new StringDataEntry(key, value.asText()); return new StringDataEntry(key, value.asText());
} else {
throw new RuntimeException(CAN_T_PARSE_VALUE + value);
} }
} else { } else {
throw new RuntimeException(CAN_T_PARSE_VALUE + value); return new JsonDataEntry(key, value.toString());
}
}
private static KvEntry parseNumericValue(String key, JsonNode value) {
if (value.isFloatingPointNumber()) {
return new DoubleDataEntry(key, value.asDouble());
} else {
try {
long longValue = Long.parseLong(value.toString());
return new LongDataEntry(key, longValue);
} catch (NumberFormatException e) {
throw new IllegalArgumentException("Big integer values are not supported!");
}
} }
} }
} }