|
|
@ -21,6 +21,7 @@ import com.google.common.util.concurrent.MoreExecutors; |
|
|
import com.google.common.util.concurrent.SettableFuture; |
|
|
import com.google.common.util.concurrent.SettableFuture; |
|
|
import lombok.extern.slf4j.Slf4j; |
|
|
import lombok.extern.slf4j.Slf4j; |
|
|
import org.springframework.beans.factory.annotation.Autowired; |
|
|
import org.springframework.beans.factory.annotation.Autowired; |
|
|
|
|
|
import org.springframework.beans.factory.annotation.Value; |
|
|
import org.springframework.data.domain.PageRequest; |
|
|
import org.springframework.data.domain.PageRequest; |
|
|
import org.springframework.data.domain.Sort; |
|
|
import org.springframework.data.domain.Sort; |
|
|
import org.thingsboard.server.common.data.id.EntityId; |
|
|
import org.thingsboard.server.common.data.id.EntityId; |
|
|
@ -31,6 +32,7 @@ import org.thingsboard.server.common.data.kv.ReadTsKvQuery; |
|
|
import org.thingsboard.server.common.data.kv.TsKvEntry; |
|
|
import org.thingsboard.server.common.data.kv.TsKvEntry; |
|
|
import org.thingsboard.server.common.stats.StatsFactory; |
|
|
import org.thingsboard.server.common.stats.StatsFactory; |
|
|
import org.thingsboard.server.dao.DaoUtil; |
|
|
import org.thingsboard.server.dao.DaoUtil; |
|
|
|
|
|
import org.thingsboard.server.dao.model.sql.AbstractTsKvEntity; |
|
|
import org.thingsboard.server.dao.model.sqlts.ts.TsKvEntity; |
|
|
import org.thingsboard.server.dao.model.sqlts.ts.TsKvEntity; |
|
|
import org.thingsboard.server.dao.sql.TbSqlBlockingQueueParams; |
|
|
import org.thingsboard.server.dao.sql.TbSqlBlockingQueueParams; |
|
|
import org.thingsboard.server.dao.sql.TbSqlBlockingQueueWrapper; |
|
|
import org.thingsboard.server.dao.sql.TbSqlBlockingQueueWrapper; |
|
|
@ -40,9 +42,7 @@ import org.thingsboard.server.dao.timeseries.TimeseriesDao; |
|
|
|
|
|
|
|
|
import javax.annotation.PostConstruct; |
|
|
import javax.annotation.PostConstruct; |
|
|
import javax.annotation.PreDestroy; |
|
|
import javax.annotation.PreDestroy; |
|
|
import java.util.ArrayList; |
|
|
import java.util.*; |
|
|
import java.util.List; |
|
|
|
|
|
import java.util.Optional; |
|
|
|
|
|
import java.util.concurrent.CompletableFuture; |
|
|
import java.util.concurrent.CompletableFuture; |
|
|
import java.util.function.Function; |
|
|
import java.util.function.Function; |
|
|
import java.util.stream.Collectors; |
|
|
import java.util.stream.Collectors; |
|
|
@ -68,11 +68,16 @@ public abstract class AbstractChunkedAggregationTimeseriesDao extends AbstractSq |
|
|
.maxDelay(tsMaxDelay) |
|
|
.maxDelay(tsMaxDelay) |
|
|
.statsPrintIntervalMs(tsStatsPrintIntervalMs) |
|
|
.statsPrintIntervalMs(tsStatsPrintIntervalMs) |
|
|
.statsNamePrefix("ts") |
|
|
.statsNamePrefix("ts") |
|
|
|
|
|
.batchSortEnabled(batchSortEnabled) |
|
|
.build(); |
|
|
.build(); |
|
|
|
|
|
|
|
|
Function<TsKvEntity, Integer> hashcodeFunction = entity -> entity.getEntityId().hashCode(); |
|
|
Function<TsKvEntity, Integer> hashcodeFunction = entity -> entity.getEntityId().hashCode(); |
|
|
tsQueue = new TbSqlBlockingQueueWrapper<>(tsParams, hashcodeFunction, tsBatchThreads, statsFactory); |
|
|
tsQueue = new TbSqlBlockingQueueWrapper<>(tsParams, hashcodeFunction, tsBatchThreads, statsFactory); |
|
|
tsQueue.init(logExecutor, v -> insertRepository.saveOrUpdate(v)); |
|
|
tsQueue.init(logExecutor, v -> insertRepository.saveOrUpdate(v), |
|
|
|
|
|
Comparator.comparing((Function<TsKvEntity, UUID>) AbstractTsKvEntity::getEntityId) |
|
|
|
|
|
.thenComparing(AbstractTsKvEntity::getKey) |
|
|
|
|
|
.thenComparing(AbstractTsKvEntity::getTs) |
|
|
|
|
|
); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
@PreDestroy |
|
|
@PreDestroy |
|
|
|