Added sort by ID for edge event to properly fetch events by page in case of repeated createdTime
This commit is contained in:
parent
6b9bdba92f
commit
5cbc78fbf4
@ -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<T> 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
|
||||
|
||||
@ -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<EdgeEventEntit
|
||||
|
||||
@Override
|
||||
public PageData<EdgeEvent> findEdgeEvents(UUID tenantId, EdgeId edgeId, TimePageLink pageLink, boolean withTsUpdate) {
|
||||
List<SortOrder> 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<EdgeEventEntit
|
||||
Objects.toString(pageLink.getTextSearch(), ""),
|
||||
pageLink.getStartTime(),
|
||||
pageLink.getEndTime(),
|
||||
DaoUtil.toPageable(pageLink)));
|
||||
DaoUtil.toPageable(pageLink, sortOrders)));
|
||||
} else {
|
||||
return DaoUtil.toPageData(
|
||||
edgeEventRepository
|
||||
@ -122,7 +126,7 @@ public class JpaBaseEdgeEventDao extends JpaAbstractSearchTextDao<EdgeEventEntit
|
||||
Objects.toString(pageLink.getTextSearch(), ""),
|
||||
pageLink.getStartTime(),
|
||||
pageLink.getEndTime(),
|
||||
DaoUtil.toPageable(pageLink)));
|
||||
DaoUtil.toPageable(pageLink, sortOrders)));
|
||||
|
||||
}
|
||||
} finally {
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user