diff --git a/application/src/main/java/org/thingsboard/server/service/cloud/rpc/processor/WidgetTypeCloudProcessor.java b/application/src/main/java/org/thingsboard/server/service/cloud/rpc/processor/WidgetTypeCloudProcessor.java index 3e6fd152b7..3b041cde00 100644 --- a/application/src/main/java/org/thingsboard/server/service/cloud/rpc/processor/WidgetTypeCloudProcessor.java +++ b/application/src/main/java/org/thingsboard/server/service/cloud/rpc/processor/WidgetTypeCloudProcessor.java @@ -72,7 +72,8 @@ public ListenableFuture processWidgetTypeMsgFromCloud(TenantId tenantId, W widgetTypeService.saveWidgetType(widgetTypeDetails, false); } catch (Exception e) { if (e instanceof DataValidationException && e.getMessage().contains("fqn already exists")) { - deleteSystemWidgetBundlesAndTypes(); + deleteWidgetBundlesAndTypes(TenantId.SYS_TENANT_ID); + deleteWidgetBundlesAndTypes(tenantId); widgetTypeService.saveWidgetType(widgetTypeDetails, false); } else { throw new RuntimeException(e); @@ -97,20 +98,20 @@ public ListenableFuture processWidgetTypeMsgFromCloud(TenantId tenantId, W return Futures.immediateFuture(null); } - private void deleteSystemWidgetBundlesAndTypes() { - List systemWidgetsBundles = widgetsBundleService.findSystemWidgetsBundles(TenantId.SYS_TENANT_ID); + private void deleteWidgetBundlesAndTypes(TenantId tenantId) { + List systemWidgetsBundles = widgetsBundleService.findSystemWidgetsBundles(tenantId); for (WidgetsBundle systemWidgetsBundle : systemWidgetsBundles) { if (systemWidgetsBundle != null) { PageData widgetTypes; var pageLink = new PageLink(1024); do { - widgetTypes = widgetTypeService.findWidgetTypesInfosByWidgetsBundleId(TenantId.SYS_TENANT_ID, systemWidgetsBundle.getId(), false, DeprecatedFilter.ALL, null, pageLink); + widgetTypes = widgetTypeService.findWidgetTypesInfosByWidgetsBundleId(tenantId, systemWidgetsBundle.getId(), false, DeprecatedFilter.ALL, null, pageLink); for (var widgetType : widgetTypes.getData()) { - widgetTypeService.deleteWidgetType(TenantId.SYS_TENANT_ID, widgetType.getId()); + widgetTypeService.deleteWidgetType(tenantId, widgetType.getId()); } pageLink.nextPageLink(); } while (widgetTypes.hasNext()); - widgetsBundleService.deleteWidgetsBundle(TenantId.SYS_TENANT_ID, systemWidgetsBundle.getId()); + widgetsBundleService.deleteWidgetsBundle(tenantId, systemWidgetsBundle.getId()); } } } 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 e202aff9d2..18a4af00e6 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 @@ -266,28 +266,35 @@ public void updateData(String fromVersion) throws Exception { // reset full sync required - to upload latest widgets from cloud tenantsFullSyncRequiredUpdater.updateEntities(null); - deleteSystemWidgetBundlesAndTypes(); - + deleteAllWidgetBundlesAndTypes(); break; default: throw new RuntimeException("Unable to update data, unsupported fromVersion: " + fromVersion); } } - private void deleteSystemWidgetBundlesAndTypes() { - List systemWidgetsBundles = widgetsBundleService.findSystemWidgetsBundles(TenantId.SYS_TENANT_ID); + private void deleteAllWidgetBundlesAndTypes() { + PageData tenants = tenantService.findTenants(new PageLink(Integer.MAX_VALUE)); + for (Tenant tenant : tenants.getData()) { + deleteWidgetBundlesAndTypes(tenant.getId()); + } + deleteWidgetBundlesAndTypes(TenantId.SYS_TENANT_ID); + } + + private void deleteWidgetBundlesAndTypes(TenantId tenantId) { + List systemWidgetsBundles = widgetsBundleService.findSystemWidgetsBundles(tenantId); for (WidgetsBundle systemWidgetsBundle : systemWidgetsBundles) { if (systemWidgetsBundle != null) { PageData widgetTypes; var pageLink = new PageLink(1024); do { - widgetTypes = widgetTypeService.findWidgetTypesInfosByWidgetsBundleId(TenantId.SYS_TENANT_ID, systemWidgetsBundle.getId(), false, DeprecatedFilter.ALL, null, pageLink); + widgetTypes = widgetTypeService.findWidgetTypesInfosByWidgetsBundleId(tenantId, systemWidgetsBundle.getId(), false, DeprecatedFilter.ALL, null, pageLink); for (var widgetType : widgetTypes.getData()) { - widgetTypeService.deleteWidgetType(TenantId.SYS_TENANT_ID, widgetType.getId()); + widgetTypeService.deleteWidgetType(tenantId, widgetType.getId()); } pageLink.nextPageLink(); } while (widgetTypes.hasNext()); - widgetsBundleService.deleteWidgetsBundle(TenantId.SYS_TENANT_ID, systemWidgetsBundle.getId()); + widgetsBundleService.deleteWidgetsBundle(tenantId, systemWidgetsBundle.getId()); } } }