From 347cb5bc368e344433a5474fde5f5c65205bc89c Mon Sep 17 00:00:00 2001 From: ViacheslavKlimov Date: Fri, 21 Feb 2025 11:48:21 +0200 Subject: [PATCH] EDQS code cleanup --- .../service/edqs/DefaultEdqsService.java | 3 + .../service/edqs/KafkaEdqsSyncService.java | 2 - .../server/common/data/ObjectType.java | 9 ++- .../server/common/data/alarm/AlarmType.java | 27 -------- .../data/edqs/fields/GenericFields.java | 16 +---- .../common/data/edqs/fields/TenantFields.java | 3 - .../data/page/BasePageDataIterable.java | 9 +-- .../common/data/page/PageDataIterable.java | 5 -- .../common/data/query/EntityFilter.java | 3 +- .../data/dp/CompressedStringDataPoint.java | 3 +- .../server/edqs/data/dp/JsonDataPoint.java | 2 +- .../server/edqs/data/dp/StringDataPoint.java | 2 +- .../server/edqs/processor/EdqsProcessor.java | 63 ++++++++++-------- .../server/edqs/processor/EdqsProducer.java | 10 +-- ...sitory.java => DefaultEdqsRepository.java} | 16 ++--- ...EdqRepository.java => EdqsRepository.java} | 5 +- .../server/edqs/repo/TenantRepo.java | 1 + .../edqs/state/KafkaEdqsStateService.java | 4 +- .../server/edqs/util/EdqsConverter.java | 5 +- .../edqs/{repo => util}/TbBytePool.java | 2 +- .../edqs/{repo => util}/TbStringPool.java | 2 +- .../queue/edqs/KafkaEdqsQueueFactory.java | 15 +++-- .../provider/KafkaMonolithQueueFactory.java | 2 +- .../provider/KafkaTbCoreQueueFactory.java | 2 +- .../common/util/ExceptionUtil.java | 10 +++ .../server/dao/TenantEntityDao.java | 5 -- .../server/dao/entity/EntityDaoRegistry.java | 18 +---- .../server/dao/model/sql/AlarmTypeEntity.java | 65 ------------------- .../dao/sql/alarm/AlarmTypeRepository.java | 30 --------- .../dao/sql/alarm/JpaAlarmCommentDao.java | 6 -- .../server/dao/sql/alarm/JpaAlarmDao.java | 6 -- .../server/dao/sql/alarm/JpaAlarmTypeDao.java | 46 ------------- .../dao/sql/alarm/JpaEntityAlarmDao.java | 6 -- .../server/dao/sql/asset/JpaAssetDao.java | 6 -- .../dao/sql/asset/JpaAssetProfileDao.java | 6 -- .../dao/sql/customer/JpaCustomerDao.java | 6 -- .../dao/sql/dashboard/JpaDashboardDao.java | 6 -- .../sql/device/DeviceProfileRepository.java | 1 - .../sql/device/JpaDeviceCredentialsDao.java | 6 -- .../server/dao/sql/device/JpaDeviceDao.java | 6 -- .../dao/sql/device/JpaDeviceProfileDao.java | 6 -- .../server/dao/sql/edge/JpaEdgeDao.java | 6 -- .../sql/entityview/EntityViewRepository.java | 1 - .../dao/sql/entityview/JpaEntityViewDao.java | 6 -- .../notification/JpaNotificationRuleDao.java | 6 -- .../JpaNotificationTargetDao.java | 6 -- .../JpaNotificationTemplateDao.java | 6 -- .../server/dao/sql/ota/JpaOtaPackageDao.java | 6 -- .../server/dao/sql/queue/JpaQueueDao.java | 6 -- .../dao/sql/queue/JpaQueueStatsDao.java | 6 -- .../dao/sql/resource/JpaTbResourceDao.java | 6 -- .../server/dao/sql/rpc/JpaRpcDao.java | 6 -- .../server/dao/sql/rule/JpaRuleChainDao.java | 6 -- .../server/dao/sql/rule/JpaRuleNodeDao.java | 6 -- .../dao/sql/settings/JpaAdminSettingsDao.java | 6 -- .../sql/usagerecord/JpaApiUsageStateDao.java | 6 -- .../dao/sql/user/JpaUserAuthSettingsDao.java | 6 -- .../dao/sql/user/JpaUserCredentialsDao.java | 6 -- .../server/dao/sql/user/JpaUserDao.java | 6 -- .../dao/sql/user/JpaUserSettingsDao.java | 6 -- .../dao/sql/widget/JpaWidgetTypeDao.java | 6 -- .../dao/sql/widget/JpaWidgetsBundleDao.java | 6 -- .../dao/service/EntityDaoRegistryTest.java | 31 --------- edqs/src/main/resources/logback.xml | 1 - .../server/edqs/repo/AbstractEDQTest.java | 4 +- ...q-test.properties => edqs-test.properties} | 0 66 files changed, 99 insertions(+), 504 deletions(-) delete mode 100644 common/data/src/main/java/org/thingsboard/server/common/data/alarm/AlarmType.java rename common/edqs/src/main/java/org/thingsboard/server/edqs/repo/{InMemoryEdqRepository.java => DefaultEdqsRepository.java} (89%) rename common/edqs/src/main/java/org/thingsboard/server/edqs/repo/{EdqRepository.java => EdqsRepository.java} (92%) rename common/edqs/src/main/java/org/thingsboard/server/edqs/{repo => util}/TbBytePool.java (96%) rename common/edqs/src/main/java/org/thingsboard/server/edqs/{repo => util}/TbStringPool.java (96%) delete mode 100644 dao/src/main/java/org/thingsboard/server/dao/model/sql/AlarmTypeEntity.java delete mode 100644 dao/src/main/java/org/thingsboard/server/dao/sql/alarm/AlarmTypeRepository.java delete mode 100644 dao/src/main/java/org/thingsboard/server/dao/sql/alarm/JpaAlarmTypeDao.java rename edqs/src/test/resources/{edq-test.properties => edqs-test.properties} (100%) diff --git a/application/src/main/java/org/thingsboard/server/service/edqs/DefaultEdqsService.java b/application/src/main/java/org/thingsboard/server/service/edqs/DefaultEdqsService.java index d5a65d248c..a6a9b9bb23 100644 --- a/application/src/main/java/org/thingsboard/server/service/edqs/DefaultEdqsService.java +++ b/application/src/main/java/org/thingsboard/server/service/edqs/DefaultEdqsService.java @@ -68,6 +68,7 @@ import org.thingsboard.server.gen.transport.TransportProtos.ToEdqsMsg; import org.thingsboard.server.queue.TbQueueRequestTemplate; import org.thingsboard.server.queue.common.TbProtoQueueMsg; import org.thingsboard.server.queue.discovery.HashPartitionService; +import org.thingsboard.server.queue.discovery.TopicService; import org.thingsboard.server.queue.edqs.EdqsQueue; import org.thingsboard.server.queue.environment.DistributedLock; import org.thingsboard.server.queue.environment.DistributedLockService; @@ -90,6 +91,7 @@ public class DefaultEdqsService implements EdqsService { private final DistributedLockService distributedLockService; private final AttributesService attributesService; private final EdqsPartitionService edqsPartitionService; + private final TopicService topicService; @Autowired @Lazy private TbClusterService clusterService; @Autowired @Lazy @@ -109,6 +111,7 @@ public class DefaultEdqsService implements EdqsService { eventsProducer = EdqsProducer.builder() .queue(EdqsQueue.EVENTS) .partitionService(edqsPartitionService) + .topicService(topicService) .producer(queueFactory.createEdqsMsgProducer(EdqsQueue.EVENTS)) .build(); if (apiEnabled) { diff --git a/application/src/main/java/org/thingsboard/server/service/edqs/KafkaEdqsSyncService.java b/application/src/main/java/org/thingsboard/server/service/edqs/KafkaEdqsSyncService.java index 8dd4dbe4cb..7dc25b92c8 100644 --- a/application/src/main/java/org/thingsboard/server/service/edqs/KafkaEdqsSyncService.java +++ b/application/src/main/java/org/thingsboard/server/service/edqs/KafkaEdqsSyncService.java @@ -15,7 +15,6 @@ */ package org.thingsboard.server.service.edqs; -import lombok.RequiredArgsConstructor; import org.springframework.boot.autoconfigure.condition.ConditionalOnExpression; import org.springframework.stereotype.Service; import org.thingsboard.server.queue.edqs.EdqsQueue; @@ -25,7 +24,6 @@ import org.thingsboard.server.queue.kafka.TbKafkaSettings; import java.util.Collections; @Service -@RequiredArgsConstructor @ConditionalOnExpression("'${queue.edqs.sync.enabled:true}' == 'true' && '${queue.type:null}' == 'kafka'") public class KafkaEdqsSyncService extends EdqsSyncService { diff --git a/common/data/src/main/java/org/thingsboard/server/common/data/ObjectType.java b/common/data/src/main/java/org/thingsboard/server/common/data/ObjectType.java index 86252fb7f8..8fa08d38e9 100644 --- a/common/data/src/main/java/org/thingsboard/server/common/data/ObjectType.java +++ b/common/data/src/main/java/org/thingsboard/server/common/data/ObjectType.java @@ -23,7 +23,6 @@ public enum ObjectType { TENANT, TENANT_PROFILE, CUSTOMER, - ADMIN_SETTINGS, QUEUE, RPC, RULE_CHAIN, @@ -32,8 +31,6 @@ public enum ObjectType { EVENT, RULE_NODE, USER, - USER_CREDENTIALS, - USER_AUTH_SETTINGS, EDGE, WIDGETS_BUNDLE, WIDGET_TYPE, @@ -54,7 +51,6 @@ public enum ObjectType { NOTIFICATION_TEMPLATE, NOTIFICATION_RULE, ALARM_COMMENT, - ALARM_TYPE, API_USAGE_STATE, QUEUE_STATS, @@ -70,7 +66,10 @@ public enum ObjectType { public static final Set edqsTypes = EnumSet.copyOf(edqsTenantTypes); public static final Set edqsSystemTypes = EnumSet.of(TENANT, TENANT_PROFILE, USER, DASHBOARD, API_USAGE_STATE, ATTRIBUTE_KV, LATEST_TS_KV); - public static final Set unversionedTypes = EnumSet.of(QUEUE_STATS); + public static final Set unversionedTypes = EnumSet.of( + QUEUE_STATS, // created once, never updated + TENANT_PROFILE // only for total count calculation + ); static { edqsTypes.addAll(List.of(RELATION, ATTRIBUTE_KV, LATEST_TS_KV)); diff --git a/common/data/src/main/java/org/thingsboard/server/common/data/alarm/AlarmType.java b/common/data/src/main/java/org/thingsboard/server/common/data/alarm/AlarmType.java deleted file mode 100644 index 0813e72123..0000000000 --- a/common/data/src/main/java/org/thingsboard/server/common/data/alarm/AlarmType.java +++ /dev/null @@ -1,27 +0,0 @@ -/** - * Copyright © 2016-2024 The Thingsboard Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.thingsboard.server.common.data.alarm; - -import lombok.Data; -import org.thingsboard.server.common.data.id.TenantId; - -@Data -public class AlarmType { - - private TenantId tenantId; - private String type; - -} diff --git a/common/data/src/main/java/org/thingsboard/server/common/data/edqs/fields/GenericFields.java b/common/data/src/main/java/org/thingsboard/server/common/data/edqs/fields/GenericFields.java index ff3af4ee65..94e8e35dcc 100644 --- a/common/data/src/main/java/org/thingsboard/server/common/data/edqs/fields/GenericFields.java +++ b/common/data/src/main/java/org/thingsboard/server/common/data/edqs/fields/GenericFields.java @@ -15,27 +15,15 @@ */ package org.thingsboard.server.common.data.edqs.fields; -import com.fasterxml.jackson.databind.JsonNode; -import lombok.Data; import lombok.NoArgsConstructor; -import lombok.experimental.SuperBuilder; + import java.util.UUID; -import static org.thingsboard.server.common.data.edqs.fields.FieldsUtil.getText; - -@Data @NoArgsConstructor -@SuperBuilder public class GenericFields extends AbstractEntityFields { - private String additionalInfo; - - public GenericFields(UUID id, long createdTime, UUID tenantId, String name, Long version, JsonNode additionalInfo) { - super(id, createdTime, tenantId, name, version); - this.additionalInfo = getText(additionalInfo); - } - public GenericFields(UUID id, long createdTime, UUID tenantId, String name, Long version) { super(id, createdTime, tenantId, name, version); } + } diff --git a/common/data/src/main/java/org/thingsboard/server/common/data/edqs/fields/TenantFields.java b/common/data/src/main/java/org/thingsboard/server/common/data/edqs/fields/TenantFields.java index 6942d5ea7b..c11c221a9b 100644 --- a/common/data/src/main/java/org/thingsboard/server/common/data/edqs/fields/TenantFields.java +++ b/common/data/src/main/java/org/thingsboard/server/common/data/edqs/fields/TenantFields.java @@ -56,7 +56,4 @@ public class TenantFields extends AbstractEntityFields { this.region = region; } - public TenantFields(UUID id, Long version) { - super(id, 0L, null, version); - } } diff --git a/common/data/src/main/java/org/thingsboard/server/common/data/page/BasePageDataIterable.java b/common/data/src/main/java/org/thingsboard/server/common/data/page/BasePageDataIterable.java index 625a1d417c..8d46a46781 100644 --- a/common/data/src/main/java/org/thingsboard/server/common/data/page/BasePageDataIterable.java +++ b/common/data/src/main/java/org/thingsboard/server/common/data/page/BasePageDataIterable.java @@ -23,7 +23,6 @@ import java.util.NoSuchElementException; public abstract class BasePageDataIterable implements Iterable, Iterator { private final int fetchSize; - private SortOrder sortOrder; private List currentItems; private int currentIdx; @@ -36,12 +35,6 @@ public abstract class BasePageDataIterable implements Iterable, Iterator iterator() { return this; @@ -50,7 +43,7 @@ public abstract class BasePageDataIterable implements Iterable, Iterator extends BasePageDataIterable { this.function = function; } - public PageDataIterable(FetchFunction function, int fetchSize, SortOrder sortOrder) { - super(fetchSize, sortOrder); - this.function = function; - } - @Override PageData fetchPageData(PageLink link) { return function.fetch(link); diff --git a/common/data/src/main/java/org/thingsboard/server/common/data/query/EntityFilter.java b/common/data/src/main/java/org/thingsboard/server/common/data/query/EntityFilter.java index f881ed15c3..8e45e20efa 100644 --- a/common/data/src/main/java/org/thingsboard/server/common/data/query/EntityFilter.java +++ b/common/data/src/main/java/org/thingsboard/server/common/data/query/EntityFilter.java @@ -39,7 +39,8 @@ import com.fasterxml.jackson.annotation.JsonTypeInfo; @JsonSubTypes.Type(value = AssetSearchQueryFilter.class, name = "assetSearchQuery"), @JsonSubTypes.Type(value = DeviceSearchQueryFilter.class, name = "deviceSearchQuery"), @JsonSubTypes.Type(value = EntityViewSearchQueryFilter.class, name = "entityViewSearchQuery"), - @JsonSubTypes.Type(value = EdgeSearchQueryFilter.class, name = "edgeSearchQuery")}) + @JsonSubTypes.Type(value = EdgeSearchQueryFilter.class, name = "edgeSearchQuery") +}) public interface EntityFilter { @JsonIgnore diff --git a/common/edqs/src/main/java/org/thingsboard/server/edqs/data/dp/CompressedStringDataPoint.java b/common/edqs/src/main/java/org/thingsboard/server/edqs/data/dp/CompressedStringDataPoint.java index 0502bbccda..0ef614de06 100644 --- a/common/edqs/src/main/java/org/thingsboard/server/edqs/data/dp/CompressedStringDataPoint.java +++ b/common/edqs/src/main/java/org/thingsboard/server/edqs/data/dp/CompressedStringDataPoint.java @@ -18,6 +18,7 @@ package org.thingsboard.server.edqs.data.dp; import lombok.Getter; import lombok.SneakyThrows; import org.thingsboard.server.common.data.kv.DataType; +import org.thingsboard.server.edqs.util.TbBytePool; import org.xerial.snappy.Snappy; public class CompressedStringDataPoint extends AbstractDataPoint { @@ -29,7 +30,7 @@ public class CompressedStringDataPoint extends AbstractDataPoint { @SneakyThrows public CompressedStringDataPoint(long ts, byte[] compressedValue) { super(ts); - this.compressedValue = compressedValue; + this.compressedValue = TbBytePool.intern(compressedValue); } @Override diff --git a/common/edqs/src/main/java/org/thingsboard/server/edqs/data/dp/JsonDataPoint.java b/common/edqs/src/main/java/org/thingsboard/server/edqs/data/dp/JsonDataPoint.java index 05cafa3edb..739cd1902e 100644 --- a/common/edqs/src/main/java/org/thingsboard/server/edqs/data/dp/JsonDataPoint.java +++ b/common/edqs/src/main/java/org/thingsboard/server/edqs/data/dp/JsonDataPoint.java @@ -17,7 +17,7 @@ package org.thingsboard.server.edqs.data.dp; import lombok.Getter; import org.thingsboard.server.common.data.kv.DataType; -import org.thingsboard.server.edqs.repo.TbStringPool; +import org.thingsboard.server.edqs.util.TbStringPool; public class JsonDataPoint extends AbstractDataPoint { diff --git a/common/edqs/src/main/java/org/thingsboard/server/edqs/data/dp/StringDataPoint.java b/common/edqs/src/main/java/org/thingsboard/server/edqs/data/dp/StringDataPoint.java index fabf15a359..281c467c31 100644 --- a/common/edqs/src/main/java/org/thingsboard/server/edqs/data/dp/StringDataPoint.java +++ b/common/edqs/src/main/java/org/thingsboard/server/edqs/data/dp/StringDataPoint.java @@ -17,7 +17,7 @@ package org.thingsboard.server.edqs.data.dp; import lombok.Getter; import org.thingsboard.server.common.data.kv.DataType; -import org.thingsboard.server.edqs.repo.TbStringPool; +import org.thingsboard.server.edqs.util.TbStringPool; public class StringDataPoint extends AbstractDataPoint { diff --git a/common/edqs/src/main/java/org/thingsboard/server/edqs/processor/EdqsProcessor.java b/common/edqs/src/main/java/org/thingsboard/server/edqs/processor/EdqsProcessor.java index 968e637a3d..42e00be7fc 100644 --- a/common/edqs/src/main/java/org/thingsboard/server/edqs/processor/EdqsProcessor.java +++ b/common/edqs/src/main/java/org/thingsboard/server/edqs/processor/EdqsProcessor.java @@ -24,12 +24,12 @@ import jakarta.annotation.PreDestroy; import lombok.Getter; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; -import org.apache.commons.lang3.exception.ExceptionUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.ConfigurableApplicationContext; import org.springframework.context.annotation.Lazy; import org.springframework.context.event.EventListener; import org.springframework.stereotype.Service; +import org.thingsboard.common.util.ExceptionUtil; import org.thingsboard.common.util.JacksonUtil; import org.thingsboard.common.util.ThingsBoardExecutors; import org.thingsboard.common.util.ThingsBoardThreadFactory; @@ -46,7 +46,7 @@ import org.thingsboard.server.common.data.page.PageData; import org.thingsboard.server.common.data.util.CollectionsUtil; import org.thingsboard.server.common.msg.queue.ServiceType; import org.thingsboard.server.common.msg.queue.TopicPartitionInfo; -import org.thingsboard.server.edqs.repo.EdqRepository; +import org.thingsboard.server.edqs.repo.EdqsRepository; import org.thingsboard.server.edqs.state.EdqsPartitionService; import org.thingsboard.server.edqs.state.EdqsStateService; import org.thingsboard.server.edqs.util.EdqsConverter; @@ -68,6 +68,7 @@ import org.thingsboard.server.queue.edqs.EdqsQueue; import org.thingsboard.server.queue.edqs.EdqsQueueFactory; import org.thingsboard.server.queue.util.AfterStartUp; +import java.util.Objects; import java.util.Set; import java.util.UUID; import java.util.concurrent.ExecutorService; @@ -85,7 +86,7 @@ public class EdqsProcessor implements TbQueueHandler, private final EdqsQueueFactory queueFactory; private final EdqsConverter converter; - private final EdqRepository repository; + private final EdqsRepository repository; private final EdqsConfig config; private final EdqsPartitionService partitionService; private final ConfigurableApplicationContext applicationContext; @@ -99,11 +100,10 @@ public class EdqsProcessor implements TbQueueHandler, private ExecutorService taskExecutor; private ScheduledExecutorService scheduler; private ListeningExecutorService requestExecutor; - private ExecutorService repartitionExecutor; private final VersionsStore versionsStore = new VersionsStore(); - private final AtomicInteger counter = new AtomicInteger(); // FIXME: TMP + private final AtomicInteger counter = new AtomicInteger(); @Getter private Consumer errorHandler; @@ -114,7 +114,6 @@ public class EdqsProcessor implements TbQueueHandler, taskExecutor = ThingsBoardExecutors.newWorkStealingPool(4, "edqs-consumer-task-executor"); scheduler = ThingsBoardExecutors.newSingleThreadScheduledExecutor("edqs-scheduler"); requestExecutor = MoreExecutors.listeningDecorator(ThingsBoardExecutors.newWorkStealingPool(12, "edqs-requests")); - repartitionExecutor = Executors.newSingleThreadExecutor(ThingsBoardThreadFactory.forName("edqs-repartition")); errorHandler = error -> { if (error instanceof OutOfMemoryError) { log.error("OOM detected, shutting down"); @@ -135,7 +134,6 @@ public class EdqsProcessor implements TbQueueHandler, } try { ToEdqsMsg msg = queueMsg.getValue(); - log.trace("Processing message: {}", msg); process(msg, EdqsQueue.EVENTS); } catch (Exception t) { log.error("Failed to process message: {}", queueMsg, t); @@ -195,27 +193,19 @@ public class EdqsProcessor implements TbQueueHandler, public ListenableFuture> handle(TbProtoQueueMsg queueMsg) { ToEdqsMsg toEdqsMsg = queueMsg.getValue(); return requestExecutor.submit(() -> { - EdqsResponse response = new EdqsResponse(); + EdqsRequest request; + TenantId tenantId; + CustomerId customerId; try { - EdqsRequest request = JacksonUtil.fromString(toEdqsMsg.getRequestMsg().getValue(), EdqsRequest.class); - TenantId tenantId = getTenantId(toEdqsMsg); - CustomerId customerId = getCustomerId(toEdqsMsg); - log.info("[{}] Handling request: {}", tenantId, request); - - if (request.getEntityDataQuery() != null) { - PageData result = repository.findEntityDataByQuery(tenantId, customerId, - request.getEntityDataQuery(), false); - response.setEntityDataQueryResult(result.mapData(QueryResult::toOldEntityData)); - } else if (request.getEntityCountQuery() != null) { - long result = repository.countEntitiesByQuery(tenantId, customerId, request.getEntityCountQuery(), tenantId.isSysTenantId()); - response.setEntityCountQueryResult(result); - } - - log.info("Answering with response: {}", response); - } catch (Throwable e) { - response.setError(ExceptionUtils.getStackTrace(e)); // TODO: return only the message - log.info("Answering with error", e); + request = Objects.requireNonNull(JacksonUtil.fromString(toEdqsMsg.getRequestMsg().getValue(), EdqsRequest.class)); + tenantId = getTenantId(toEdqsMsg); + customerId = getCustomerId(toEdqsMsg); + } catch (Exception e) { + log.error("Failed to parse request msg: {}", toEdqsMsg, e); + throw e; } + + EdqsResponse response = processRequest(tenantId, customerId, request); return new TbProtoQueueMsg<>(queueMsg.getKey(), FromEdqsMsg.newBuilder() .setResponseMsg(TransportProtos.EdqsResponseMsg.newBuilder() .setValue(JacksonUtil.toString(response)) @@ -224,7 +214,27 @@ public class EdqsProcessor implements TbQueueHandler, }); } + private EdqsResponse processRequest(TenantId tenantId, CustomerId customerId, EdqsRequest request) { + EdqsResponse response = new EdqsResponse(); + try { + if (request.getEntityDataQuery() != null) { + PageData result = repository.findEntityDataByQuery(tenantId, customerId, + request.getEntityDataQuery(), false); + response.setEntityDataQueryResult(result.mapData(QueryResult::toOldEntityData)); + } else if (request.getEntityCountQuery() != null) { + long result = repository.countEntitiesByQuery(tenantId, customerId, request.getEntityCountQuery(), tenantId.isSysTenantId()); + response.setEntityCountQueryResult(result); + } + log.trace("[{}] Request: {}, response: {}", tenantId, request, response); + } catch (Throwable e) { + log.error("[{}] Failed to process request: {}", tenantId, request, e); + response.setError(ExceptionUtil.getMessage(e)); + } + return response; + } + public void process(ToEdqsMsg edqsMsg, EdqsQueue queue) { + log.trace("Processing message: {}", edqsMsg); if (edqsMsg.hasEventMsg()) { EdqsEventMsg eventMsg = edqsMsg.getEventMsg(); TenantId tenantId = getTenantId(edqsMsg); @@ -290,7 +300,6 @@ public class EdqsProcessor implements TbQueueHandler, taskExecutor.shutdownNow(); scheduler.shutdownNow(); requestExecutor.shutdownNow(); - repartitionExecutor.shutdownNow(); } } diff --git a/common/edqs/src/main/java/org/thingsboard/server/edqs/processor/EdqsProducer.java b/common/edqs/src/main/java/org/thingsboard/server/edqs/processor/EdqsProducer.java index bfd0d9df59..9ea027ec10 100644 --- a/common/edqs/src/main/java/org/thingsboard/server/edqs/processor/EdqsProducer.java +++ b/common/edqs/src/main/java/org/thingsboard/server/edqs/processor/EdqsProducer.java @@ -27,6 +27,7 @@ import org.thingsboard.server.queue.TbQueueCallback; import org.thingsboard.server.queue.TbQueueMsgMetadata; import org.thingsboard.server.queue.TbQueueProducer; import org.thingsboard.server.queue.common.TbProtoQueueMsg; +import org.thingsboard.server.queue.discovery.TopicService; import org.thingsboard.server.queue.edqs.EdqsQueue; import org.thingsboard.server.queue.kafka.TbKafkaProducerTemplate; @@ -35,26 +36,27 @@ public class EdqsProducer { private final EdqsQueue queue; private final EdqsPartitionService partitionService; + private final TopicService topicService; private final TbQueueProducer> producer; @Builder public EdqsProducer(EdqsQueue queue, EdqsPartitionService partitionService, + TopicService topicService, TbQueueProducer> producer) { this.queue = queue; this.partitionService = partitionService; + this.topicService = topicService; this.producer = producer; } - // TODO: queue prefix! - public void send(TenantId tenantId, ObjectType type, String key, ToEdqsMsg msg) { - String topic = queue.getTopic(); + String topic = topicService.buildTopicName(queue.getTopic()); TbQueueCallback callback = new TbQueueCallback() { @Override public void onSuccess(TbQueueMsgMetadata metadata) { - log.trace("[{}][{}][{}] Published msg to {}: {}", tenantId, type, key, topic, msg); // fixme log levels + log.trace("[{}][{}][{}] Published msg to {}: {}", tenantId, type, key, topic, msg); } @Override diff --git a/common/edqs/src/main/java/org/thingsboard/server/edqs/repo/InMemoryEdqRepository.java b/common/edqs/src/main/java/org/thingsboard/server/edqs/repo/DefaultEdqsRepository.java similarity index 89% rename from common/edqs/src/main/java/org/thingsboard/server/edqs/repo/InMemoryEdqRepository.java rename to common/edqs/src/main/java/org/thingsboard/server/edqs/repo/DefaultEdqsRepository.java index 7736f303ac..bdfe76552a 100644 --- a/common/edqs/src/main/java/org/thingsboard/server/edqs/repo/InMemoryEdqRepository.java +++ b/common/edqs/src/main/java/org/thingsboard/server/edqs/repo/DefaultEdqsRepository.java @@ -39,7 +39,7 @@ import java.util.function.Predicate; @AllArgsConstructor @Service @Slf4j -public class InMemoryEdqRepository implements EdqRepository { +public class DefaultEdqsRepository implements EdqsRepository { private final static ConcurrentMap repos = new ConcurrentHashMap<>(); private final Optional statsService; @@ -51,7 +51,7 @@ public class InMemoryEdqRepository implements EdqRepository { @Override public void processEvent(EdqsEvent event) { if (event.getEventType() == EdqsEventType.DELETED && event.getObjectType() == ObjectType.TENANT) { - log.info("Deleting tenant repo: {}", event); + log.info("Tenant {} deleted", event.getTenantId()); repos.remove(event.getTenantId()); } else { get(event.getTenantId()).processEvent(event); @@ -62,25 +62,25 @@ public class InMemoryEdqRepository implements EdqRepository { public long countEntitiesByQuery(TenantId tenantId, CustomerId customerId, EntityCountQuery query, boolean ignorePermissionCheck) { long startNs = System.nanoTime(); long result = 0; - if (TenantId.SYS_TENANT_ID.equals(tenantId)) { + if (!tenantId.isSysTenantId()) { + result = get(tenantId).countEntitiesByQuery(customerId, query, ignorePermissionCheck); + } else { for (TenantRepo repo : repos.values()) { result += repo.countEntitiesByQuery(customerId, query, ignorePermissionCheck); } - } else { - result = get(tenantId).countEntitiesByQuery(customerId, query, ignorePermissionCheck); } double timingMs = (double) (System.nanoTime() - startNs) / 1000_000; - log.info("countEntitiesByQuery: {} ms", timingMs); + log.info("countEntitiesByQuery done in {} ms", timingMs); return result; } @Override public PageData findEntityDataByQuery(TenantId tenantId, CustomerId customerId, - EntityDataQuery query, boolean ignorePermissionCheck) { + EntityDataQuery query, boolean ignorePermissionCheck) { long startNs = System.nanoTime(); var result = get(tenantId).findEntityDataByQuery(customerId, query, ignorePermissionCheck); double timingMs = (double) (System.nanoTime() - startNs) / 1000_000; - log.info("findEntityDataByQuery: {} ms", timingMs); + log.info("findEntityDataByQuery done in {} ms", timingMs); return result; } diff --git a/common/edqs/src/main/java/org/thingsboard/server/edqs/repo/EdqRepository.java b/common/edqs/src/main/java/org/thingsboard/server/edqs/repo/EdqsRepository.java similarity index 92% rename from common/edqs/src/main/java/org/thingsboard/server/edqs/repo/EdqRepository.java rename to common/edqs/src/main/java/org/thingsboard/server/edqs/repo/EdqsRepository.java index 231efd9a81..b1c72b1483 100644 --- a/common/edqs/src/main/java/org/thingsboard/server/edqs/repo/EdqRepository.java +++ b/common/edqs/src/main/java/org/thingsboard/server/edqs/repo/EdqsRepository.java @@ -25,13 +25,10 @@ import org.thingsboard.server.common.data.query.EntityDataQuery; import java.util.function.Predicate; -public interface EdqRepository { +public interface EdqsRepository { void processEvent(EdqsEvent event); - @Deprecated - default void addOrUpdate(TenantId tenantId, Object object) {} - long countEntitiesByQuery(TenantId tenantId, CustomerId customerId, EntityCountQuery query, boolean ignorePermissionCheck); PageData findEntityDataByQuery(TenantId tenantId, CustomerId customerId, EntityDataQuery query, boolean ignorePermissionCheck); diff --git a/common/edqs/src/main/java/org/thingsboard/server/edqs/repo/TenantRepo.java b/common/edqs/src/main/java/org/thingsboard/server/edqs/repo/TenantRepo.java index 9d6a4ab135..043c0bd6c3 100644 --- a/common/edqs/src/main/java/org/thingsboard/server/edqs/repo/TenantRepo.java +++ b/common/edqs/src/main/java/org/thingsboard/server/edqs/repo/TenantRepo.java @@ -57,6 +57,7 @@ import org.thingsboard.server.edqs.query.processor.EntityQueryProcessor; import org.thingsboard.server.edqs.query.processor.EntityQueryProcessorFactory; import org.thingsboard.server.edqs.stats.EdqsStatsService; import org.thingsboard.server.edqs.util.RepositoryUtils; +import org.thingsboard.server.edqs.util.TbStringPool; import java.util.ArrayList; import java.util.Collections; diff --git a/common/edqs/src/main/java/org/thingsboard/server/edqs/state/KafkaEdqsStateService.java b/common/edqs/src/main/java/org/thingsboard/server/edqs/state/KafkaEdqsStateService.java index f7382c9f15..f5ba2ba841 100644 --- a/common/edqs/src/main/java/org/thingsboard/server/edqs/state/KafkaEdqsStateService.java +++ b/common/edqs/src/main/java/org/thingsboard/server/edqs/state/KafkaEdqsStateService.java @@ -33,6 +33,7 @@ import org.thingsboard.server.queue.common.consumer.PartitionedQueueConsumerMana import org.thingsboard.server.queue.common.consumer.QueueConsumerManager; import org.thingsboard.server.queue.common.consumer.QueueStateService; import org.thingsboard.server.queue.discovery.QueueKey; +import org.thingsboard.server.queue.discovery.TopicService; import org.thingsboard.server.queue.edqs.EdqsConfig; import org.thingsboard.server.queue.edqs.EdqsQueue; import org.thingsboard.server.queue.edqs.EdqsQueueFactory; @@ -52,6 +53,7 @@ public class KafkaEdqsStateService implements EdqsStateService { private final EdqsPartitionService partitionService; private final EdqsQueueFactory queueFactory; private final EdqsProcessor edqsProcessor; + private final TopicService topicService; private PartitionedQueueConsumerManager> stateConsumer; private QueueStateService, TbProtoQueueMsg> queueStateService; @@ -75,7 +77,6 @@ public class KafkaEdqsStateService implements EdqsStateService { } try { ToEdqsMsg msg = queueMsg.getValue(); - log.trace("Processing message: {}", msg); edqsProcessor.process(msg, EdqsQueue.STATE); if (stateReadCount.incrementAndGet() % 100000 == 0) { log.info("[state] Processed {} msgs", stateReadCount.get()); @@ -140,6 +141,7 @@ public class KafkaEdqsStateService implements EdqsStateService { stateProducer = EdqsProducer.builder() .queue(EdqsQueue.STATE) .partitionService(partitionService) + .topicService(topicService) .producer(queueFactory.createEdqsMsgProducer(EdqsQueue.STATE)) .build(); } diff --git a/common/edqs/src/main/java/org/thingsboard/server/edqs/util/EdqsConverter.java b/common/edqs/src/main/java/org/thingsboard/server/edqs/util/EdqsConverter.java index b7419451b9..817b0df4f1 100644 --- a/common/edqs/src/main/java/org/thingsboard/server/edqs/util/EdqsConverter.java +++ b/common/edqs/src/main/java/org/thingsboard/server/edqs/util/EdqsConverter.java @@ -42,7 +42,6 @@ import org.thingsboard.server.edqs.data.dp.DoubleDataPoint; import org.thingsboard.server.edqs.data.dp.JsonDataPoint; import org.thingsboard.server.edqs.data.dp.LongDataPoint; import org.thingsboard.server.edqs.data.dp.StringDataPoint; -import org.thingsboard.server.edqs.repo.TbBytePool; import org.thingsboard.server.gen.transport.TransportProtos; import org.thingsboard.server.gen.transport.TransportProtos.DataPointProto; import org.xerial.snappy.Snappy; @@ -161,11 +160,11 @@ public class EdqsConverter { } else if (proto.hasStringV()) { return new StringDataPoint(ts, proto.getStringV()); } else if (proto.hasCompressedStringV()) { - return new CompressedStringDataPoint(ts, TbBytePool.intern(proto.getCompressedStringV().toByteArray())); + return new CompressedStringDataPoint(ts, proto.getCompressedStringV().toByteArray()); } else if (proto.hasJsonV()) { return new JsonDataPoint(ts, proto.getJsonV()); } else if (proto.hasCompressedJsonV()) { - return new CompressedJsonDataPoint(ts, TbBytePool.intern(proto.getCompressedJsonV().toByteArray())); + return new CompressedJsonDataPoint(ts, proto.getCompressedJsonV().toByteArray()); } else { throw new IllegalArgumentException("Unsupported data point proto: " + proto); } diff --git a/common/edqs/src/main/java/org/thingsboard/server/edqs/repo/TbBytePool.java b/common/edqs/src/main/java/org/thingsboard/server/edqs/util/TbBytePool.java similarity index 96% rename from common/edqs/src/main/java/org/thingsboard/server/edqs/repo/TbBytePool.java rename to common/edqs/src/main/java/org/thingsboard/server/edqs/util/TbBytePool.java index a284590161..a5a5394910 100644 --- a/common/edqs/src/main/java/org/thingsboard/server/edqs/repo/TbBytePool.java +++ b/common/edqs/src/main/java/org/thingsboard/server/edqs/util/TbBytePool.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.thingsboard.server.edqs.repo; +package org.thingsboard.server.edqs.util; import com.google.common.hash.Hashing; import org.springframework.util.ConcurrentReferenceHashMap; diff --git a/common/edqs/src/main/java/org/thingsboard/server/edqs/repo/TbStringPool.java b/common/edqs/src/main/java/org/thingsboard/server/edqs/util/TbStringPool.java similarity index 96% rename from common/edqs/src/main/java/org/thingsboard/server/edqs/repo/TbStringPool.java rename to common/edqs/src/main/java/org/thingsboard/server/edqs/util/TbStringPool.java index ceb15affdf..151d6bb1b4 100644 --- a/common/edqs/src/main/java/org/thingsboard/server/edqs/repo/TbStringPool.java +++ b/common/edqs/src/main/java/org/thingsboard/server/edqs/util/TbStringPool.java @@ -13,7 +13,7 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.thingsboard.server.edqs.repo; +package org.thingsboard.server.edqs.util; import org.springframework.util.ConcurrentReferenceHashMap; diff --git a/common/queue/src/main/java/org/thingsboard/server/queue/edqs/KafkaEdqsQueueFactory.java b/common/queue/src/main/java/org/thingsboard/server/queue/edqs/KafkaEdqsQueueFactory.java index 4b599670a1..9f973ce3f1 100644 --- a/common/queue/src/main/java/org/thingsboard/server/queue/edqs/KafkaEdqsQueueFactory.java +++ b/common/queue/src/main/java/org/thingsboard/server/queue/edqs/KafkaEdqsQueueFactory.java @@ -27,6 +27,7 @@ import org.thingsboard.server.queue.TbQueueResponseTemplate; import org.thingsboard.server.queue.common.DefaultTbQueueResponseTemplate; import org.thingsboard.server.queue.common.TbProtoQueueMsg; import org.thingsboard.server.queue.discovery.TbServiceInfoProvider; +import org.thingsboard.server.queue.discovery.TopicService; import org.thingsboard.server.queue.kafka.TbKafkaAdmin; import org.thingsboard.server.queue.kafka.TbKafkaConsumerStatsService; import org.thingsboard.server.queue.kafka.TbKafkaConsumerTemplate; @@ -47,12 +48,13 @@ public class KafkaEdqsQueueFactory implements EdqsQueueFactory { private final EdqsConfig edqsConfig; private final TbServiceInfoProvider serviceInfoProvider; private final TbKafkaConsumerStatsService consumerStatsService; + private final TopicService topicService; private final AtomicInteger consumerCounter = new AtomicInteger(); public KafkaEdqsQueueFactory(TbKafkaSettings kafkaSettings, TbKafkaTopicConfigs topicConfigs, EdqsConfig edqsConfig, TbServiceInfoProvider serviceInfoProvider, - TbKafkaConsumerStatsService consumerStatsService) { + TbKafkaConsumerStatsService consumerStatsService, TopicService topicService) { this.edqsEventsAdmin = new TbKafkaAdmin(kafkaSettings, topicConfigs.getEdqsEventsConfigs()); this.edqsRequestsAdmin = new TbKafkaAdmin(kafkaSettings, topicConfigs.getEdqsRequestsConfigs()); this.edqsStateAdmin = new TbKafkaAdmin(kafkaSettings, topicConfigs.getEdqsStateConfigs()); @@ -60,6 +62,7 @@ public class KafkaEdqsQueueFactory implements EdqsQueueFactory { this.edqsConfig = edqsConfig; this.serviceInfoProvider = serviceInfoProvider; this.consumerStatsService = consumerStatsService; + this.topicService = topicService; } @Override @@ -72,11 +75,11 @@ public class KafkaEdqsQueueFactory implements EdqsQueueFactory { public TbQueueConsumer> createEdqsMsgConsumer(EdqsQueue queue, String group) { return TbKafkaConsumerTemplate.>builder() .settings(kafkaSettings) - .topic(queue.getTopic()) + .topic(topicService.buildTopicName(queue.getTopic())) .readFromBeginning(queue.isReadFromBeginning()) .stopWhenRead(queue.isStopWhenRead()) .clientId("edqs-" + queue.name().toLowerCase() + "-" + consumerCounter.getAndIncrement() + "-consumer-" + serviceInfoProvider.getServiceId()) - .groupId(group) + .groupId(topicService.buildTopicName(group)) .decoder(msg -> new TbProtoQueueMsg<>(msg.getKey(), ToEdqsMsg.parseFrom(msg.getData()), msg.getHeaders())) .admin(queue == EdqsQueue.STATE ? edqsStateAdmin : edqsEventsAdmin) .statsService(consumerStatsService) @@ -97,16 +100,16 @@ public class KafkaEdqsQueueFactory implements EdqsQueueFactory { String requestsConsumerGroup = "edqs-requests-consumer-group-" + edqsConfig.getLabel(); var requestConsumer = TbKafkaConsumerTemplate.>builder() .settings(kafkaSettings) - .topic(edqsConfig.getRequestsTopic()) + .topic(topicService.buildTopicName(edqsConfig.getRequestsTopic())) .clientId("edqs-requests-consumer-" + serviceInfoProvider.getServiceId()) - .groupId(requestsConsumerGroup) + .groupId(topicService.buildTopicName(requestsConsumerGroup)) .decoder(msg -> new TbProtoQueueMsg<>(msg.getKey(), TransportProtos.ToEdqsMsg.parseFrom(msg.getData()), msg.getHeaders())) .admin(edqsRequestsAdmin) .statsService(consumerStatsService); var responseProducer = TbKafkaProducerTemplate.>builder() .settings(kafkaSettings) .clientId("edqs-response-producer-" + serviceInfoProvider.getServiceId()) - .defaultTopic(edqsConfig.getResponsesTopic()) + .defaultTopic(topicService.buildTopicName(edqsConfig.getResponsesTopic())) .admin(edqsRequestsAdmin); return DefaultTbQueueResponseTemplate., TbProtoQueueMsg>builder() .requestTemplate(requestConsumer.build()) diff --git a/common/queue/src/main/java/org/thingsboard/server/queue/provider/KafkaMonolithQueueFactory.java b/common/queue/src/main/java/org/thingsboard/server/queue/provider/KafkaMonolithQueueFactory.java index e5b981bf5d..4acb5d94ae 100644 --- a/common/queue/src/main/java/org/thingsboard/server/queue/provider/KafkaMonolithQueueFactory.java +++ b/common/queue/src/main/java/org/thingsboard/server/queue/provider/KafkaMonolithQueueFactory.java @@ -522,7 +522,7 @@ public class KafkaMonolithQueueFactory implements TbCoreQueueFactory, TbRuleEngi var responseConsumer = TbKafkaConsumerTemplate.>builder() .settings(kafkaSettings) .topic(topicService.buildTopicName(edqsConfig.getResponsesTopic() + "." + serviceInfoProvider.getServiceId())) - .clientId(topicService.buildTopicName("monolith-edqs-response-consumer-" + serviceInfoProvider.getServiceId())) + .clientId("monolith-edqs-response-consumer-" + serviceInfoProvider.getServiceId()) .groupId(topicService.buildTopicName("monolith-edqs-response-consumer-" + serviceInfoProvider.getServiceId())) .decoder(msg -> new TbProtoQueueMsg<>(msg.getKey(), FromEdqsMsg.parseFrom(msg.getData()), msg.getHeaders())) .admin(edqsRequestsAdmin) diff --git a/common/queue/src/main/java/org/thingsboard/server/queue/provider/KafkaTbCoreQueueFactory.java b/common/queue/src/main/java/org/thingsboard/server/queue/provider/KafkaTbCoreQueueFactory.java index 4e12696d3e..646cdc676a 100644 --- a/common/queue/src/main/java/org/thingsboard/server/queue/provider/KafkaTbCoreQueueFactory.java +++ b/common/queue/src/main/java/org/thingsboard/server/queue/provider/KafkaTbCoreQueueFactory.java @@ -471,7 +471,7 @@ public class KafkaTbCoreQueueFactory implements TbCoreQueueFactory { var responseConsumer = TbKafkaConsumerTemplate.>builder() .settings(kafkaSettings) .topic(topicService.buildTopicName(edqsConfig.getResponsesTopic() + "." + serviceInfoProvider.getServiceId())) - .clientId(topicService.buildTopicName("tb-core-edqs-response-consumer-" + serviceInfoProvider.getServiceId())) + .clientId("tb-core-edqs-response-consumer-" + serviceInfoProvider.getServiceId()) .groupId(topicService.buildTopicName("tb-core-edqs-response-consumer-" + serviceInfoProvider.getServiceId())) .decoder(msg -> new TbProtoQueueMsg<>(msg.getKey(), FromEdqsMsg.parseFrom(msg.getData()), msg.getHeaders())) .admin(edqsRequestsAdmin) diff --git a/common/util/src/main/java/org/thingsboard/common/util/ExceptionUtil.java b/common/util/src/main/java/org/thingsboard/common/util/ExceptionUtil.java index ace7d1540b..21b20fec7b 100644 --- a/common/util/src/main/java/org/thingsboard/common/util/ExceptionUtil.java +++ b/common/util/src/main/java/org/thingsboard/common/util/ExceptionUtil.java @@ -64,4 +64,14 @@ public class ExceptionUtil { } } } + + public static String getMessage(Throwable t) { + String message = t.getMessage(); + if (StringUtils.isNotEmpty(message)) { + return message; + } else { + return t.getClass().getSimpleName(); + } + } + } diff --git a/dao/src/main/java/org/thingsboard/server/dao/TenantEntityDao.java b/dao/src/main/java/org/thingsboard/server/dao/TenantEntityDao.java index 19fe45ed88..f6391fd26f 100644 --- a/dao/src/main/java/org/thingsboard/server/dao/TenantEntityDao.java +++ b/dao/src/main/java/org/thingsboard/server/dao/TenantEntityDao.java @@ -15,7 +15,6 @@ */ package org.thingsboard.server.dao; -import org.thingsboard.server.common.data.ObjectType; import org.thingsboard.server.common.data.id.TenantId; import org.thingsboard.server.common.data.page.PageData; import org.thingsboard.server.common.data.page.PageLink; @@ -30,8 +29,4 @@ public interface TenantEntityDao { throw new UnsupportedOperationException(); } - default ObjectType getType() { - throw new UnsupportedOperationException(); - } - } diff --git a/dao/src/main/java/org/thingsboard/server/dao/entity/EntityDaoRegistry.java b/dao/src/main/java/org/thingsboard/server/dao/entity/EntityDaoRegistry.java index 24f8aa4d77..86887e94ec 100644 --- a/dao/src/main/java/org/thingsboard/server/dao/entity/EntityDaoRegistry.java +++ b/dao/src/main/java/org/thingsboard/server/dao/entity/EntityDaoRegistry.java @@ -18,9 +18,7 @@ package org.thingsboard.server.dao.entity; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import org.thingsboard.server.common.data.EntityType; -import org.thingsboard.server.common.data.ObjectType; import org.thingsboard.server.dao.Dao; -import org.thingsboard.server.dao.TenantEntityDao; import java.util.EnumMap; import java.util.List; @@ -31,20 +29,14 @@ import java.util.Map; @SuppressWarnings({"unchecked"}) public class EntityDaoRegistry { - private final Map> tenantEntityDaos = new EnumMap<>(ObjectType.class); private final Map> entityDaos = new EnumMap<>(EntityType.class); - private EntityDaoRegistry(List> entityDaos, List> tenantEntityDaos) { + private EntityDaoRegistry(List> entityDaos) { entityDaos.forEach(dao -> { if (dao.getEntityType() != null) { this.entityDaos.put(dao.getEntityType(), dao); } }); - tenantEntityDaos.forEach(dao -> { - if (dao.getType() != null) { - this.tenantEntityDaos.put(dao.getType(), dao); - } - }); } public Dao getDao(EntityType entityType) { @@ -55,12 +47,4 @@ public class EntityDaoRegistry { return dao; } - public TenantEntityDao getTenantEntityDao(ObjectType objectType) { - TenantEntityDao dao = tenantEntityDaos.get(objectType); - if (dao == null) { - throw new IllegalArgumentException("Missing tenant entity dao for entity type " + objectType); - } - return (TenantEntityDao) dao; - } - } diff --git a/dao/src/main/java/org/thingsboard/server/dao/model/sql/AlarmTypeEntity.java b/dao/src/main/java/org/thingsboard/server/dao/model/sql/AlarmTypeEntity.java deleted file mode 100644 index 729d7a44f0..0000000000 --- a/dao/src/main/java/org/thingsboard/server/dao/model/sql/AlarmTypeEntity.java +++ /dev/null @@ -1,65 +0,0 @@ -/** - * Copyright © 2016-2024 The Thingsboard Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.thingsboard.server.dao.model.sql; - -import jakarta.persistence.Column; -import jakarta.persistence.Entity; -import jakarta.persistence.Id; -import jakarta.persistence.IdClass; -import jakarta.persistence.Table; -import lombok.Data; -import org.thingsboard.server.common.data.alarm.AlarmType; -import org.thingsboard.server.common.data.id.TenantId; -import org.thingsboard.server.dao.model.ModelConstants; -import org.thingsboard.server.dao.model.ToData; - -import java.util.UUID; - -@Data -@Entity -@Table(name = ModelConstants.ALARM_TYPES_TABLE_NAME) -@IdClass(AlarmTypeCompositeKey.class) -public class AlarmTypeEntity implements ToData { - - @Id - @Column(name = ModelConstants.TENANT_ID_PROPERTY, nullable = false) - private UUID tenantId; - - @Id - @Column(name = ModelConstants.ALARM_TYPE_PROPERTY, nullable = false) - private String type; - - public AlarmTypeEntity() {} - - public AlarmTypeEntity(AlarmType alarmType) { - setTenantId(alarmType.getTenantId().getId()); - setType(alarmType.getType()); - } - - public AlarmTypeEntity(UUID tenantId, String type) { - this.tenantId = tenantId; - this.type = type; - } - - @Override - public AlarmType toData() { - AlarmType alarmType = new AlarmType(); - alarmType.setTenantId(TenantId.fromUUID(tenantId)); - alarmType.setType(type); - return alarmType; - } - -} diff --git a/dao/src/main/java/org/thingsboard/server/dao/sql/alarm/AlarmTypeRepository.java b/dao/src/main/java/org/thingsboard/server/dao/sql/alarm/AlarmTypeRepository.java deleted file mode 100644 index b84542e3c3..0000000000 --- a/dao/src/main/java/org/thingsboard/server/dao/sql/alarm/AlarmTypeRepository.java +++ /dev/null @@ -1,30 +0,0 @@ -/** - * Copyright © 2016-2024 The Thingsboard Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.thingsboard.server.dao.sql.alarm; - -import org.springframework.data.domain.Page; -import org.springframework.data.domain.Pageable; -import org.springframework.data.jpa.repository.JpaRepository; -import org.thingsboard.server.dao.model.sql.AlarmTypeCompositeKey; -import org.thingsboard.server.dao.model.sql.AlarmTypeEntity; - -import java.util.UUID; - -public interface AlarmTypeRepository extends JpaRepository { - - Page findByTenantId(UUID tenantId, Pageable pageable); - -} diff --git a/dao/src/main/java/org/thingsboard/server/dao/sql/alarm/JpaAlarmCommentDao.java b/dao/src/main/java/org/thingsboard/server/dao/sql/alarm/JpaAlarmCommentDao.java index 9d74b9bf8e..f6d85fc762 100644 --- a/dao/src/main/java/org/thingsboard/server/dao/sql/alarm/JpaAlarmCommentDao.java +++ b/dao/src/main/java/org/thingsboard/server/dao/sql/alarm/JpaAlarmCommentDao.java @@ -22,7 +22,6 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.stereotype.Component; -import org.thingsboard.server.common.data.ObjectType; import org.thingsboard.server.common.data.alarm.AlarmComment; import org.thingsboard.server.common.data.alarm.AlarmCommentInfo; import org.thingsboard.server.common.data.id.AlarmId; @@ -93,9 +92,4 @@ public class JpaAlarmCommentDao extends JpaPartitionedAbstractDao implements A return EntityType.ALARM; } - @Override - public ObjectType getType() { - return ObjectType.ALARM; - } - } diff --git a/dao/src/main/java/org/thingsboard/server/dao/sql/alarm/JpaAlarmTypeDao.java b/dao/src/main/java/org/thingsboard/server/dao/sql/alarm/JpaAlarmTypeDao.java deleted file mode 100644 index 532f06eb03..0000000000 --- a/dao/src/main/java/org/thingsboard/server/dao/sql/alarm/JpaAlarmTypeDao.java +++ /dev/null @@ -1,46 +0,0 @@ -/** - * Copyright © 2016-2024 The Thingsboard Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.thingsboard.server.dao.sql.alarm; - -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Component; -import org.thingsboard.server.common.data.ObjectType; -import org.thingsboard.server.common.data.alarm.AlarmType; -import org.thingsboard.server.common.data.id.TenantId; -import org.thingsboard.server.common.data.page.PageData; -import org.thingsboard.server.common.data.page.PageLink; -import org.thingsboard.server.dao.DaoUtil; -import org.thingsboard.server.dao.TenantEntityDao; -import org.thingsboard.server.dao.util.SqlDao; - -@Component -@SqlDao -public class JpaAlarmTypeDao implements TenantEntityDao { - - @Autowired - private AlarmTypeRepository alarmTypeRepository; - - @Override - public PageData findAllByTenantId(TenantId tenantId, PageLink pageLink) { - return DaoUtil.toPageData(alarmTypeRepository.findByTenantId(tenantId.getId(), DaoUtil.toPageable(pageLink, "tenantId", "type"))); - } - - @Override - public ObjectType getType() { - return ObjectType.ALARM_TYPE; - } - -} diff --git a/dao/src/main/java/org/thingsboard/server/dao/sql/alarm/JpaEntityAlarmDao.java b/dao/src/main/java/org/thingsboard/server/dao/sql/alarm/JpaEntityAlarmDao.java index 6bbc59559a..ebffd50656 100644 --- a/dao/src/main/java/org/thingsboard/server/dao/sql/alarm/JpaEntityAlarmDao.java +++ b/dao/src/main/java/org/thingsboard/server/dao/sql/alarm/JpaEntityAlarmDao.java @@ -17,7 +17,6 @@ package org.thingsboard.server.dao.sql.alarm; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; -import org.thingsboard.server.common.data.ObjectType; import org.thingsboard.server.common.data.alarm.EntityAlarm; import org.thingsboard.server.common.data.id.TenantId; import org.thingsboard.server.common.data.page.PageData; @@ -38,9 +37,4 @@ public class JpaEntityAlarmDao implements TenantEntityDao { return DaoUtil.toPageData(entityAlarmRepository.findByTenantId(tenantId.getId(), DaoUtil.toPageable(pageLink, "entityId", "alarmId"))); } - @Override - public ObjectType getType() { - return ObjectType.ENTITY_ALARM; - } - } diff --git a/dao/src/main/java/org/thingsboard/server/dao/sql/asset/JpaAssetDao.java b/dao/src/main/java/org/thingsboard/server/dao/sql/asset/JpaAssetDao.java index 176eb0856a..721f46901a 100644 --- a/dao/src/main/java/org/thingsboard/server/dao/sql/asset/JpaAssetDao.java +++ b/dao/src/main/java/org/thingsboard/server/dao/sql/asset/JpaAssetDao.java @@ -23,7 +23,6 @@ import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.stereotype.Component; import org.thingsboard.server.common.data.EntitySubtype; import org.thingsboard.server.common.data.EntityType; -import org.thingsboard.server.common.data.ObjectType; import org.thingsboard.server.common.data.asset.Asset; import org.thingsboard.server.common.data.asset.AssetInfo; import org.thingsboard.server.common.data.edqs.fields.AssetFields; @@ -285,9 +284,4 @@ public class JpaAssetDao extends JpaAbstractDao implements A return EntityType.ASSET; } - @Override - public ObjectType getType() { - return ObjectType.ASSET; - } - } diff --git a/dao/src/main/java/org/thingsboard/server/dao/sql/asset/JpaAssetProfileDao.java b/dao/src/main/java/org/thingsboard/server/dao/sql/asset/JpaAssetProfileDao.java index d43871823e..55f72d9682 100644 --- a/dao/src/main/java/org/thingsboard/server/dao/sql/asset/JpaAssetProfileDao.java +++ b/dao/src/main/java/org/thingsboard/server/dao/sql/asset/JpaAssetProfileDao.java @@ -22,7 +22,6 @@ import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.stereotype.Component; import org.thingsboard.server.common.data.EntityInfo; import org.thingsboard.server.common.data.EntityType; -import org.thingsboard.server.common.data.ObjectType; import org.thingsboard.server.common.data.asset.AssetProfile; import org.thingsboard.server.common.data.asset.AssetProfileInfo; import org.thingsboard.server.common.data.edqs.fields.AssetProfileFields; @@ -157,9 +156,4 @@ public class JpaAssetProfileDao extends JpaAbstractDao imp return EntityType.CUSTOMER; } - @Override - public ObjectType getType() { - return ObjectType.CUSTOMER; - } - } diff --git a/dao/src/main/java/org/thingsboard/server/dao/sql/dashboard/JpaDashboardDao.java b/dao/src/main/java/org/thingsboard/server/dao/sql/dashboard/JpaDashboardDao.java index 9422f38aae..1431837864 100644 --- a/dao/src/main/java/org/thingsboard/server/dao/sql/dashboard/JpaDashboardDao.java +++ b/dao/src/main/java/org/thingsboard/server/dao/sql/dashboard/JpaDashboardDao.java @@ -21,7 +21,6 @@ import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.stereotype.Component; import org.thingsboard.server.common.data.Dashboard; import org.thingsboard.server.common.data.EntityType; -import org.thingsboard.server.common.data.ObjectType; import org.thingsboard.server.common.data.edqs.fields.DashboardFields; import org.thingsboard.server.common.data.id.DashboardId; import org.thingsboard.server.common.data.id.TenantId; @@ -108,9 +107,4 @@ public class JpaDashboardDao extends JpaAbstractDao return EntityType.DASHBOARD; } - @Override - public ObjectType getType() { - return ObjectType.DASHBOARD; - } - } diff --git a/dao/src/main/java/org/thingsboard/server/dao/sql/device/DeviceProfileRepository.java b/dao/src/main/java/org/thingsboard/server/dao/sql/device/DeviceProfileRepository.java index 18f7f35710..4b87f0274d 100644 --- a/dao/src/main/java/org/thingsboard/server/dao/sql/device/DeviceProfileRepository.java +++ b/dao/src/main/java/org/thingsboard/server/dao/sql/device/DeviceProfileRepository.java @@ -25,7 +25,6 @@ import org.thingsboard.server.common.data.DeviceProfileInfo; import org.thingsboard.server.common.data.DeviceTransportType; import org.thingsboard.server.common.data.EntityInfo; import org.thingsboard.server.common.data.edqs.fields.DeviceProfileFields; -import org.thingsboard.server.common.data.edqs.fields.GenericFields; import org.thingsboard.server.dao.ExportableEntityRepository; import org.thingsboard.server.dao.model.sql.DeviceProfileEntity; diff --git a/dao/src/main/java/org/thingsboard/server/dao/sql/device/JpaDeviceCredentialsDao.java b/dao/src/main/java/org/thingsboard/server/dao/sql/device/JpaDeviceCredentialsDao.java index 31d2aa6cb9..25b996eb57 100644 --- a/dao/src/main/java/org/thingsboard/server/dao/sql/device/JpaDeviceCredentialsDao.java +++ b/dao/src/main/java/org/thingsboard/server/dao/sql/device/JpaDeviceCredentialsDao.java @@ -19,7 +19,6 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.stereotype.Component; -import org.thingsboard.server.common.data.ObjectType; import org.thingsboard.server.common.data.id.DeviceId; import org.thingsboard.server.common.data.id.TenantId; import org.thingsboard.server.common.data.page.PageData; @@ -76,9 +75,4 @@ public class JpaDeviceCredentialsDao extends JpaAbstractDao implement return EntityType.DEVICE; } - @Override - public ObjectType getType() { - return ObjectType.DEVICE; - } - } diff --git a/dao/src/main/java/org/thingsboard/server/dao/sql/device/JpaDeviceProfileDao.java b/dao/src/main/java/org/thingsboard/server/dao/sql/device/JpaDeviceProfileDao.java index c4d48dff35..8f7dcfb916 100644 --- a/dao/src/main/java/org/thingsboard/server/dao/sql/device/JpaDeviceProfileDao.java +++ b/dao/src/main/java/org/thingsboard/server/dao/sql/device/JpaDeviceProfileDao.java @@ -25,7 +25,6 @@ import org.thingsboard.server.common.data.DeviceProfileInfo; import org.thingsboard.server.common.data.DeviceTransportType; import org.thingsboard.server.common.data.EntityInfo; import org.thingsboard.server.common.data.EntityType; -import org.thingsboard.server.common.data.ObjectType; import org.thingsboard.server.common.data.StringUtils; import org.thingsboard.server.common.data.edqs.fields.DeviceProfileFields; import org.thingsboard.server.common.data.id.DeviceProfileId; @@ -175,9 +174,4 @@ public class JpaDeviceProfileDao extends JpaAbstractDao implements Edge return EntityType.EDGE; } - @Override - public ObjectType getType() { - return ObjectType.EDGE; - } - } diff --git a/dao/src/main/java/org/thingsboard/server/dao/sql/entityview/EntityViewRepository.java b/dao/src/main/java/org/thingsboard/server/dao/sql/entityview/EntityViewRepository.java index b18fd58248..3cc212497b 100644 --- a/dao/src/main/java/org/thingsboard/server/dao/sql/entityview/EntityViewRepository.java +++ b/dao/src/main/java/org/thingsboard/server/dao/sql/entityview/EntityViewRepository.java @@ -22,7 +22,6 @@ import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.Query; import org.springframework.data.repository.query.Param; import org.thingsboard.server.common.data.edqs.fields.EntityViewFields; -import org.thingsboard.server.common.data.edqs.fields.GenericFields; import org.thingsboard.server.dao.ExportableEntityRepository; import org.thingsboard.server.dao.model.sql.EntityViewEntity; import org.thingsboard.server.dao.model.sql.EntityViewInfoEntity; diff --git a/dao/src/main/java/org/thingsboard/server/dao/sql/entityview/JpaEntityViewDao.java b/dao/src/main/java/org/thingsboard/server/dao/sql/entityview/JpaEntityViewDao.java index 4c30e26f05..4172af056f 100644 --- a/dao/src/main/java/org/thingsboard/server/dao/sql/entityview/JpaEntityViewDao.java +++ b/dao/src/main/java/org/thingsboard/server/dao/sql/entityview/JpaEntityViewDao.java @@ -25,7 +25,6 @@ import org.thingsboard.server.common.data.EntitySubtype; import org.thingsboard.server.common.data.EntityType; import org.thingsboard.server.common.data.EntityView; import org.thingsboard.server.common.data.EntityViewInfo; -import org.thingsboard.server.common.data.ObjectType; import org.thingsboard.server.common.data.edqs.fields.EntityViewFields; import org.thingsboard.server.common.data.id.EntityViewId; import org.thingsboard.server.common.data.id.TenantId; @@ -236,9 +235,4 @@ public class JpaEntityViewDao extends JpaAbstractDao implements Q return EntityType.QUEUE; } - @Override - public ObjectType getType() { - return ObjectType.QUEUE; - } - } diff --git a/dao/src/main/java/org/thingsboard/server/dao/sql/queue/JpaQueueStatsDao.java b/dao/src/main/java/org/thingsboard/server/dao/sql/queue/JpaQueueStatsDao.java index 41e2de02a6..3e8f2c11ce 100644 --- a/dao/src/main/java/org/thingsboard/server/dao/sql/queue/JpaQueueStatsDao.java +++ b/dao/src/main/java/org/thingsboard/server/dao/sql/queue/JpaQueueStatsDao.java @@ -21,7 +21,6 @@ import org.springframework.data.domain.Limit; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.stereotype.Component; import org.thingsboard.server.common.data.EntityType; -import org.thingsboard.server.common.data.ObjectType; import org.thingsboard.server.common.data.edqs.fields.QueueStatsFields; import org.thingsboard.server.common.data.id.QueueStatsId; import org.thingsboard.server.common.data.id.TenantId; @@ -67,11 +66,6 @@ public class JpaQueueStatsDao extends JpaAbstractDao implements RpcDao, return EntityType.RPC; } - @Override - public ObjectType getType() { - return ObjectType.RPC; - } - } diff --git a/dao/src/main/java/org/thingsboard/server/dao/sql/rule/JpaRuleChainDao.java b/dao/src/main/java/org/thingsboard/server/dao/sql/rule/JpaRuleChainDao.java index ad0d596474..d5cd046e98 100644 --- a/dao/src/main/java/org/thingsboard/server/dao/sql/rule/JpaRuleChainDao.java +++ b/dao/src/main/java/org/thingsboard/server/dao/sql/rule/JpaRuleChainDao.java @@ -21,7 +21,6 @@ import org.springframework.data.domain.Limit; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.stereotype.Component; import org.thingsboard.server.common.data.EntityType; -import org.thingsboard.server.common.data.ObjectType; import org.thingsboard.server.common.data.edqs.fields.RuleChainFields; import org.thingsboard.server.common.data.id.RuleChainId; import org.thingsboard.server.common.data.id.TenantId; @@ -152,9 +151,4 @@ public class JpaRuleChainDao extends JpaAbstractDao return EntityType.RULE_CHAIN; } - @Override - public ObjectType getType() { - return ObjectType.RULE_CHAIN; - } - } diff --git a/dao/src/main/java/org/thingsboard/server/dao/sql/rule/JpaRuleNodeDao.java b/dao/src/main/java/org/thingsboard/server/dao/sql/rule/JpaRuleNodeDao.java index 307f15c7f4..43087b8652 100644 --- a/dao/src/main/java/org/thingsboard/server/dao/sql/rule/JpaRuleNodeDao.java +++ b/dao/src/main/java/org/thingsboard/server/dao/sql/rule/JpaRuleNodeDao.java @@ -20,7 +20,6 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.stereotype.Component; import org.thingsboard.server.common.data.EntityType; -import org.thingsboard.server.common.data.ObjectType; import org.thingsboard.server.common.data.id.RuleChainId; import org.thingsboard.server.common.data.id.RuleNodeId; import org.thingsboard.server.common.data.id.TenantId; @@ -118,9 +117,4 @@ public class JpaRuleNodeDao extends JpaAbstractDao imp return EntityType.RULE_NODE; } - @Override - public ObjectType getType() { - return ObjectType.RULE_NODE; - } - } diff --git a/dao/src/main/java/org/thingsboard/server/dao/sql/settings/JpaAdminSettingsDao.java b/dao/src/main/java/org/thingsboard/server/dao/sql/settings/JpaAdminSettingsDao.java index 9e0f6a70cb..6a4ae62b48 100644 --- a/dao/src/main/java/org/thingsboard/server/dao/sql/settings/JpaAdminSettingsDao.java +++ b/dao/src/main/java/org/thingsboard/server/dao/sql/settings/JpaAdminSettingsDao.java @@ -21,7 +21,6 @@ import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.stereotype.Component; import org.springframework.transaction.annotation.Transactional; import org.thingsboard.server.common.data.AdminSettings; -import org.thingsboard.server.common.data.ObjectType; import org.thingsboard.server.common.data.id.TenantId; import org.thingsboard.server.common.data.page.PageData; import org.thingsboard.server.common.data.page.PageLink; @@ -78,9 +77,4 @@ public class JpaAdminSettingsDao extends JpaAbstractDao implements User return EntityType.USER; } - @Override - public ObjectType getType() { - return ObjectType.USER; - } - } diff --git a/dao/src/main/java/org/thingsboard/server/dao/sql/user/JpaUserSettingsDao.java b/dao/src/main/java/org/thingsboard/server/dao/sql/user/JpaUserSettingsDao.java index b41bfa7728..34f496e0a7 100644 --- a/dao/src/main/java/org/thingsboard/server/dao/sql/user/JpaUserSettingsDao.java +++ b/dao/src/main/java/org/thingsboard/server/dao/sql/user/JpaUserSettingsDao.java @@ -18,7 +18,6 @@ package org.thingsboard.server.dao.sql.user; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; -import org.thingsboard.server.common.data.ObjectType; import org.thingsboard.server.common.data.id.TenantId; import org.thingsboard.server.common.data.id.UserId; import org.thingsboard.server.common.data.page.PageData; @@ -74,9 +73,4 @@ public class JpaUserSettingsDao implements UserSettingsDao, TenantEntityDao ignored = EnumSet.of(TENANT, TENANT_PROFILE, RELATION, EVENT, ATTRIBUTE_KV, LATEST_TS_KV, AUDIT_LOG, - OAUTH2_CLIENT, OAUTH2_DOMAIN, OAUTH2_MOBILE); - for (ObjectType type : ObjectType.values()) { - if (ignored.contains(type)) { - continue; - } - - TenantEntityDao dao = assertDoesNotThrow(() -> entityDaoRegistry.getTenantEntityDao(type)); - assertDoesNotThrow(() -> { - dao.findAllByTenantId(tenantId, new PageLink(100)); - }); - } - } - } diff --git a/edqs/src/main/resources/logback.xml b/edqs/src/main/resources/logback.xml index 8680457ab1..d96cb1a7d3 100644 --- a/edqs/src/main/resources/logback.xml +++ b/edqs/src/main/resources/logback.xml @@ -28,7 +28,6 @@ - diff --git a/edqs/src/test/java/org/thingsboard/server/edqs/repo/AbstractEDQTest.java b/edqs/src/test/java/org/thingsboard/server/edqs/repo/AbstractEDQTest.java index 1f22f9d5ae..6f38e7b6d6 100644 --- a/edqs/src/test/java/org/thingsboard/server/edqs/repo/AbstractEDQTest.java +++ b/edqs/src/test/java/org/thingsboard/server/edqs/repo/AbstractEDQTest.java @@ -69,14 +69,14 @@ import java.util.UUID; @Configuration @ComponentScan({"org.thingsboard.server.edqs.repo", "org.thingsboard.server.edqs.util"}) @EntityScan("org.thingsboard.server.edqs") -@TestPropertySource(locations = {"classpath:edq-test.properties"}) +@TestPropertySource(locations = {"classpath:edqs-test.properties"}) @TestExecutionListeners({ DependencyInjectionTestExecutionListener.class, DirtiesContextTestExecutionListener.class}) public abstract class AbstractEDQTest { @Autowired - protected InMemoryEdqRepository repository; + protected DefaultEdqsRepository repository; @Autowired protected EdqsConverter edqsConverter; diff --git a/edqs/src/test/resources/edq-test.properties b/edqs/src/test/resources/edqs-test.properties similarity index 100% rename from edqs/src/test/resources/edq-test.properties rename to edqs/src/test/resources/edqs-test.properties