Commit 1f5f411b4c6654d27230f594fe9c996cdb32083e

Authored by Igor Kulikov
2 parents 98227ea6 67f8327c

Merge with develop/2.5.5

... ... @@ -15,6 +15,7 @@
15 15 */
16 16 package org.thingsboard.server.dao.event;
17 17
  18 +import com.fasterxml.jackson.databind.node.ObjectNode;
18 19 import com.google.common.util.concurrent.ListenableFuture;
19 20 import lombok.extern.slf4j.Slf4j;
20 21 import org.apache.commons.lang3.StringUtils;
... ... @@ -28,6 +29,7 @@ import org.thingsboard.server.common.data.page.TimePageLink;
28 29 import org.thingsboard.server.dao.exception.DataValidationException;
29 30 import org.thingsboard.server.dao.service.DataValidator;
30 31
  32 +import java.nio.charset.StandardCharsets;
31 33 import java.util.List;
32 34 import java.util.Optional;
33 35
... ... @@ -35,6 +37,8 @@ import java.util.Optional;
35 37 @Slf4j
36 38 public class BaseEventService implements EventService {
37 39
  40 + private static final int MAX_DEBUG_EVENT_SYMBOLS = 4 * 1024;
  41 +
38 42 @Autowired
39 43 public EventDao eventDao;
40 44
... ... @@ -47,6 +51,7 @@ public class BaseEventService implements EventService {
47 51 @Override
48 52 public ListenableFuture<Event> saveAsync(Event event) {
49 53 eventValidator.validate(event, Event::getTenantId);
  54 + checkAndTruncateDebugEvent(event);
50 55 return eventDao.saveAsync(event);
51 56 }
52 57
... ... @@ -56,9 +61,21 @@ public class BaseEventService implements EventService {
56 61 if (StringUtils.isEmpty(event.getUid())) {
57 62 throw new DataValidationException("Event uid should be specified!.");
58 63 }
  64 + checkAndTruncateDebugEvent(event);
59 65 return eventDao.saveIfNotExists(event);
60 66 }
61 67
  68 + private void checkAndTruncateDebugEvent(Event event) {
  69 + if (event.getType().startsWith("DEBUG") && event.getBody() != null && event.getBody().has("data")) {
  70 + String dataStr = event.getBody().get("data").asText();
  71 + int length = dataStr.length();
  72 + if (length > MAX_DEBUG_EVENT_SYMBOLS) {
  73 + ((ObjectNode) event.getBody()).put("data", dataStr.substring(0, MAX_DEBUG_EVENT_SYMBOLS) + "...[truncated " + (length - MAX_DEBUG_EVENT_SYMBOLS) + " symbols]");
  74 + log.trace("[{}] Event was truncated: {}", event.getId(), dataStr);
  75 + }
  76 + }
  77 + }
  78 +
62 79 @Override
63 80 public Optional<Event> findEvent(TenantId tenantId, EntityId entityId, String eventType, String eventUid) {
64 81 if (tenantId == null) {
... ...