You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ranger.apache.org by pr...@apache.org on 2022/08/16 23:47:22 UTC
[ranger] 02/03: RANGER-3854: Persist db updates immediately using Transaction Management in J10056
This is an automated email from the ASF dual-hosted git repository.
pradeep pushed a commit to branch ranger-2.4
in repository https://gitbox.apache.org/repos/asf/ranger.git
commit 062902f24ee9cfe439b19aa0c88236c6e6010b07
Author: Abhishek Kumar <ab...@gmail.com>
AuthorDate: Wed Aug 10 12:56:39 2022 -0700
RANGER-3854: Persist db updates immediately using Transaction Management in J10056
Signed-off-by: pradeep <pr...@apache.org>
---
.../PatchForExternalUserStatusUpdate_J10056.java | 29 +++++++++++++++++++---
1 file changed, 26 insertions(+), 3 deletions(-)
diff --git a/security-admin/src/main/java/org/apache/ranger/patch/PatchForExternalUserStatusUpdate_J10056.java b/security-admin/src/main/java/org/apache/ranger/patch/PatchForExternalUserStatusUpdate_J10056.java
index f1ed0978c..f4a122b38 100644
--- a/security-admin/src/main/java/org/apache/ranger/patch/PatchForExternalUserStatusUpdate_J10056.java
+++ b/security-admin/src/main/java/org/apache/ranger/patch/PatchForExternalUserStatusUpdate_J10056.java
@@ -28,7 +28,13 @@ import org.apache.ranger.util.CLIUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Component;
+import org.springframework.transaction.PlatformTransactionManager;
+import org.springframework.transaction.TransactionDefinition;
+import org.springframework.transaction.TransactionStatus;
+import org.springframework.transaction.support.TransactionCallback;
+import org.springframework.transaction.support.TransactionTemplate;
@Component
public class PatchForExternalUserStatusUpdate_J10056 extends BaseLoader {
@@ -36,7 +42,11 @@ public class PatchForExternalUserStatusUpdate_J10056 extends BaseLoader {
private static final Logger logger = LoggerFactory.getLogger(PatchForExternalUserStatusUpdate_J10056.class);
@Autowired
- private RangerDaoManager rngrDaoMgr;
+ private RangerDaoManager daoManager;
+
+ @Autowired
+ @Qualifier(value = "transactionManager")
+ PlatformTransactionManager txManager;
public static void main(String[] args) {
try {
@@ -70,14 +80,27 @@ public class PatchForExternalUserStatusUpdate_J10056 extends BaseLoader {
}
private void updateExternalUserStatus() {
- XXPortalUserDao dao = this.rngrDaoMgr.getXXPortalUser();
+ XXPortalUserDao dao = this.daoManager.getXXPortalUser();
List<XXPortalUser> xXPortalUsers = dao.findByUserSourceAndStatus(RangerCommonEnums.USER_EXTERNAL,RangerCommonEnums.ACT_STATUS_DISABLED);
if(CollectionUtils.isNotEmpty(xXPortalUsers)) {
for (XXPortalUser xxPortalUser : xXPortalUsers) {
if (xxPortalUser != null) {
xxPortalUser.setStatus(RangerCommonEnums.ACT_STATUS_ACTIVE);
- dao.update(xxPortalUser, true);
+ TransactionTemplate txTemplate = new TransactionTemplate(txManager);
+ txTemplate.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRES_NEW);
+ try {
+ txTemplate.execute(new TransactionCallback<Object>() {
+ @Override
+ public Object doInTransaction(TransactionStatus status) {
+ dao.update(xxPortalUser, true);
+ return null;
+ }
+ });
+ } catch (Throwable ex) {
+ logger.error("updateExternalUserStatus(): Failed to update DB for user: " + xxPortalUser.getLoginId() + " ", ex);
+ throw new RuntimeException(ex);
+ }
}
}
}