diff --git a/application/src/main/java/org/thingsboard/server/service/iot_hub/DefaultIotHubService.java b/application/src/main/java/org/thingsboard/server/service/iot_hub/DefaultIotHubService.java index 40c7a824a5..2fb80edc49 100644 --- a/application/src/main/java/org/thingsboard/server/service/iot_hub/DefaultIotHubService.java +++ b/application/src/main/java/org/thingsboard/server/service/iot_hub/DefaultIotHubService.java @@ -40,6 +40,7 @@ import org.thingsboard.server.common.data.iot_hub.IotHubInstalledItemDescriptor; import org.thingsboard.server.common.data.iot_hub.RuleChainInstalledItemDescriptor; import org.thingsboard.server.common.data.iot_hub.SolutionTemplateInstalledItemDescriptor; import org.thingsboard.server.common.data.iot_hub.WidgetInstalledItemDescriptor; +import org.thingsboard.server.exception.EntitiesLimitExceededException; import org.thingsboard.server.service.solutions.SolutionService; import org.thingsboard.server.service.solutions.data.solution.SolutionInstallResponse; import org.thingsboard.server.common.data.rule.RuleChain; @@ -135,6 +136,9 @@ public class DefaultIotHubService implements IotHubService { return InstallItemVersionResult.success(descriptor); } catch (Exception e) { log.error("[{}] Failed to install IoT Hub item version: {}", tenantId, versionId, e); + if (e instanceof EntitiesLimitExceededException el) { + throw el; + } return InstallItemVersionResult.error(e.getMessage()); } } diff --git a/application/src/main/java/org/thingsboard/server/service/solutions/DefaultSolutionService.java b/application/src/main/java/org/thingsboard/server/service/solutions/DefaultSolutionService.java index b68fe5515c..68a375752e 100644 --- a/application/src/main/java/org/thingsboard/server/service/solutions/DefaultSolutionService.java +++ b/application/src/main/java/org/thingsboard/server/service/solutions/DefaultSolutionService.java @@ -93,6 +93,7 @@ import org.thingsboard.server.dao.edge.EdgeService; import org.thingsboard.server.dao.timeseries.TimeseriesService; import org.thingsboard.server.dao.user.UserService; import org.thingsboard.server.dao.rule.RuleChainService; +import org.thingsboard.server.exception.EntitiesLimitExceededException; import org.thingsboard.server.queue.discovery.PartitionService; import org.thingsboard.server.queue.discovery.TbServiceInfoProvider; import org.thingsboard.server.queue.provider.TbQueueProducerProvider; @@ -409,6 +410,9 @@ public class DefaultSolutionService implements SolutionService { } catch (Throwable e) { log.error("[{}][{}] Failed to install solution template", tenantId, solutionId, e); rollback(tenantId, solutionId, ctx, e); + if (e instanceof EntitiesLimitExceededException el) { + throw el; + } return new SolutionInstallResponse( new TenantSolutionTemplateInstructions(ctx.getSolutionInstructions()), false, diff --git a/ui-ngx/src/app/modules/home/components/iot-hub/device-install-dialog/device-install-dialog.component.ts b/ui-ngx/src/app/modules/home/components/iot-hub/device-install-dialog/device-install-dialog.component.ts index b50ad22f5c..3356683244 100644 --- a/ui-ngx/src/app/modules/home/components/iot-hub/device-install-dialog/device-install-dialog.component.ts +++ b/ui-ngx/src/app/modules/home/components/iot-hub/device-install-dialog/device-install-dialog.component.ts @@ -748,12 +748,12 @@ export class TbDeviceInstallDialogComponent extends DialogComponent