diff --git a/dao/src/main/java/org/thingsboard/server/dao/device/DeviceServiceImpl.java b/dao/src/main/java/org/thingsboard/server/dao/device/DeviceServiceImpl.java index 8474f4f326..5af2198911 100644 --- a/dao/src/main/java/org/thingsboard/server/dao/device/DeviceServiceImpl.java +++ b/dao/src/main/java/org/thingsboard/server/dao/device/DeviceServiceImpl.java @@ -189,13 +189,17 @@ public class DeviceServiceImpl extends CachedVersionedEntityService doSaveWithCredentials(device, deviceCredentials, nameConflictStrategy)); + } + + private Device doSaveWithCredentials(Device device, DeviceCredentials deviceCredentials, NameConflictStrategy nameConflictStrategy) { + Device savedDevice = doSaveDeviceWithoutCredentials(device, true, nameConflictStrategy); deviceCredentials.setDeviceId(savedDevice.getId()); if (device.getId() == null) { deviceCredentialsService.createDeviceCredentials(savedDevice.getTenantId(), deviceCredentials); @@ -216,7 +220,11 @@ public class DeviceServiceImpl extends CachedVersionedEntityService saveWithoutCredentials(device, accessToken, doValidate, nameConflictStrategy)); + } + + private Device saveWithoutCredentials(Device device, String accessToken, boolean doValidate, NameConflictStrategy nameConflictStrategy) { + Device savedDevice = doSaveDeviceWithoutCredentials(device, doValidate, nameConflictStrategy); if (device.getId() == null) { DeviceCredentials deviceCredentials = new DeviceCredentials(); deviceCredentials.setDeviceId(new DeviceId(savedDevice.getUuidId())); @@ -227,10 +235,6 @@ public class DeviceServiceImpl extends CachedVersionedEntityService doSaveDeviceWithoutCredentials(device, doValidate, nameConflictStrategy)); - } - private Device doSaveDeviceWithoutCredentials(Device device, boolean doValidate, NameConflictStrategy nameConflictStrategy) { log.trace("Executing saveDevice [{}]", device); Device oldDevice = (device.getId() != null) ? deviceDao.findById(device.getTenantId(), device.getId().getId()) : null; diff --git a/dao/src/test/java/org/thingsboard/server/dao/service/DeviceServiceTest.java b/dao/src/test/java/org/thingsboard/server/dao/service/DeviceServiceTest.java index 1ad1ec082a..f7b79166ef 100644 --- a/dao/src/test/java/org/thingsboard/server/dao/service/DeviceServiceTest.java +++ b/dao/src/test/java/org/thingsboard/server/dao/service/DeviceServiceTest.java @@ -162,13 +162,13 @@ public class DeviceServiceTest extends AbstractServiceTest { defaultTenantProfile.getProfileData().setConfiguration(DefaultTenantProfileConfiguration.builder().maxDevices(5l).build()); tenantProfileService.saveTenantProfile(tenantId, defaultTenantProfile); - for (int i = 0; i < 20; i++) { + for (int i = 0; i < 50; i++) { executor.submit(() -> { Device device = new Device(); device.setTenantId(tenantId); device.setName(StringUtils.randomAlphabetic(10)); device.setType("default"); - deviceService.saveDevice(device, true); + deviceService.saveDevice(device); }); }