diff --git a/dao/src/main/java/org/thingsboard/server/dao/sqlts/psql/JpaPsqlTimeseriesDao.java b/dao/src/main/java/org/thingsboard/server/dao/sqlts/psql/JpaPsqlTimeseriesDao.java index 47848f0af3..ccf2490fdc 100644 --- a/dao/src/main/java/org/thingsboard/server/dao/sqlts/psql/JpaPsqlTimeseriesDao.java +++ b/dao/src/main/java/org/thingsboard/server/dao/sqlts/psql/JpaPsqlTimeseriesDao.java @@ -48,10 +48,7 @@ import java.time.LocalDateTime; import java.time.ZoneOffset; import java.time.ZonedDateTime; import java.time.format.DateTimeFormatter; -import java.util.ArrayList; -import java.util.List; -import java.util.Optional; -import java.util.Set; +import java.util.*; import java.util.concurrent.CompletableFuture; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentMap; @@ -67,7 +64,7 @@ import static org.thingsboard.server.dao.timeseries.SqlTsPartitionDate.EPOCH_STA public class JpaPsqlTimeseriesDao extends AbstractSimpleSqlTimeseriesDao implements TimeseriesDao { private final ConcurrentMap tsKvDictionaryMap = new ConcurrentHashMap<>(); - private final Set partitions = ConcurrentHashMap.newKeySet(); + private final Map partitions = new ConcurrentHashMap<>(); private static final ReentrantLock tsCreationLock = new ReentrantLock(); private static final ReentrantLock partitionCreationLock = new ReentrantLock(); @@ -82,6 +79,7 @@ public class JpaPsqlTimeseriesDao extends AbstractSimpleSqlTimeseriesDao partition = SqlTsPartitionDate.parse(partitioning); if (partition.isPresent()) { tsFormat = partition.get(); + if (tsFormat.equals(SqlTsPartitionDate.INDEFINITE)) { + indefinitePartition = new PsqlPartition(toMills(EPOCH_START), Long.MAX_VALUE, tsFormat.getPattern()); + savePartition(indefinitePartition); + } } else { log.warn("Incorrect configuration of partitioning {}", partitioning); throw new RuntimeException("Failed to parse partitioning property: " + partitioning + "!"); @@ -116,23 +118,22 @@ public class JpaPsqlTimeseriesDao extends AbstractSimpleSqlTimeseriesDao remove(TenantId tenantId, EntityId entityId, DeleteTsKvQuery query) { - return service.submit(() -> { - String strKey = query.getKey(); - Integer keyId = getOrSaveKeyId(strKey); - tsKvRepository.delete( - entityId.getId(), - keyId, - query.getStartTs(), - query.getEndTs()); - return null; - }); + return service.submit(() -> { + String strKey = query.getKey(); + Integer keyId = getOrSaveKeyId(strKey); + tsKvRepository.delete( + entityId.getId(), + keyId, + query.getStartTs(), + query.getEndTs()); + return null; + }); } @Override @@ -286,13 +287,13 @@ public class JpaPsqlTimeseriesDao extends AbstractSimpleSqlTimeseriesDao