Browse Source

Added timestamp to entity deleted event, to have correct assign ts in alarms after unassignment

pull/9035/head
imbeacon 3 years ago
parent
commit
35b86999b1
  1. 6
      application/src/main/java/org/thingsboard/server/service/entitiy/alarm/DefaultTbAlarmService.java
  2. 2
      application/src/main/java/org/thingsboard/server/service/entitiy/alarm/TbAlarmService.java
  3. 4
      application/src/main/java/org/thingsboard/server/service/housekeeper/InMemoryHouseKeeperServiceService.java
  4. 2
      common/dao-api/src/main/java/org/thingsboard/server/dao/housekeeper/HouseKeeperService.java
  5. 3
      dao/src/main/java/org/thingsboard/server/dao/eventsourcing/DeleteEntityEvent.java

6
application/src/main/java/org/thingsboard/server/service/entitiy/alarm/DefaultTbAlarmService.java

@ -225,14 +225,14 @@ public class DefaultTbAlarmService extends AbstractTbEntityService implements Tb
}
@Override
public List<AlarmId> unassignDeletedUserAlarms(TenantId tenantId, User user) {
public List<AlarmId> unassignDeletedUserAlarms(TenantId tenantId, User user, long unassignTs) {
List<AlarmId> totalAlarmIds = new ArrayList<>();
List<AlarmId> alarmIds;
do {
alarmIds = alarmService.findAlarmIdsByAssigneeId(tenantId, user.getId(), 100);
for (AlarmId alarmId : alarmIds) {
log.trace("[{}] Unassigning alarm {} userId {}", tenantId, alarmId.getId(), user.getId().getId());
AlarmApiCallResult result = alarmSubscriptionService.unassignAlarm(user.getTenantId(), alarmId, System.currentTimeMillis());
AlarmApiCallResult result = alarmSubscriptionService.unassignAlarm(user.getTenantId(), alarmId, unassignTs);
Alarm alarm = result.getAlarm();
if (!result.isSuccessful()) {
continue;
@ -268,7 +268,7 @@ public class DefaultTbAlarmService extends AbstractTbEntityService implements Tb
log.trace("[{}] DeleteEntityEvent handler: {}", event.getTenantId(), event);
EntityId entityId = event.getEntityId();
if (EntityType.USER.equals(entityId.getEntityType())) {
housekeeper.unassignDeletedUserAlarms(event.getTenantId(), (User) event.getEntity());
housekeeper.unassignDeletedUserAlarms(event.getTenantId(), (User) event.getEntity(), event.getTs());
}
}

2
application/src/main/java/org/thingsboard/server/service/entitiy/alarm/TbAlarmService.java

@ -41,7 +41,7 @@ public interface TbAlarmService {
AlarmInfo unassign(Alarm alarm, long unassignTs, User user) throws ThingsboardException;
List<AlarmId> unassignDeletedUserAlarms(TenantId tenantId, User user);
List<AlarmId> unassignDeletedUserAlarms(TenantId tenantId, User user, long unassignTs);
Boolean delete(Alarm alarm, User user);
}

4
application/src/main/java/org/thingsboard/server/service/housekeeper/InMemoryHouseKeeperServiceService.java

@ -66,10 +66,10 @@ public class InMemoryHouseKeeperServiceService implements HouseKeeperService {
}
@Override
public ListenableFuture<List<AlarmId>> unassignDeletedUserAlarms(TenantId tenantId, User user) {
public ListenableFuture<List<AlarmId>> unassignDeletedUserAlarms(TenantId tenantId, User user, long unassignTs) {
log.debug("[{}][{}] unassignDeletedUserAlarms submitting, pending queue size: {} ", tenantId, user.getId().getId(), queueSize.get());
queueSize.incrementAndGet();
ListenableFuture<List<AlarmId>> future = executor.submit(() -> alarmService.unassignDeletedUserAlarms(tenantId, user));
ListenableFuture<List<AlarmId>> future = executor.submit(() -> alarmService.unassignDeletedUserAlarms(tenantId, user, unassignTs));
Futures.addCallback(future, new FutureCallback<>() {
@Override
public void onSuccess(List<AlarmId> alarmIds) {

2
common/dao-api/src/main/java/org/thingsboard/server/dao/housekeeper/HouseKeeperService.java

@ -24,6 +24,6 @@ import java.util.List;
public interface HouseKeeperService {
ListenableFuture<List<AlarmId>> unassignDeletedUserAlarms(TenantId tenantId, User user);
ListenableFuture<List<AlarmId>> unassignDeletedUserAlarms(TenantId tenantId, User user, long unassignTs);
}

3
dao/src/main/java/org/thingsboard/server/dao/eventsourcing/DeleteEntityEvent.java

@ -28,4 +28,7 @@ public class DeleteEntityEvent<T> {
private final EntityId entityId;
private final EdgeId edgeId;
private final T entity;
@Builder.Default
private final long ts = System.currentTimeMillis();
}

Loading…
Cancel
Save