From 5cbc78fbf44e9b15520ec0e321709c74d396fd83 Mon Sep 17 00:00:00 2001 From: Volodymyr Babak Date: Wed, 22 Dec 2021 15:53:23 +0200 Subject: [PATCH 1/7] Added sort by ID for edge event to properly fetch events by page in case of repeated createdTime --- .../rpc/fetch/BasePageableEdgeEventFetcher.java | 16 ++-------------- .../server/dao/sql/edge/JpaBaseEdgeEventDao.java | 16 ++++++++++------ 2 files changed, 12 insertions(+), 20 deletions(-) diff --git a/application/src/main/java/org/thingsboard/server/service/edge/rpc/fetch/BasePageableEdgeEventFetcher.java b/application/src/main/java/org/thingsboard/server/service/edge/rpc/fetch/BasePageableEdgeEventFetcher.java index eb8592dae5..a3dc409cdf 100644 --- a/application/src/main/java/org/thingsboard/server/service/edge/rpc/fetch/BasePageableEdgeEventFetcher.java +++ b/application/src/main/java/org/thingsboard/server/service/edge/rpc/fetch/BasePageableEdgeEventFetcher.java @@ -15,25 +15,13 @@ */ package org.thingsboard.server.service.edge.rpc.fetch; -import com.fasterxml.jackson.databind.ObjectMapper; import lombok.extern.slf4j.Slf4j; -import org.thingsboard.server.common.data.BaseData; import org.thingsboard.server.common.data.edge.Edge; import org.thingsboard.server.common.data.edge.EdgeEvent; -import org.thingsboard.server.common.data.edge.EdgeEventActionType; -import org.thingsboard.server.common.data.edge.EdgeEventType; -import org.thingsboard.server.common.data.id.EntityId; -import org.thingsboard.server.common.data.id.EventId; -import org.thingsboard.server.common.data.id.HasId; -import org.thingsboard.server.common.data.id.HasUUID; -import org.thingsboard.server.common.data.id.IdBased; -import org.thingsboard.server.common.data.id.RuleChainId; import org.thingsboard.server.common.data.id.TenantId; -import org.thingsboard.server.common.data.id.UUIDBased; import org.thingsboard.server.common.data.page.PageData; import org.thingsboard.server.common.data.page.PageLink; -import org.thingsboard.server.common.data.rule.RuleChain; -import org.thingsboard.server.service.edge.rpc.EdgeEventUtils; +import org.thingsboard.server.common.data.page.SortOrder; import java.util.ArrayList; import java.util.List; @@ -43,7 +31,7 @@ public abstract class BasePageableEdgeEventFetcher implements EdgeEventFetche @Override public PageLink getPageLink(int pageSize) { - return new PageLink(pageSize); + return new PageLink(pageSize, 0, null, new SortOrder("createdTime", SortOrder.Direction.ASC)); } @Override diff --git a/dao/src/main/java/org/thingsboard/server/dao/sql/edge/JpaBaseEdgeEventDao.java b/dao/src/main/java/org/thingsboard/server/dao/sql/edge/JpaBaseEdgeEventDao.java index ff5da30f31..8645efccf7 100644 --- a/dao/src/main/java/org/thingsboard/server/dao/sql/edge/JpaBaseEdgeEventDao.java +++ b/dao/src/main/java/org/thingsboard/server/dao/sql/edge/JpaBaseEdgeEventDao.java @@ -16,29 +16,28 @@ package org.thingsboard.server.dao.sql.edge; import com.datastax.oss.driver.api.core.uuid.Uuids; -import com.google.common.util.concurrent.ListenableFuture; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.repository.CrudRepository; import org.springframework.stereotype.Component; import org.thingsboard.server.common.data.edge.EdgeEvent; -import org.thingsboard.server.common.data.edge.EdgeEventActionType; import org.thingsboard.server.common.data.id.EdgeEventId; import org.thingsboard.server.common.data.id.EdgeId; -import org.thingsboard.server.common.data.id.EventId; import org.thingsboard.server.common.data.page.PageData; +import org.thingsboard.server.common.data.page.SortOrder; import org.thingsboard.server.common.data.page.TimePageLink; import org.thingsboard.server.dao.DaoUtil; import org.thingsboard.server.dao.edge.EdgeEventDao; import org.thingsboard.server.dao.model.sql.EdgeEventEntity; -import org.thingsboard.server.dao.model.sql.EventEntity; import org.thingsboard.server.dao.sql.JpaAbstractSearchTextDao; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; +import java.util.ArrayList; +import java.util.List; import java.util.Objects; import java.util.Optional; import java.util.UUID; @@ -100,6 +99,11 @@ public class JpaBaseEdgeEventDao extends JpaAbstractSearchTextDao findEdgeEvents(UUID tenantId, EdgeId edgeId, TimePageLink pageLink, boolean withTsUpdate) { + List sortOrders = new ArrayList<>(); + sortOrders.add(new SortOrder("id", SortOrder.Direction.ASC)); + if (pageLink.getSortOrder() != null) { + sortOrders.add(pageLink.getSortOrder()); + } final Lock readWriteLock = readWriteLocks.computeIfAbsent(edgeId, id -> new ReentrantLock()); readWriteLock.lock(); try { @@ -112,7 +116,7 @@ public class JpaBaseEdgeEventDao extends JpaAbstractSearchTextDao Date: Wed, 22 Dec 2021 17:10:28 +0200 Subject: [PATCH 2/7] Moved toSort from DaoUtil to PageLink/TimePageLink classes --- common/data/pom.xml | 4 ++ .../server/common/data/page/PageLink.java | 34 ++++++++++++++ .../server/common/data/page/TimePageLink.java | 31 +++++++++++++ .../org/thingsboard/server/dao/DaoUtil.java | 46 ++----------------- .../dao/sql/edge/JpaBaseEdgeEventDao.java | 9 +--- 5 files changed, 74 insertions(+), 50 deletions(-) diff --git a/common/data/pom.xml b/common/data/pom.xml index 80be41e6a0..5a5838d7da 100644 --- a/common/data/pom.xml +++ b/common/data/pom.xml @@ -64,6 +64,10 @@ com.fasterxml.jackson.core jackson-databind + + org.springframework.boot + spring-boot-starter-data-jpa + org.springframework.boot spring-boot-starter-test diff --git a/common/data/src/main/java/org/thingsboard/server/common/data/page/PageLink.java b/common/data/src/main/java/org/thingsboard/server/common/data/page/PageLink.java index a31f834068..acf0d2f71e 100644 --- a/common/data/src/main/java/org/thingsboard/server/common/data/page/PageLink.java +++ b/common/data/src/main/java/org/thingsboard/server/common/data/page/PageLink.java @@ -18,9 +18,19 @@ package org.thingsboard.server.common.data.page; import com.fasterxml.jackson.annotation.JsonIgnore; import lombok.Data; +import org.springframework.data.domain.Sort; + +import java.util.Collections; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + @Data public class PageLink { + protected static final String DEFAULT_SORT_PROPERTY = "id"; + private static final Sort DEFAULT_SORT = Sort.by(Sort.Direction.ASC, DEFAULT_SORT_PROPERTY); + private final String textSearch; private final int pageSize; private final int page; @@ -57,4 +67,28 @@ public class PageLink { return new PageLink(this.pageSize, this.page+1, this.textSearch, this.sortOrder); } + public Sort toSort(SortOrder sortOrder, Map columnMap) { + if (sortOrder == null) { + return DEFAULT_SORT; + } else { + String property = sortOrder.getProperty(); + if (columnMap.containsKey(property)) { + property = columnMap.get(property); + } + return Sort.by(Sort.Direction.fromString(sortOrder.getDirection().name()), property); + } + } + + public Sort toSort(List sortOrders, Map columnMap) { + return Sort.by(sortOrders.stream().map(s -> toSortOrder(s, columnMap)).collect(Collectors.toList())); + } + + private Sort.Order toSortOrder(SortOrder sortOrder, Map columnMap) { + String property = sortOrder.getProperty(); + if (columnMap.containsKey(property)) { + property = columnMap.get(property); + } + return new Sort.Order(Sort.Direction.fromString(sortOrder.getDirection().name()), property, Sort.NullHandling.NULLS_LAST); + } + } diff --git a/common/data/src/main/java/org/thingsboard/server/common/data/page/TimePageLink.java b/common/data/src/main/java/org/thingsboard/server/common/data/page/TimePageLink.java index be4878b50e..7be6f1ec8b 100644 --- a/common/data/src/main/java/org/thingsboard/server/common/data/page/TimePageLink.java +++ b/common/data/src/main/java/org/thingsboard/server/common/data/page/TimePageLink.java @@ -19,6 +19,11 @@ import com.fasterxml.jackson.annotation.JsonIgnore; import lombok.Data; import lombok.EqualsAndHashCode; import lombok.ToString; +import org.springframework.data.domain.Sort; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; @Data @ToString(callSuper = true) @@ -61,4 +66,30 @@ public class TimePageLink extends PageLink { return new TimePageLink(this.getPageSize(), this.getPage()+1, this.getTextSearch(), this.getSortOrder(), this.startTime, this.endTime); } + + @Override + public Sort toSort(SortOrder sortOrder, Map columnMap) { + if (sortOrder == null) { + return super.toSort(sortOrder, columnMap); + } else { + return toSort(new ArrayList<>(List.of(sortOrder)), columnMap); + } + } + + @Override + public Sort toSort(List sortOrders, Map columnMap) { + if (!isDefaultSortOrderAvailable(sortOrders)) { + sortOrders.add(new SortOrder(DEFAULT_SORT_PROPERTY, SortOrder.Direction.ASC)); + } + return super.toSort(sortOrders, columnMap); + } + + private boolean isDefaultSortOrderAvailable(List sortOrders) { + for (SortOrder sortOrder : sortOrders) { + if (DEFAULT_SORT_PROPERTY.equals(sortOrder.getProperty())) { + return true; + } + } + return false; + } } diff --git a/dao/src/main/java/org/thingsboard/server/dao/DaoUtil.java b/dao/src/main/java/org/thingsboard/server/dao/DaoUtil.java index 19f613bd30..b6ab190573 100644 --- a/dao/src/main/java/org/thingsboard/server/dao/DaoUtil.java +++ b/dao/src/main/java/org/thingsboard/server/dao/DaoUtil.java @@ -18,7 +18,7 @@ package org.thingsboard.server.dao; import org.springframework.data.domain.Page; import org.springframework.data.domain.PageRequest; import org.springframework.data.domain.Pageable; -import org.springframework.data.domain.Sort; + import org.thingsboard.server.common.data.id.UUIDBased; import org.thingsboard.server.common.data.page.PageData; import org.thingsboard.server.common.data.page.PageLink; @@ -32,13 +32,9 @@ import java.util.List; import java.util.Map; import java.util.Optional; import java.util.UUID; -import java.util.stream.Collectors; public abstract class DaoUtil { - public static final String DEFAULT_SORT_PROPERTY = "id"; - public static final Sort DEFAULT_SORT = Sort.by(Sort.Direction.ASC, DEFAULT_SORT_PROPERTY); - private DaoUtil() { } @@ -56,7 +52,7 @@ public abstract class DaoUtil { } public static Pageable toPageable(PageLink pageLink, Map columnMap) { - return PageRequest.of(pageLink.getPage(), pageLink.getPageSize(), toSort(pageLink.getSortOrder(), columnMap)); + return PageRequest.of(pageLink.getPage(), pageLink.getPageSize(), pageLink.toSort(pageLink.getSortOrder(), columnMap)); } public static Pageable toPageable(PageLink pageLink, List sortOrders) { @@ -64,43 +60,7 @@ public abstract class DaoUtil { } public static Pageable toPageable(PageLink pageLink, Map columnMap, List sortOrders) { - return PageRequest.of(pageLink.getPage(), pageLink.getPageSize(), toSort(sortOrders, columnMap)); - } - - public static Sort toSort(SortOrder sortOrder) { - return toSort(sortOrder, Collections.emptyMap()); - } - - public static Sort toSort(SortOrder sortOrder, Map columnMap) { - if (sortOrder == null) { - return DEFAULT_SORT; - } else { - String property = sortOrder.getProperty(); - if (columnMap.containsKey(property)) { - property = columnMap.get(property); - } - return Sort.by(Sort.Direction.fromString(sortOrder.getDirection().name()), property); - } - } - - public static Sort toSort(List sortOrders) { - return toSort(sortOrders, Collections.emptyMap()); - } - - public static Sort toSort(List sortOrders, Map columnMap) { - return toSort(sortOrders, columnMap, Sort.NullHandling.NULLS_LAST); - } - - public static Sort toSort(List sortOrders, Map columnMap, Sort.NullHandling nullHandlingHint) { - return Sort.by(sortOrders.stream().map(s -> toSortOrder(s, columnMap, nullHandlingHint)).collect(Collectors.toList())); - } - - public static Sort.Order toSortOrder(SortOrder sortOrder, Map columnMap, Sort.NullHandling nullHandlingHint) { - String property = sortOrder.getProperty(); - if (columnMap.containsKey(property)) { - property = columnMap.get(property); - } - return new Sort.Order(Sort.Direction.fromString(sortOrder.getDirection().name()), property, nullHandlingHint); + return PageRequest.of(pageLink.getPage(), pageLink.getPageSize(), pageLink.toSort(sortOrders, columnMap)); } public static List convertDataList(Collection> toDataList) { diff --git a/dao/src/main/java/org/thingsboard/server/dao/sql/edge/JpaBaseEdgeEventDao.java b/dao/src/main/java/org/thingsboard/server/dao/sql/edge/JpaBaseEdgeEventDao.java index 8645efccf7..dfb00eafcc 100644 --- a/dao/src/main/java/org/thingsboard/server/dao/sql/edge/JpaBaseEdgeEventDao.java +++ b/dao/src/main/java/org/thingsboard/server/dao/sql/edge/JpaBaseEdgeEventDao.java @@ -99,11 +99,6 @@ public class JpaBaseEdgeEventDao extends JpaAbstractSearchTextDao findEdgeEvents(UUID tenantId, EdgeId edgeId, TimePageLink pageLink, boolean withTsUpdate) { - List sortOrders = new ArrayList<>(); - sortOrders.add(new SortOrder("id", SortOrder.Direction.ASC)); - if (pageLink.getSortOrder() != null) { - sortOrders.add(pageLink.getSortOrder()); - } final Lock readWriteLock = readWriteLocks.computeIfAbsent(edgeId, id -> new ReentrantLock()); readWriteLock.lock(); try { @@ -116,7 +111,7 @@ public class JpaBaseEdgeEventDao extends JpaAbstractSearchTextDao Date: Wed, 22 Dec 2021 17:38:12 +0200 Subject: [PATCH 3/7] Edge events must be sorted by ID as last sort --- .../thingsboard/server/dao/sql/edge/JpaBaseEdgeEventDao.java | 2 +- .../server/dao/service/BaseEdgeEventServiceTest.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/dao/src/main/java/org/thingsboard/server/dao/sql/edge/JpaBaseEdgeEventDao.java b/dao/src/main/java/org/thingsboard/server/dao/sql/edge/JpaBaseEdgeEventDao.java index 8645efccf7..e5883c20ab 100644 --- a/dao/src/main/java/org/thingsboard/server/dao/sql/edge/JpaBaseEdgeEventDao.java +++ b/dao/src/main/java/org/thingsboard/server/dao/sql/edge/JpaBaseEdgeEventDao.java @@ -100,10 +100,10 @@ public class JpaBaseEdgeEventDao extends JpaAbstractSearchTextDao findEdgeEvents(UUID tenantId, EdgeId edgeId, TimePageLink pageLink, boolean withTsUpdate) { List sortOrders = new ArrayList<>(); - sortOrders.add(new SortOrder("id", SortOrder.Direction.ASC)); if (pageLink.getSortOrder() != null) { sortOrders.add(pageLink.getSortOrder()); } + sortOrders.add(new SortOrder(DaoUtil.DEFAULT_SORT_PROPERTY, SortOrder.Direction.ASC)); final Lock readWriteLock = readWriteLocks.computeIfAbsent(edgeId, id -> new ReentrantLock()); readWriteLock.lock(); try { diff --git a/dao/src/test/java/org/thingsboard/server/dao/service/BaseEdgeEventServiceTest.java b/dao/src/test/java/org/thingsboard/server/dao/service/BaseEdgeEventServiceTest.java index 7c86e38eec..51a4975dcd 100644 --- a/dao/src/test/java/org/thingsboard/server/dao/service/BaseEdgeEventServiceTest.java +++ b/dao/src/test/java/org/thingsboard/server/dao/service/BaseEdgeEventServiceTest.java @@ -106,7 +106,7 @@ public abstract class BaseEdgeEventServiceTest extends AbstractServiceTest { EdgeId edgeId = new EdgeId(Uuids.timeBased()); DeviceId deviceId = new DeviceId(Uuids.timeBased()); TenantId tenantId = new TenantId(Uuids.timeBased()); - TimePageLink pageLink = new TimePageLink(1); + TimePageLink pageLink = new TimePageLink(1, 0, null, new SortOrder("createdTime", SortOrder.Direction.ASC)); EdgeEvent edgeEventWithTsUpdate = generateEdgeEvent(tenantId, edgeId, deviceId, EdgeEventActionType.TIMESERIES_UPDATED); edgeEventService.save(edgeEventWithTsUpdate); From 34fcf746598e0c75404898bc2b181dcb34c11d40 Mon Sep 17 00:00:00 2001 From: Volodymyr Babak Date: Wed, 22 Dec 2021 17:42:59 +0200 Subject: [PATCH 4/7] Organize imports --- .../thingsboard/server/dao/sql/edge/JpaBaseEdgeEventDao.java | 3 --- 1 file changed, 3 deletions(-) diff --git a/dao/src/main/java/org/thingsboard/server/dao/sql/edge/JpaBaseEdgeEventDao.java b/dao/src/main/java/org/thingsboard/server/dao/sql/edge/JpaBaseEdgeEventDao.java index dfb00eafcc..8fe7c281aa 100644 --- a/dao/src/main/java/org/thingsboard/server/dao/sql/edge/JpaBaseEdgeEventDao.java +++ b/dao/src/main/java/org/thingsboard/server/dao/sql/edge/JpaBaseEdgeEventDao.java @@ -25,7 +25,6 @@ import org.thingsboard.server.common.data.edge.EdgeEvent; import org.thingsboard.server.common.data.id.EdgeEventId; import org.thingsboard.server.common.data.id.EdgeId; import org.thingsboard.server.common.data.page.PageData; -import org.thingsboard.server.common.data.page.SortOrder; import org.thingsboard.server.common.data.page.TimePageLink; import org.thingsboard.server.dao.DaoUtil; import org.thingsboard.server.dao.edge.EdgeEventDao; @@ -36,8 +35,6 @@ import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; -import java.util.ArrayList; -import java.util.List; import java.util.Objects; import java.util.Optional; import java.util.UUID; From c3e65c50191af207466cea5527b8aa49b2839293 Mon Sep 17 00:00:00 2001 From: Volodymyr Babak Date: Thu, 23 Dec 2021 14:21:59 +0200 Subject: [PATCH 5/7] Fixed dependency - use data commons instead of boot jpa starter --- common/data/pom.xml | 4 ++-- .../org/thingsboard/server/common/data/page/PageLink.java | 1 - pom.xml | 6 ++++++ 3 files changed, 8 insertions(+), 3 deletions(-) diff --git a/common/data/pom.xml b/common/data/pom.xml index 5a5838d7da..2cdb30457f 100644 --- a/common/data/pom.xml +++ b/common/data/pom.xml @@ -65,8 +65,8 @@ jackson-databind - org.springframework.boot - spring-boot-starter-data-jpa + org.springframework.data + spring-data-commons org.springframework.boot diff --git a/common/data/src/main/java/org/thingsboard/server/common/data/page/PageLink.java b/common/data/src/main/java/org/thingsboard/server/common/data/page/PageLink.java index acf0d2f71e..2dac4f0a7c 100644 --- a/common/data/src/main/java/org/thingsboard/server/common/data/page/PageLink.java +++ b/common/data/src/main/java/org/thingsboard/server/common/data/page/PageLink.java @@ -20,7 +20,6 @@ import lombok.Data; import org.springframework.data.domain.Sort; -import java.util.Collections; import java.util.List; import java.util.Map; import java.util.stream.Collectors; diff --git a/pom.xml b/pom.xml index b7c873898f..4f2713e190 100755 --- a/pom.xml +++ b/pom.xml @@ -40,6 +40,7 @@ 2.3.2 2.3.2 2.3.12.RELEASE + 2.3.9.RELEASE 5.2.16.RELEASE 5.2.11.RELEASE 5.4.7 @@ -1130,6 +1131,11 @@ spring-boot-starter-data-jpa ${spring-boot.version} + + org.springframework.data + spring-data-commons + ${spring-data.version} + org.apache.kafka kafka-clients From 9d0867e272f34ae821a2bcafaf6d5a4767bf79d9 Mon Sep 17 00:00:00 2001 From: Volodymyr Babak Date: Fri, 24 Dec 2021 16:44:03 +0200 Subject: [PATCH 6/7] Fixed queue start ts display on UI - use value instead of last update ts. Fixed ++ for queuestartts --- .../thingsboard/server/service/edge/rpc/EdgeGrpcSession.java | 5 +++-- .../thingsboard/server/dao/sql/edge/EdgeEventRepository.java | 4 ++-- .../home/components/edge/edge-downlink-table-config.ts | 4 +--- 3 files changed, 6 insertions(+), 7 deletions(-) diff --git a/application/src/main/java/org/thingsboard/server/service/edge/rpc/EdgeGrpcSession.java b/application/src/main/java/org/thingsboard/server/service/edge/rpc/EdgeGrpcSession.java index 46b36ca99f..1d546e693d 100644 --- a/application/src/main/java/org/thingsboard/server/service/edge/rpc/EdgeGrpcSession.java +++ b/application/src/main/java/org/thingsboard/server/service/edge/rpc/EdgeGrpcSession.java @@ -501,8 +501,9 @@ public final class EdgeGrpcSession implements Closeable { private ListenableFuture> updateQueueStartTs(Long newStartTs) { log.trace("[{}] updating QueueStartTs [{}][{}]", this.sessionId, edge.getId(), newStartTs); - newStartTs = ++newStartTs; // increments ts by 1 - next edge event search starts from current offset + 1 - List attributes = Collections.singletonList(new BaseAttributeKvEntry(new LongDataEntry(QUEUE_START_TS_ATTR_KEY, newStartTs), System.currentTimeMillis())); + List attributes = Collections.singletonList( + new BaseAttributeKvEntry( + new LongDataEntry(QUEUE_START_TS_ATTR_KEY, newStartTs), System.currentTimeMillis())); return ctx.getAttributesService().save(edge.getTenantId(), edge.getId(), DataConstants.SERVER_SCOPE, attributes); } diff --git a/dao/src/main/java/org/thingsboard/server/dao/sql/edge/EdgeEventRepository.java b/dao/src/main/java/org/thingsboard/server/dao/sql/edge/EdgeEventRepository.java index 48aaffb96e..79517fcc8b 100644 --- a/dao/src/main/java/org/thingsboard/server/dao/sql/edge/EdgeEventRepository.java +++ b/dao/src/main/java/org/thingsboard/server/dao/sql/edge/EdgeEventRepository.java @@ -30,7 +30,7 @@ public interface EdgeEventRepository extends PagingAndSortingRepository= :startTime) " + + "AND (:startTime IS NULL OR e.createdTime > :startTime) " + "AND (:endTime IS NULL OR e.createdTime <= :endTime) " + "AND LOWER(e.edgeEventType) LIKE LOWER(CONCAT('%', :textSearch, '%'))" ) @@ -44,7 +44,7 @@ public interface EdgeEventRepository extends PagingAndSortingRepository= :startTime) " + + "AND (:startTime IS NULL OR e.createdTime > :startTime) " + "AND (:endTime IS NULL OR e.createdTime <= :endTime) " + "AND e.edgeEventAction <> 'TIMESERIES_UPDATED' " + "AND LOWER(e.edgeEventType) LIKE LOWER(CONCAT('%', :textSearch, '%'))" diff --git a/ui-ngx/src/app/modules/home/components/edge/edge-downlink-table-config.ts b/ui-ngx/src/app/modules/home/components/edge/edge-downlink-table-config.ts index 38c3317ff0..360cfacbdd 100644 --- a/ui-ngx/src/app/modules/home/components/edge/edge-downlink-table-config.ts +++ b/ui-ngx/src/app/modules/home/components/edge/edge-downlink-table-config.ts @@ -98,9 +98,7 @@ export class EdgeDownlinkTableConfig extends EntityTableConfig Date: Fri, 24 Dec 2021 17:40:49 +0200 Subject: [PATCH 7/7] Fixed base edge event fetcher page link --- .../service/edge/rpc/fetch/BasePageableEdgeEventFetcher.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/application/src/main/java/org/thingsboard/server/service/edge/rpc/fetch/BasePageableEdgeEventFetcher.java b/application/src/main/java/org/thingsboard/server/service/edge/rpc/fetch/BasePageableEdgeEventFetcher.java index a3dc409cdf..b3b614458f 100644 --- a/application/src/main/java/org/thingsboard/server/service/edge/rpc/fetch/BasePageableEdgeEventFetcher.java +++ b/application/src/main/java/org/thingsboard/server/service/edge/rpc/fetch/BasePageableEdgeEventFetcher.java @@ -31,7 +31,7 @@ public abstract class BasePageableEdgeEventFetcher implements EdgeEventFetche @Override public PageLink getPageLink(int pageSize) { - return new PageLink(pageSize, 0, null, new SortOrder("createdTime", SortOrder.Direction.ASC)); + return new PageLink(pageSize); } @Override