ts notification
This commit is contained in:
		
							parent
							
								
									6d97d9466f
								
							
						
					
					
						commit
						b79c2407c4
					
				@ -573,10 +573,9 @@ public class TelemetryController extends BaseController {
 | 
			
		||||
            for (String key : keys) {
 | 
			
		||||
                deleteTsKvQueries.add(new BaseDeleteTsKvQuery(key, deleteFromTs, deleteToTs, rewriteLatestIfDeleted));
 | 
			
		||||
            }
 | 
			
		||||
            ListenableFuture<List<Void>> future = tsService.remove(user.getTenantId(), entityId, deleteTsKvQueries);
 | 
			
		||||
            Futures.addCallback(future, new FutureCallback<>() {
 | 
			
		||||
            tsSubService.deleteTimeseriesAndNotify(tenantId, entityId, keys, deleteTsKvQueries, new FutureCallback<>() {
 | 
			
		||||
                @Override
 | 
			
		||||
                public void onSuccess(@Nullable List<Void> tmp) {
 | 
			
		||||
                public void onSuccess(@Nullable Void tmp) {
 | 
			
		||||
                    logTimeseriesDeleted(user, entityId, keys, deleteFromTs, deleteToTs, null);
 | 
			
		||||
                    result.setResult(new ResponseEntity<>(HttpStatus.OK));
 | 
			
		||||
                }
 | 
			
		||||
@ -586,7 +585,7 @@ public class TelemetryController extends BaseController {
 | 
			
		||||
                    logTimeseriesDeleted(user, entityId, keys, deleteFromTs, deleteToTs, t);
 | 
			
		||||
                    result.setResult(new ResponseEntity<>(HttpStatus.INTERNAL_SERVER_ERROR));
 | 
			
		||||
                }
 | 
			
		||||
            }, executor);
 | 
			
		||||
            });
 | 
			
		||||
        });
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -26,14 +26,15 @@ import org.springframework.scheduling.annotation.Scheduled;
 | 
			
		||||
import org.springframework.stereotype.Service;
 | 
			
		||||
import org.thingsboard.common.util.JacksonUtil;
 | 
			
		||||
import org.thingsboard.common.util.ThingsBoardThreadFactory;
 | 
			
		||||
import org.thingsboard.server.common.data.rpc.RpcError;
 | 
			
		||||
import org.thingsboard.server.actors.ActorSystemContext;
 | 
			
		||||
import org.thingsboard.server.common.data.alarm.Alarm;
 | 
			
		||||
import org.thingsboard.server.common.data.id.TenantId;
 | 
			
		||||
import org.thingsboard.server.common.data.rpc.RpcError;
 | 
			
		||||
import org.thingsboard.server.common.msg.MsgType;
 | 
			
		||||
import org.thingsboard.server.common.msg.TbActorMsg;
 | 
			
		||||
import org.thingsboard.server.common.msg.queue.ServiceType;
 | 
			
		||||
import org.thingsboard.server.common.msg.queue.TbCallback;
 | 
			
		||||
import org.thingsboard.server.common.msg.rpc.FromDeviceRpcResponse;
 | 
			
		||||
import org.thingsboard.server.common.stats.StatsFactory;
 | 
			
		||||
import org.thingsboard.server.common.transport.util.DataDecodingEncodingService;
 | 
			
		||||
import org.thingsboard.server.dao.tenant.TbTenantProfileCache;
 | 
			
		||||
@ -47,6 +48,7 @@ import org.thingsboard.server.gen.transport.TransportProtos.TbAlarmUpdateProto;
 | 
			
		||||
import org.thingsboard.server.gen.transport.TransportProtos.TbAttributeDeleteProto;
 | 
			
		||||
import org.thingsboard.server.gen.transport.TransportProtos.TbAttributeUpdateProto;
 | 
			
		||||
import org.thingsboard.server.gen.transport.TransportProtos.TbSubscriptionCloseProto;
 | 
			
		||||
import org.thingsboard.server.gen.transport.TransportProtos.TbTimeSeriesDeleteProto;
 | 
			
		||||
import org.thingsboard.server.gen.transport.TransportProtos.TbTimeSeriesUpdateProto;
 | 
			
		||||
