Browse Source

Refactor events clearing

pull/5814/head
Viacheslav Klimov 5 years ago
parent
commit
144da0367a
  1. 2
      application/src/main/java/org/thingsboard/server/controller/EventController.java
  2. 3
      common/dao-api/src/main/java/org/thingsboard/server/dao/event/EventService.java
  3. 45
      dao/src/main/java/org/thingsboard/server/dao/event/BaseEventService.java

2
application/src/main/java/org/thingsboard/server/controller/EventController.java

@ -265,7 +265,7 @@ public class EventController extends BaseController {
EntityId entityId = EntityIdFactory.getByTypeAndId(strEntityType, strEntityId); EntityId entityId = EntityIdFactory.getByTypeAndId(strEntityType, strEntityId);
checkEntityId(entityId, Operation.DELETE); checkEntityId(entityId, Operation.DELETE);
eventService.removeEventsByTypeInPeriod(tenantId, entityId, eventType, startTime, endTime); eventService.removeEvents(tenantId, entityId, eventType, startTime, endTime);
} catch (Exception e) { } catch (Exception e) {
throw handleException(e); throw handleException(e);
} }

3
common/dao-api/src/main/java/org/thingsboard/server/dao/event/EventService.java

@ -46,7 +46,8 @@ public interface EventService {
void removeEvents(TenantId tenantId, EntityId entityId); void removeEvents(TenantId tenantId, EntityId entityId);
void removeEvents(TenantId tenantId, EntityId entityId, String eventType, Long startTime, Long endTime);
void cleanupEvents(long ttl, long debugTtl); void cleanupEvents(long ttl, long debugTtl);
void removeEventsByTypeInPeriod(TenantId tenantId, EntityId entityId, String eventType, Long startTime, Long endTime);
} }

45
dao/src/main/java/org/thingsboard/server/dao/event/BaseEventService.java

@ -32,7 +32,6 @@ import org.thingsboard.server.common.data.page.TimePageLink;
import org.thingsboard.server.dao.exception.DataValidationException; import org.thingsboard.server.dao.exception.DataValidationException;
import org.thingsboard.server.dao.service.DataValidator; import org.thingsboard.server.dao.service.DataValidator;
import java.sql.Time;
import java.util.List; import java.util.List;
import java.util.Optional; import java.util.Optional;
import java.util.UUID; import java.util.UUID;
@ -122,35 +121,33 @@ public class BaseEventService implements EventService {
@Override @Override
public void removeEvents(TenantId tenantId, EntityId entityId) { public void removeEvents(TenantId tenantId, EntityId entityId) {
TimePageLink eventPageLink = new TimePageLink(1000); removeEvents(tenantId, entityId, null, null, null);
removeEventsByTypeAndPageLink(tenantId, entityId, null, eventPageLink);
} }
@Override @Override
public void cleanupEvents(long ttl, long debugTtl) { public void removeEvents(TenantId tenantId, EntityId entityId, String eventType, Long startTime, Long endTime) {
eventDao.cleanupEvents(ttl, debugTtl); TimePageLink eventsPageLink = new TimePageLink(1000, 0, null, null, startTime, endTime);
} PageData<Event> eventsPageData;
do {
if (eventType == null) {
eventsPageData = findEvents(tenantId, entityId, eventsPageLink);
} else {
eventsPageData = findEvents(tenantId, entityId, eventType, eventsPageLink);
}
@Override eventDao.removeAllByIds(eventsPageData.getData().stream()
public void removeEventsByTypeInPeriod(TenantId tenantId, EntityId entityId, String eventType, Long startTime, Long endTime) { .map(IdBased::getUuidId)
TimePageLink eventPageLink = .collect(Collectors.toList()));
new TimePageLink(1000, 0, null, null, startTime, endTime);
removeEventsByTypeAndPageLink(tenantId, entityId, eventType, eventPageLink);
}
private void removeEventsByTypeAndPageLink(TenantId tenantId, EntityId entityId, String eventType, TimePageLink eventPageLink) { if (eventsPageData.hasNext()) {
PageData<Event> eventPageData; eventsPageLink = eventsPageLink.nextPageLink();
do {
if (eventType == null)
eventPageData = findEvents(tenantId, entityId, eventPageLink);
else
eventPageData = findEvents(tenantId, entityId, eventType, eventPageLink);
List<UUID> eventsIds = eventPageData.getData().stream().map(IdBased::getUuidId).collect(Collectors.toList());
eventDao.removeAllByIds(eventsIds);
if (eventPageData.hasNext()) {
eventPageLink = eventPageLink.nextPageLink();
} }
} while (eventPageData.hasNext()); } while (eventsPageData.hasNext());
}
@Override
public void cleanupEvents(long ttl, long debugTtl) {
eventDao.cleanupEvents(ttl, debugTtl);
} }
private DataValidator<Event> eventValidator = private DataValidator<Event> eventValidator =

Loading…
Cancel
Save