From a6aba737d46bd0791661111623cd811c3bd72650 Mon Sep 17 00:00:00 2001 From: Igor Kulikov Date: Thu, 4 Aug 2022 17:48:28 +0300 Subject: [PATCH] DeviceStateService: Add protection to skip devices with non existent tenant on added partitions. --- .../server/service/state/DefaultDeviceStateService.java | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/application/src/main/java/org/thingsboard/server/service/state/DefaultDeviceStateService.java b/application/src/main/java/org/thingsboard/server/service/state/DefaultDeviceStateService.java index 4b896f1494..54bc8517f1 100644 --- a/application/src/main/java/org/thingsboard/server/service/state/DefaultDeviceStateService.java +++ b/application/src/main/java/org/thingsboard/server/service/state/DefaultDeviceStateService.java @@ -349,7 +349,14 @@ public class DefaultDeviceStateService extends AbstractPartitionBasedService> tpiDeviceMap = new HashMap<>(); for (DeviceIdInfo idInfo : deviceIdInfos) { - TopicPartitionInfo tpi = partitionService.resolve(ServiceType.TB_CORE, idInfo.getTenantId(), idInfo.getDeviceId()); + TopicPartitionInfo tpi; + try { + tpi = partitionService.resolve(ServiceType.TB_CORE, idInfo.getTenantId(), idInfo.getDeviceId()); + } catch (Exception e) { + log.warn("Failed to resolve partition for device with id [{}], tenant id [{}], customer id [{}]. Reason: {}", + idInfo.getDeviceId(), idInfo.getTenantId(), idInfo.getCustomerId(), e.getMessage()); + continue; + } if (addedPartitions.contains(tpi) && !deviceStates.containsKey(idInfo.getDeviceId())) { tpiDeviceMap.computeIfAbsent(tpi, tmp -> new ArrayList<>()).add(idInfo); }