import org.thingsboard.server.gen.transport.TransportProtos.ToCoreMsg;
 | 
			
		||||
import org.thingsboard.server.gen.transport.TransportProtos.ToCoreNotificationMsg;
 | 
			
		||||
@ -64,7 +66,6 @@ import org.thingsboard.server.service.ota.OtaPackageStateService;
 | 
			
		||||
import org.thingsboard.server.service.profile.TbDeviceProfileCache;
 | 
			
		||||
import org.thingsboard.server.service.queue.processing.AbstractConsumerService;
 | 
			
		||||
import org.thingsboard.server.service.queue.processing.IdMsgPair;
 | 
			
		||||
import org.thingsboard.server.common.msg.rpc.FromDeviceRpcResponse;
 | 
			
		||||
import org.thingsboard.server.service.rpc.TbCoreDeviceRpcService;
 | 
			
		||||
import org.thingsboard.server.service.rpc.ToDeviceRpcRequestActorMsg;
 | 
			
		||||
import org.thingsboard.server.service.state.DeviceStateService;
 | 
			
		||||
@ -467,6 +468,12 @@ public class DefaultTbCoreConsumerService extends AbstractConsumerService<ToCore
 | 
			
		||||
                    new TenantId(new UUID(proto.getTenantIdMSB(), proto.getTenantIdLSB())),
 | 
			
		||||
                    TbSubscriptionUtils.toEntityId(proto.getEntityType(), proto.getEntityIdMSB(), proto.getEntityIdLSB()),
 | 
			
		||||
                    proto.getScope(), proto.getKeysList(), callback);
 | 
			
		||||
        } else if (msg.hasTsDelete()) {
 | 
			
		||||
            TbTimeSeriesDeleteProto proto = msg.getTsDelete();
 | 
			
		||||
            subscriptionManagerService.onTimeSeriesDelete(
 | 
			
		||||
                    new TenantId(new UUID(proto.getTenantIdMSB(), proto.getTenantIdLSB())),
 | 
			
		||||
                    TbSubscriptionUtils.toEntityId(proto.getEntityType(), proto.getEntityIdMSB(), proto.getEntityIdLSB()),
 | 
			
		||||
                    proto.getKeysList(), callback);
 | 
			
		||||
        } else if (msg.hasAlarmUpdate()) {
 | 
			
		||||
            TbAlarmUpdateProto proto = msg.getAlarmUpdate();
 | 
			
		||||
            subscriptionManagerService.onAlarmUpdate(
 | 
			
		||||
 | 
			
		||||
@ -19,8 +19,10 @@ import lombok.extern.slf4j.Slf4j;
 | 
			
		||||
import org.springframework.beans.factory.annotation.Autowired;
 | 
			
		||||
import org.springframework.stereotype.Service;
 | 
			
		||||
import org.thingsboard.common.util.DonAsynchron;
 | 
			
		||||
import org.thingsboard.common.util.JacksonUtil;
 | 
			
		||||
import org.thingsboard.common.util.ThingsBoardThreadFactory;
 | 
			
		||||
import org.thingsboard.rule.engine.api.msg.DeviceAttributesEventNotificationMsg;
 | 
			
		||||
import org.thingsboard.server.cluster.TbClusterService;
 | 
			
		||||
import org.thingsboard.server.common.data.DataConstants;
 | 
			
		||||
import org.thingsboard.server.common.data.EntityType;
 | 
			
		||||
import org.thingsboard.server.common.data.alarm.Alarm;
 | 
			
		||||
@ -40,20 +42,20 @@ import org.thingsboard.server.common.msg.queue.TbCallback;
 | 
			
		||||
import org.thingsboard.server.common.msg.queue.TopicPartitionInfo;
 | 
			
		||||
import org.thingsboard.server.dao.attributes.AttributesService;
 | 
			
		||||
import org.thingsboard.server.dao.timeseries.TimeseriesService;
 | 
			
		||||
import org.thingsboard.common.util.JacksonUtil;
 | 
			
		||||
import org.thingsboard.server.gen.transport.TransportProtos.*;
 | 
			
		||||
import org.thingsboard.server.gen.transport.TransportProtos.LocalSubscriptionServiceMsgProto;
 | 
			
		||||
import org.thingsboard.server.gen.transport.TransportProtos.TbAlarmSubscriptionUpdateProto;
 | 
			
		||||
import org.thingsboard.server.gen.transport.TransportProtos.TbSubscriptionUpdateProto;
 | 
			
		||||
import org.thingsboard.server.gen.transport.TransportProtos.TbSubscriptionUpdateTsValue;
 | 
			
		||||
import org.thingsboard.server.gen.transport.TransportProtos.TbSubscriptionUpdateValueListProto;
 | 
			
		||||
import org.thingsboard.server.gen.transport.TransportProtos.ToCoreNotificationMsg;
 | 
			
		||||
import org.thingsboard.server.queue.TbQueueProducer;
 | 
			
		||||
import org.thingsboard.server.queue.common.TbProtoQueueMsg;
 | 
			
		||||
import org.thingsboard.server.queue.discovery.event.PartitionChangeEvent;
 | 
			
		||||
import org.thingsboard.server.queue.discovery.PartitionService;
 | 
			
		||||
import org.thingsboard.server.queue.discovery.TbApplicationEventListener;
 | 
			
		||||
import org.thingsboard.server.queue.discovery.TbServiceInfoProvider;
 | 
			
		||||
import org.thingsboard.server.queue.discovery.event.PartitionChangeEvent;
 | 
			
		||||
import org.thingsboard.server.queue.provider.TbQueueProducerProvider;
 | 
			
		||||
import org.thingsboard.server.queue.util.TbCoreComponent;
 | 
			
		||||
import org.thingsboard.server.cluster.TbClusterService;
 | 
			
		||||
import org.thingsboard.server.service.state.DefaultDeviceStateService;
 | 
			
		||||
import org.thingsboard.server.service.state.DeviceStateService;
 | 
			
		||||
import org.thingsboard.server.service.telemetry.sub.AlarmSubscriptionUpdate;
 | 
			
		||||
@ -337,6 +339,30 @@ public class DefaultSubscriptionManagerService extends TbApplicationEventListene
 | 
			
		||||
        callback.onSuccess();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public void onTimeSeriesDelete(TenantId tenantId, EntityId entityId, List<String> keys, TbCallback callback) {
 | 
			
		||||
        onLocalTelemetrySubUpdate(entityId,
 | 
			
		||||
                s -> {
 | 
			
		||||
                    if (TbSubscriptionType.TIMESERIES.equals(s.getType())) {
 | 
			
		||||
                        return (TbTimeseriesSubscription) s;
 | 
			
		||||
                    } else {
 | 
			
		||||
                        return null;
 | 
			
		||||
                    }
 | 
			
		||||
                }, s -> true, s -> {
 | 
			
		||||
                    List<TsKvEntry> subscriptionUpdate = null;
 | 
			
		||||
                    for (String key : keys) {
 | 
			
		||||
                        if (s.isAllKeys() || s.getKeyStates().containsKey(key)) {
 | 
			
		||||
                            if (subscriptionUpdate == null) {
 | 
			
		||||
                                subscriptionUpdate = new ArrayList<>();
 | 
			
		||||
                            }
 | 
			
		||||
                            subscriptionUpdate.add(new BasicTsKvEntry(0, new StringDataEntry(key, null)));
 | 
			
		||||
                        }
 | 
			
		||||
                    }
 | 
			
		||||
                    return subscriptionUpdate;
 | 
			
		||||
                }, false);
 | 
			
		||||
        callback.onSuccess();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private <T extends TbSubscription> void onLocalTelemetrySubUpdate(EntityId entityId,
 | 
			
		||||
                                                                      Function<TbSubscription, T> castFunction,
 | 
			
		||||
                                                                      Predicate<T> filterFunction,
 | 
			
		||||
 | 
			
		||||
@ -40,6 +40,8 @@ public interface SubscriptionManagerService extends ApplicationListener<Partitio
 | 
			
		||||
 | 
			
		||||
    void onAttributesDelete(TenantId tenantId, EntityId entityId, String scope, List<String> keys, TbCallback empty);
 | 
			
		||||
 | 
			
		||||
    void onTimeSeriesDelete(TenantId tenantId, EntityId entityId, List<String> keys, TbCallback callback);
 | 
			
		||||
 | 
			
		||||
    void onAlarmUpdate(TenantId tenantId, EntityId entityId, Alarm alarm, TbCallback callback);
 | 
			
		||||
 | 
			
		||||
    void onAlarmDeleted(TenantId tenantId, EntityId entityId, Alarm alarm, TbCallback callback);
 | 
			
		||||
 | 
			
		||||
@ -15,6 +15,7 @@
 | 
			
		||||
 */
 | 
			
		||||
package org.thingsboard.server.service.subscription;
 | 
			
		||||
 | 
			
		||||
import org.thingsboard.common.util.JacksonUtil;
 | 
			
		||||
import org.thingsboard.server.common.data.alarm.Alarm;
 | 
			
		||||
import org.thingsboard.server.common.data.id.EntityId;
 | 
			
		||||
import org.thingsboard.server.common.data.id.EntityIdFactory;
 | 
			
		||||
@ -30,25 +31,25 @@ import org.thingsboard.server.common.data.kv.KvEntry;
 | 
			
		||||
import org.thingsboard.server.common.data.kv.LongDataEntry;
 | 
			
		||||
import org.thingsboard.server.common.data.kv.StringDataEntry;
 | 
			
		||||
import org.thingsboard.server.common.data.kv.TsKvEntry;
 | 
			
		||||
import org.thingsboard.common.util.JacksonUtil;
 | 
			
		||||
import org.thingsboard.server.gen.transport.TransportProtos;
 | 
			
		||||
import org.thingsboard.server.gen.transport.TransportProtos.KeyValueProto;
 | 
			
		||||
import org.thingsboard.server.gen.transport.TransportProtos.KeyValueType;
 | 
			
		||||
import org.thingsboard.server.gen.transport.TransportProtos.SubscriptionMgrMsgProto;
 | 
			
		||||
import org.thingsboard.server.gen.transport.TransportProtos.TbAlarmDeleteProto;
 | 
			
		||||
import org.thingsboard.server.gen.transport.TransportProtos.TbAlarmUpdateProto;
 | 
			
		||||
import org.thingsboard.server.gen.transport.TransportProtos.TbAttributeDeleteProto;
 | 
			
		||||
import org.thingsboard.server.gen.transport.TransportProtos.TbAttributeSubscriptionProto;
 | 
			
		||||
import org.thingsboard.server.gen.transport.TransportProtos.TbAttributeUpdateProto;
 | 
			
		||||
import org.thingsboard.server.gen.transport.TransportProtos.TbAttributeDeleteProto;
 | 
			
		||||
import org.thingsboard.server.gen.transport.TransportProtos.TbSubscriptionCloseProto;
 | 
			
		||||
import org.thingsboard.server.gen.transport.TransportProtos.TbSubscriptionKetStateProto;
 | 
			
		||||
import org.thingsboard.server.gen.transport.TransportProtos.TbSubscriptionProto;
 | 
			
		||||
import org.thingsboard.server.gen.transport.TransportProtos.TbSubscriptionUpdateProto;
 | 
			
		||||
import org.thingsboard.server.gen.transport.TransportProtos.TbSubscriptionUpdateTsValue;
 | 
			
		||||
import org.thingsboard.server.gen.transport.TransportProtos.TbTimeSeriesDeleteProto;
 | 
			
		||||
import org.thingsboard.server.gen.transport.TransportProtos.TbTimeSeriesSubscriptionProto;
 | 
			
		||||
import org.thingsboard.server.gen.transport.TransportProtos.TbTimeSeriesUpdateProto;
 | 
			
		||||
import org.thingsboard.server.gen.transport.TransportProtos.ToCoreMsg;
 | 
			
		||||
import org.thingsboard.server.gen.transport.TransportProtos.TsKvProto;
 | 
			
		||||
import org.thingsboard.server.gen.transport.TransportProtos.TbAlarmUpdateProto;
 | 
			
		||||
import org.thingsboard.server.gen.transport.TransportProtos.TbAlarmDeleteProto;
 | 
			
		||||
import org.thingsboard.server.service.telemetry.sub.AlarmSubscriptionUpdate;
 | 
			
		||||
import org.thingsboard.server.service.telemetry.sub.SubscriptionErrorCode;
 | 
			
		||||
import org.thingsboard.server.service.telemetry.sub.TelemetrySubscriptionUpdate;
 | 
			
		||||
@ -207,6 +208,19 @@ public class TbSubscriptionUtils {
 | 
			
		||||
        return ToCoreMsg.newBuilder().setToSubscriptionMgrMsg(msgBuilder.build()).build();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public static ToCoreMsg toTimeseriesDeleteProto(TenantId tenantId, EntityId entityId, List<String> keys) {
 | 
			
		||||
        TbTimeSeriesDeleteProto.Builder builder = TbTimeSeriesDeleteProto.newBuilder();
 | 
			
		||||
        builder.setEntityType(entityId.getEntityType().name());
 | 
			
		||||
        builder.setEntityIdMSB(entityId.getId().getMostSignificantBits());
 | 
			
		||||
        builder.setEntityIdLSB(entityId.getId().getLeastSignificantBits());
 | 
			
		||||
        builder.setTenantIdMSB(tenantId.getId().getMostSignificantBits());
 | 
			
		||||
        builder.setTenantIdLSB(tenantId.getId().getLeastSignificantBits());
 | 
			
		||||
        builder.addAllKeys(keys);
 | 
			
		||||
        SubscriptionMgrMsgProto.Builder msgBuilder = SubscriptionMgrMsgProto.newBuilder();
 | 
			
		||||
        msgBuilder.setTsDelete(builder);
 | 
			
		||||
        return ToCoreMsg.newBuilder().setToSubscriptionMgrMsg(msgBuilder.build()).build();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public static ToCoreMsg toAttributesUpdateProto(TenantId tenantId, EntityId entityId, String scope, List<AttributeKvEntry> attributes) {
 | 
			
		||||
        TbAttributeUpdateProto.Builder builder = TbAttributeUpdateProto.newBuilder();
 | 
			
		||||
        builder.setEntityType(entityId.getEntityType().name());
 | 
			
		||||
 | 
			
		||||
@ -31,6 +31,7 @@ import org.thingsboard.server.common.data.id.TenantId;
 | 
			
		||||
import org.thingsboard.server.common.data.kv.AttributeKvEntry;
 | 
			
		||||
import org.thingsboard.server.common.data.kv.BaseAttributeKvEntry;
 | 
			
		||||
import org.thingsboard.server.common.data.kv.BooleanDataEntry;
 | 
			
		||||
import org.thingsboard.server.common.data.kv.DeleteTsKvQuery;
 | 
			
		||||
import org.thingsboard.server.common.data.kv.DoubleDataEntry;
 | 
			
		||||
import org.thingsboard.server.common.data.kv.LongDataEntry;
 | 
			
		||||
import org.thingsboard.server.common.data.kv.StringDataEntry;
 | 
			
		||||
@ -271,6 +272,13 @@ public class DefaultTelemetrySubscriptionService extends AbstractSubscriptionSer
 | 
			
		||||
        }, tsCallBackExecutor);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public void deleteTimeseriesAndNotify(TenantId tenantId, EntityId entityId, List<String> keys, List<DeleteTsKvQuery> deleteTsKvQueries, FutureCallback<Void> callback) {
 | 
			
		||||
        ListenableFuture<List<Void>> deleteFuture = tsService.remove(tenantId, entityId, deleteTsKvQueries);
 | 
			
		||||
        addVoidCallback(deleteFuture, callback);
 | 
			
		||||
        addWsCallback(deleteFuture, success -> onTimeSeriesDelete(tenantId, entityId, keys));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    @Override
 | 
			
		||||
    public void saveAttrAndNotify(TenantId tenantId, EntityId entityId, String scope, String key, long value, FutureCallback<Void> callback) {
 | 
			
		||||
        saveAndNotify(tenantId, entityId, scope, Collections.singletonList(new BaseAttributeKvEntry(new LongDataEntry(key, value)
 | 
			
		||||
@ -337,6 +345,20 @@ public class DefaultTelemetrySubscriptionService extends AbstractSubscriptionSer
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private void onTimeSeriesDelete(TenantId tenantId, EntityId entityId, List<String> keys) {
 | 
			
		||||
        TopicPartitionInfo tpi = partitionService.resolve(ServiceType.TB_CORE, tenantId, entityId);
 | 
			
		||||
        if (currentPartitions.contains(tpi)) {
 | 
			
		||||
            if (subscriptionManagerService.isPresent()) {
 | 
			
		||||
                subscriptionManagerService.get().onTimeSeriesDelete(tenantId, entityId, keys, TbCallback.EMPTY);
 | 
			
		||||
            } else {
 | 
			
		||||
                log.warn("Possible misconfiguration because subscriptionManagerService is null!");
 | 
			
		||||
            }
 | 
			
		||||
        } else {
 | 
			
		||||
            TransportProtos.ToCoreMsg toCoreMsg = TbSubscriptionUtils.toTimeseriesDeleteProto(tenantId, entityId, keys);
 | 
			
		||||
            clusterService.pushMsgToCore(tpi, entityId.getId(), toCoreMsg, null);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private <S> void addVoidCallback(ListenableFuture<S> saveFuture, final FutureCallback<Void> callback) {
 | 
			
		||||
        Futures.addCallback(saveFuture, new FutureCallback<S>() {
 | 
			
		||||
            @Override
 | 
			
		||||
 | 
			
		||||
@ -561,6 +561,15 @@ message TbAttributeDeleteProto {
 | 
			
		||||
  repeated string keys = 7;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
message TbTimeSeriesDeleteProto {
 | 
			
		||||
  string entityType = 1;
 | 
			
		||||
  int64 entityIdMSB = 2;
 | 
			
		||||
  int64 entityIdLSB = 3;
 | 
			
		||||
  int64 tenantIdMSB = 4;
 | 
			
		||||
  int64 tenantIdLSB = 5;
 | 
			
		||||
  repeated string keys = 6;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
message TbTimeSeriesUpdateProto {
 | 
			
		||||
  string entityType = 1;
 | 
			
		||||
  int64 entityIdMSB = 2;
 | 
			
		||||
@ -614,6 +623,7 @@ message SubscriptionMgrMsgProto {
 | 
			
		||||
  TbAlarmSubscriptionProto alarmSub = 7;
 | 
			
		||||
  TbAlarmUpdateProto alarmUpdate = 8;
 | 
			
		||||
  TbAlarmDeleteProto alarmDelete = 9;
 | 
			
		||||
  TbTimeSeriesDeleteProto tsDelete = 10;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
message LocalSubscriptionServiceMsgProto {
 | 
			
		||||
 | 
			
		||||
@ -31,5 +31,7 @@ public class BaseDeleteTsKvQuery extends BaseTsKvQuery implements DeleteTsKvQuer
 | 
			
		||||
        this(key, startTs, endTs, false);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    public Boolean getRewriteLatestIfDeleted() {
 | 
			
		||||
        return rewriteLatestIfDeleted;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -20,6 +20,7 @@ import org.thingsboard.server.common.data.id.CustomerId;
 | 
			
		||||
import org.thingsboard.server.common.data.id.EntityId;
 | 
			
		||||
import org.thingsboard.server.common.data.id.TenantId;
 | 
			
		||||
import org.thingsboard.server.common.data.kv.AttributeKvEntry;
 | 
			
		||||
import org.thingsboard.server.common.data.kv.DeleteTsKvQuery;
 | 
			
		||||
import org.thingsboard.server.common.data.kv.TsKvEntry;
 | 
			
		||||
 | 
			
		||||
import java.util.Collection;
 | 
			
		||||
@ -54,5 +55,5 @@ public interface RuleEngineTelemetryService {
 | 
			
		||||
 | 
			
		||||
    void deleteAllLatest(TenantId tenantId, EntityId entityId, FutureCallback<Collection<String>> callback);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    void deleteTimeseriesAndNotify(TenantId tenantId, EntityId entityId, List<String> keys, List<DeleteTsKvQuery> deleteTsKvQueries, FutureCallback<Void> callback);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user