From 2ee3a855d177d141ce0ad432530322b772fc3b11 Mon Sep 17 00:00:00 2001 From: Igor Kulikov Date: Wed, 5 Aug 2020 13:49:43 +0300 Subject: [PATCH] Check for blank keys before fetching latest for entity view --- .../server/controller/EntityViewController.java | 9 +++++++-- .../install/update/DefaultDataUpdateService.java | 10 ++++++++-- 2 files changed, 15 insertions(+), 4 deletions(-) diff --git a/application/src/main/java/org/thingsboard/server/controller/EntityViewController.java b/application/src/main/java/org/thingsboard/server/controller/EntityViewController.java index 0faa70727b..fd58e89905 100644 --- a/application/src/main/java/org/thingsboard/server/controller/EntityViewController.java +++ b/application/src/main/java/org/thingsboard/server/controller/EntityViewController.java @@ -63,6 +63,7 @@ import java.util.List; import java.util.concurrent.ExecutionException; import java.util.stream.Collectors; +import static org.apache.commons.lang.StringUtils.isBlank; import static org.thingsboard.server.controller.CustomerController.CUSTOMER_ID; /** @@ -253,8 +254,12 @@ public class EntityViewController extends BaseController { keysFuture = Futures.immediateFuture(keys); } ListenableFuture> latestFuture = Futures.transformAsync(keysFuture, fetchKeys -> { - List queries = fetchKeys.stream().map(key -> new BaseReadTsKvQuery(key, startTs, endTs, 1, "DESC")).collect(Collectors.toList()); - return tsService.findAll(user.getTenantId(), entityView.getEntityId(), queries); + List queries = fetchKeys.stream().filter(key -> !isBlank(key)).map(key -> new BaseReadTsKvQuery(key, startTs, endTs, 1, "DESC")).collect(Collectors.toList()); + if (!queries.isEmpty()) { + return tsService.findAll(user.getTenantId(), entityView.getEntityId(), queries); + } else { + return Futures.immediateFuture(null); + } }, MoreExecutors.directExecutor()); return Futures.transform(latestFuture, latestValues -> { if (latestValues != null && !latestValues.isEmpty()) { diff --git a/application/src/main/java/org/thingsboard/server/service/install/update/DefaultDataUpdateService.java b/application/src/main/java/org/thingsboard/server/service/install/update/DefaultDataUpdateService.java index fd153f67fd..f0fbfb3448 100644 --- a/application/src/main/java/org/thingsboard/server/service/install/update/DefaultDataUpdateService.java +++ b/application/src/main/java/org/thingsboard/server/service/install/update/DefaultDataUpdateService.java @@ -48,6 +48,8 @@ import java.util.List; import java.util.concurrent.ExecutionException; import java.util.stream.Collectors; +import static org.apache.commons.lang.StringUtils.isBlank; + @Service @Profile("install") @Slf4j @@ -158,8 +160,12 @@ public class DefaultDataUpdateService implements DataUpdateService { keysFuture = Futures.immediateFuture(keys); } ListenableFuture> latestFuture = Futures.transformAsync(keysFuture, fetchKeys -> { - List queries = fetchKeys.stream().map(key -> new BaseReadTsKvQuery(key, startTs, endTs, 1, "DESC")).collect(Collectors.toList()); - return tsService.findAll(TenantId.SYS_TENANT_ID, entityView.getEntityId(), queries); + List queries = fetchKeys.stream().filter(key -> !isBlank(key)).map(key -> new BaseReadTsKvQuery(key, startTs, endTs, 1, "DESC")).collect(Collectors.toList()); + if (!queries.isEmpty()) { + return tsService.findAll(TenantId.SYS_TENANT_ID, entityView.getEntityId(), queries); + } else { + return Futures.immediateFuture(null); + } }, MoreExecutors.directExecutor()); return Futures.transformAsync(latestFuture, latestValues -> { if (latestValues != null && !latestValues.isEmpty()) {