Skip to content

Commit dc7cb98

Browse files
EFRS-1341: Removed the user table lock, added thread synchronization instead
1 parent 4d1c2d9 commit dc7cb98

File tree

7 files changed

+15
-54
lines changed

7 files changed

+15
-54
lines changed

java/admin/src/main/java/com/exadel/frs/service/UserService.java

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@
2020
import static com.exadel.frs.commonservice.enums.GlobalRole.OWNER;
2121
import static com.exadel.frs.commonservice.enums.GlobalRole.USER;
2222
import static com.exadel.frs.commonservice.enums.StatisticsType.USER_CREATE;
23-
import static com.exadel.frs.commonservice.enums.TableLockName.USER_LOCK;
2423
import static com.exadel.frs.system.global.Constants.DEMO_GUID;
2524
import static com.exadel.frs.validation.EmailValidator.isInvalid;
2625
import static org.apache.commons.lang3.BooleanUtils.isNotTrue;
@@ -29,9 +28,7 @@
2928
import com.exadel.frs.commonservice.entity.User;
3029
import com.exadel.frs.commonservice.enums.GlobalRole;
3130
import com.exadel.frs.commonservice.enums.Replacer;
32-
import com.exadel.frs.commonservice.enums.TableLockName;
3331
import com.exadel.frs.commonservice.exception.EmptyRequiredFieldException;
34-
import com.exadel.frs.commonservice.repository.TableLockRepository;
3532
import com.exadel.frs.commonservice.repository.UserRepository;
3633
import com.exadel.frs.dto.ui.UserCreateDto;
3734
import com.exadel.frs.dto.ui.UserDeleteDto;
@@ -71,7 +68,6 @@ public class UserService {
7168
private final EmailSender emailSender;
7269
private final Environment env;
7370
private final AuthorizationManager authManager;
74-
private final TableLockRepository lockRepository;
7571

7672
public User getUser(final Long id) {
7773
return userRepository.findById(id)
@@ -200,13 +196,16 @@ public void confirmRegistration(final String token) {
200196
val user = userRepository.findByRegistrationToken(token)
201197
.orElseThrow(RegistrationTokenExpiredException::new);
202198

203-
lockRepository.lockByName(USER_LOCK);
204-
if (!userRepository.isOwnerPresent()) {
205-
user.setGlobalRole(OWNER);
206-
}
199+
synchronized (this) {
200+
if (!userRepository.isOwnerPresent()) {
201+
user.setGlobalRole(OWNER);
202+
}
203+
204+
user.setEnabled(true);
205+
user.setRegistrationToken(null);
207206

208-
user.setEnabled(true);
209-
user.setRegistrationToken(null);
207+
userRepository.flush();
208+
}
210209
}
211210

212211
private void manageOwnedAppsByUserBeingDeleted(final UserDeleteDto userDeleteDto) {

java/admin/src/main/resources/db/changelog/db.changelog-0.2.6.yaml

Lines changed: 0 additions & 14 deletions
This file was deleted.

java/admin/src/main/resources/db/changelog/db.changelog-master.yaml

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -49,5 +49,3 @@ databaseChangeLog:
4949
file: db/changelog/db.changelog-0.2.4.yaml
5050
- include:
5151
file: db/changelog/db.changelog-0.2.5.yaml
52-
- include:
53-
file: db/changelog/db.changelog-0.2.6.yaml

java/admin/src/test/java/com/exadel/frs/UserServiceTest.java

Lines changed: 5 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -28,23 +28,21 @@
2828
import static org.mockito.Mockito.verifyNoMoreInteractions;
2929
import static org.mockito.Mockito.when;
3030
import static org.mockito.MockitoAnnotations.initMocks;
31-
31+
import com.exadel.frs.commonservice.entity.User;
32+
import com.exadel.frs.commonservice.enums.GlobalRole;
33+
import com.exadel.frs.commonservice.enums.Replacer;
3234
import com.exadel.frs.commonservice.exception.EmptyRequiredFieldException;
33-
import com.exadel.frs.commonservice.repository.TableLockRepository;
35+
import com.exadel.frs.commonservice.exception.IllegalReplacerException;
36+
import com.exadel.frs.commonservice.repository.UserRepository;
3437
import com.exadel.frs.dto.ui.UserCreateDto;
3538
import com.exadel.frs.dto.ui.UserDeleteDto;
3639
import com.exadel.frs.dto.ui.UserUpdateDto;
37-
import com.exadel.frs.commonservice.entity.User;
38-
import com.exadel.frs.commonservice.enums.GlobalRole;
39-
import com.exadel.frs.commonservice.enums.Replacer;
4040
import com.exadel.frs.exception.EmailAlreadyRegisteredException;
41-
import com.exadel.frs.commonservice.exception.IllegalReplacerException;
4241
import com.exadel.frs.exception.IncorrectUserPasswordException;
4342
import com.exadel.frs.exception.InvalidEmailException;
4443
import com.exadel.frs.exception.RegistrationTokenExpiredException;
4544
import com.exadel.frs.exception.UserDoesNotExistException;
4645
import com.exadel.frs.helpers.EmailSender;
47-
import com.exadel.frs.commonservice.repository.UserRepository;
4846
import com.exadel.frs.service.AppService;
4947
import com.exadel.frs.service.UserService;
5048
import com.exadel.frs.system.security.AuthorizationManager;
@@ -84,9 +82,6 @@ class UserServiceTest {
8482
@Mock
8583
private AppService appService;
8684

87-
@Mock
88-
private TableLockRepository tableLockRepository;
89-
9085
@InjectMocks
9186
private UserService userService;
9287

java/api/src/test/resources/db/changelog/db.changelog-0.2.6.yaml

Lines changed: 0 additions & 14 deletions
This file was deleted.

java/api/src/test/resources/db/changelog/db.changelog-master.yaml

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -49,5 +49,3 @@ databaseChangeLog:
4949
file: db/changelog/db.changelog-0.2.4.yaml
5050
- include:
5151
file: db/changelog/db.changelog-0.2.5.yaml
52-
- include:
53-
file: db/changelog/db.changelog-0.2.6.yaml

java/common/src/main/java/com/exadel/frs/commonservice/enums/TableLockName.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,5 @@
22

33
public enum TableLockName {
44

5-
MODEL_STATISTIC_LOCK,
6-
USER_LOCK
5+
MODEL_STATISTIC_LOCK
76
}

0 commit comments

Comments
 (0)