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