This is an automated email from the ASF dual-hosted git repository.

morningman pushed a commit to branch branch-3.0
in repository https://gitbox.apache.org/repos/asf/doris.git


The following commit(s) were added to refs/heads/branch-3.0 by this push:
     new cb2d720dbb1 [fix](ranger) make RangerDorisAccessController as 
singleton to avoid more and more ranger policy refresher (#49352)
cb2d720dbb1 is described below

commit cb2d720dbb10d5e9cef46ef82e2aa618e2d567bc
Author: Yulei-Yang <yulei.yang0...@gmail.com>
AuthorDate: Sun Mar 23 12:06:23 2025 +0800

    [fix](ranger) make RangerDorisAccessController as singleton to avoid more 
and more ranger policy refresher (#49352)
    
    cherry-pick #45645
---
 .../ranger/doris/RangerDorisAccessController.java     | 19 +++++++++++++++++--
 .../mysql/privilege/AccessControllerManager.java      |  2 +-
 2 files changed, 18 insertions(+), 3 deletions(-)

diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/catalog/authorizer/ranger/doris/RangerDorisAccessController.java
 
b/fe/fe-core/src/main/java/org/apache/doris/catalog/authorizer/ranger/doris/RangerDorisAccessController.java
index f9f571c0d0d..509afc63c36 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/catalog/authorizer/ranger/doris/RangerDorisAccessController.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/catalog/authorizer/ranger/doris/RangerDorisAccessController.java
@@ -46,21 +46,36 @@ public class RangerDorisAccessController extends 
RangerAccessController {
     private static final String GLOBAL_PRIV_FIXED_NAME = "*";
 
     private RangerBasePlugin dorisPlugin;
+
+    private static RangerDorisAccessController instance;
+
     // private static ScheduledThreadPoolExecutor logFlushTimer = 
ThreadPoolManager.newDaemonScheduledThreadPool(1,
     //        "ranger-doris-audit-log-flusher-timer", true);
     // private RangerHiveAuditHandler auditHandler;
 
-    public RangerDorisAccessController(String serviceName) {
+    private RangerDorisAccessController(String serviceName) {
         this(serviceName, null);
     }
 
-    public RangerDorisAccessController(String serviceName, 
RangerAuthContextListener rangerAuthContextListener) {
+    private RangerDorisAccessController(String serviceName, 
RangerAuthContextListener rangerAuthContextListener) {
         dorisPlugin = new RangerDorisPlugin(serviceName, 
rangerAuthContextListener);
         // auditHandler = new RangerHiveAuditHandler(dorisPlugin.getConfig());
         // start a timed log flusher
         // logFlushTimer.scheduleAtFixedRate(new 
RangerHiveAuditLogFlusher(auditHandler), 10, 20L, TimeUnit.SECONDS);
     }
 
+    public static RangerDorisAccessController getInstance(String serviceName) {
+        return getInstance(serviceName, null);
+    }
+
+    public static synchronized RangerDorisAccessController getInstance(String 
serviceName,
+            RangerAuthContextListener rangerAuthContextListener) {
+        if (instance == null) {
+            instance = new RangerDorisAccessController(serviceName, 
rangerAuthContextListener);
+        }
+        return instance;
+    }
+
     @VisibleForTesting
     public RangerDorisAccessController(RangerBasePlugin plugin) {
         dorisPlugin = plugin;
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/mysql/privilege/AccessControllerManager.java
 
b/fe/fe-core/src/main/java/org/apache/doris/mysql/privilege/AccessControllerManager.java
index 439a7e5a760..23845982679 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/mysql/privilege/AccessControllerManager.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/mysql/privilege/AccessControllerManager.java
@@ -58,7 +58,7 @@ public class AccessControllerManager {
     public AccessControllerManager(Auth auth) {
         this.auth = auth;
         if (Config.access_controller_type.equalsIgnoreCase("ranger-doris")) {
-            defaultAccessController = new RangerDorisAccessController("doris");
+            defaultAccessController = 
RangerDorisAccessController.getInstance("doris");
         } else {
             defaultAccessController = new InternalAccessController(auth);
         }


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscr...@doris.apache.org
For additional commands, e-mail: commits-h...@doris.apache.org

Reply via email to