You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@ranger.apache.org by "kumaab (via GitHub)" <gi...@apache.org> on 2023/06/01 05:39:35 UTC

[GitHub] [ranger] kumaab commented on a diff in pull request #253: RANGER-4230: Add REST APIs to force delete external users & groups

kumaab commented on code in PR #253:
URL: https://github.com/apache/ranger/pull/253#discussion_r1212601478


##########
security-admin/src/main/java/org/apache/ranger/biz/XUserMgr.java:
##########
@@ -2400,6 +2426,31 @@ public synchronized void deleteXUser(Long id, boolean force) {
 		}
 	}
 
+	public void forceDeleteUsers(List<VXUser> users){
+		long startTime = Time.now();
+		for(VXUser user: users){
+			Long userId = user.getId();
+			TransactionTemplate txTemplate = new TransactionTemplate(txManager);
+			txTemplate.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRES_NEW);
+			try {
+				txTemplate.execute(new TransactionCallback<Object>() {
+					@Override
+					public Object doInTransaction(TransactionStatus status) {
+						deleteXUser(userId, true);
+						return null;
+					}
+				});
+			} catch (Throwable ex) {
+				logger.error("forceDeleteUsers(): Failed to delete user id: " + userId + " ", ex);
+				throw new RuntimeException(ex);

Review Comment:
   Sure, I'll revise the PR to continue with deletes despite failures. 
   
   I believe getting the usernames for all users deleted/failed deletes is an overhead since this would result in another db call(with new jpa query), and ignoring the rare occurrence of transaction exceptions(in which we might not get the logs from deleteUser()), info regarding every user is already logged as part of deleteUser() where we print the username of the user getting deleted. For debugging purposes in case of transaction failures, username of the user is still retrievable using the userid in the catch block.
   
    



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: dev-unsubscribe@ranger.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org