From 71d26ba18b83edd9b17a5f5b9cf0a8a9df78886d Mon Sep 17 00:00:00 2001 From: YevhenBondarenko Date: Wed, 9 Nov 2022 01:18:01 +0100 Subject: [PATCH] asset profile upgrade improvements --- .../install/SqlDatabaseUpgradeService.java | 36 +++++++++++++------ .../dao/sql/tenant/TenantRepository.java | 4 +++ 2 files changed, 30 insertions(+), 10 deletions(-) diff --git a/application/src/main/java/org/thingsboard/server/service/install/SqlDatabaseUpgradeService.java b/application/src/main/java/org/thingsboard/server/service/install/SqlDatabaseUpgradeService.java index 777284521e..bcd3686183 100644 --- a/application/src/main/java/org/thingsboard/server/service/install/SqlDatabaseUpgradeService.java +++ b/application/src/main/java/org/thingsboard/server/service/install/SqlDatabaseUpgradeService.java @@ -41,6 +41,7 @@ import org.thingsboard.server.dao.device.DeviceProfileService; import org.thingsboard.server.dao.device.DeviceService; import org.thingsboard.server.dao.model.sql.TbPair; import org.thingsboard.server.dao.queue.QueueService; +import org.thingsboard.server.dao.sql.tenant.TenantRepository; import org.thingsboard.server.dao.tenant.TenantService; import org.thingsboard.server.dao.usagerecord.ApiUsageStateService; import org.thingsboard.server.queue.settings.TbRuleEngineQueueConfiguration; @@ -111,6 +112,9 @@ public class SqlDatabaseUpgradeService implements DatabaseEntitiesUpgradeService @Autowired private TenantService tenantService; + @Autowired + private TenantRepository tenantRepository; + @Autowired private DeviceService deviceService; @@ -628,29 +632,41 @@ public class SqlDatabaseUpgradeService implements DatabaseEntitiesUpgradeService PageLink pageLink = new PageLink(1000); PageData> pageData; List> futures = new ArrayList<>(); - Set tenants = new HashSet<>(); + Set tenants = new HashSet<>(); do { pageData = assetDao.getAllAssetTypes(pageLink); for (TbPair pair : pageData.getData()) { TenantId tenantId = new TenantId(pair.getFirst()); String assetType = pair.getSecond(); - if (tenants.add(tenantId)) { - try { - futures.add(dbUpgradeExecutor.submit(() -> - assetProfileService.createDefaultAssetProfile(tenantId))); - } catch (Exception e) {} + if (tenants.add(pair.getFirst())) { + futures.add(dbUpgradeExecutor.submit(() -> { + try { + assetProfileService.createDefaultAssetProfile(tenantId); + } catch (Exception e) {} + })); } if (!"default".equals(assetType)) { - try { - futures.add(dbUpgradeExecutor.submit(() -> - assetProfileService.findOrCreateAssetProfile(tenantId, assetType))); - } catch (Exception e) {} + futures.add(dbUpgradeExecutor.submit(() -> { + try { + assetProfileService.findOrCreateAssetProfile(tenantId, assetType); + } catch (Exception e) {} + })); } } pageLink = pageLink.nextPageLink(); } while (pageData.hasNext()); + List tenantsWithoutProfiles = tenantRepository.getIdsNotIn(tenants); + + tenantsWithoutProfiles.forEach(uuid -> + futures.add(dbUpgradeExecutor.submit(() -> { + try { + assetProfileService.createDefaultAssetProfile(TenantId.fromUUID(uuid)); + } catch (Exception e) {} + })) + ); + Futures.allAsList(futures).get(); log.info("Updating asset profiles..."); diff --git a/dao/src/main/java/org/thingsboard/server/dao/sql/tenant/TenantRepository.java b/dao/src/main/java/org/thingsboard/server/dao/sql/tenant/TenantRepository.java index 7042dcbb16..fb563895d5 100644 --- a/dao/src/main/java/org/thingsboard/server/dao/sql/tenant/TenantRepository.java +++ b/dao/src/main/java/org/thingsboard/server/dao/sql/tenant/TenantRepository.java @@ -24,6 +24,7 @@ import org.thingsboard.server.dao.model.sql.TenantEntity; import org.thingsboard.server.dao.model.sql.TenantInfoEntity; import java.util.List; +import java.util.Set; import java.util.UUID; /** @@ -54,4 +55,7 @@ public interface TenantRepository extends JpaRepository { @Query("SELECT t.id FROM TenantEntity t where t.tenantProfileId = :tenantProfileId") List findTenantIdsByTenantProfileId(@Param("tenantProfileId") UUID tenantProfileId); + @Query("SELECT t.id FROM TenantEntity t WHERE t.id NOT IN :ids") + List getIdsNotIn(@Param("ids")Set ids); + }