added checkAndTruncateDebugEvent

This commit is contained in:
YevhenBondarenko 2020-10-01 17:43:48 +03:00 committed by Andrew Shvayka
parent a50368a1ae
commit 872a6fb45d

View File

@ -15,6 +15,7 @@
*/
package org.thingsboard.server.dao.event;
import com.fasterxml.jackson.databind.node.ObjectNode;
import com.google.common.util.concurrent.ListenableFuture;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
@ -28,6 +29,7 @@ import org.thingsboard.server.common.data.page.TimePageLink;
import org.thingsboard.server.dao.exception.DataValidationException;
import org.thingsboard.server.dao.service.DataValidator;
import java.nio.charset.StandardCharsets;
import java.util.List;
import java.util.Optional;
@ -35,6 +37,8 @@ import java.util.Optional;
@Slf4j
public class BaseEventService implements EventService {
private static final int MAX_DEBUG_EVENT_IN_BYTES = 10 * 1024;
@Autowired
public EventDao eventDao;
@ -47,6 +51,7 @@ public class BaseEventService implements EventService {
@Override
public ListenableFuture<Event> saveAsync(Event event) {
eventValidator.validate(event, Event::getTenantId);
checkAndTruncateDebugEvent(event);
return eventDao.saveAsync(event);
}
@ -56,9 +61,21 @@ public class BaseEventService implements EventService {
if (StringUtils.isEmpty(event.getUid())) {
throw new DataValidationException("Event uid should be specified!.");
}
checkAndTruncateDebugEvent(event);
return eventDao.saveIfNotExists(event);
}
private void checkAndTruncateDebugEvent(Event event) {
if (event.getType().startsWith("DEBUG")) {
String dataStr = event.getBody().get("data").asText();
int dataSize = dataStr.getBytes(StandardCharsets.UTF_8).length;
if (dataSize > MAX_DEBUG_EVENT_IN_BYTES) {
((ObjectNode) event.getBody()).put("data", dataStr.substring(0, 1024));
log.trace("[{}] Event was truncated.", event.getId());
}
}
}
@Override
public Optional<Event> findEvent(TenantId tenantId, EntityId entityId, String eventType, String eventUid) {
if (tenantId == null) {