This is an automated email from the ASF dual-hosted git repository.
morningman pushed a commit to branch branch-4.0
in repository https://gitbox.apache.org/repos/asf/doris.git
The following commit(s) were added to refs/heads/branch-4.0 by this push:
new f8368f985e7 branch-4.0: [fix](fe) Reuse Ranger Doris access controller
#65570 (#65613)
f8368f985e7 is described below
commit f8368f985e76bd31f0f5cdc4c74cf5f4bec277d5
Author: github-actions[bot]
<41898282+github-actions[bot]@users.noreply.github.com>
AuthorDate: Wed Jul 15 13:58:55 2026 +0800
branch-4.0: [fix](fe) Reuse Ranger Doris access controller #65570 (#65613)
Cherry-picked from #65570
Co-authored-by: Mingyu Chen (Rayner) <[email protected]>
---
.../RangerDorisAccessControllerFactory.java | 7 +++++-
.../RangerDorisAccessControllerFactoryTest.java} | 27 ++++++++++++++--------
2 files changed, 24 insertions(+), 10 deletions(-)
diff --git
a/fe/fe-core/src/main/java/org/apache/doris/mysql/privilege/RangerDorisAccessControllerFactory.java
b/fe/fe-core/src/main/java/org/apache/doris/mysql/privilege/RangerDorisAccessControllerFactory.java
index 28093ad7886..7e237699115 100644
---
a/fe/fe-core/src/main/java/org/apache/doris/mysql/privilege/RangerDorisAccessControllerFactory.java
+++
b/fe/fe-core/src/main/java/org/apache/doris/mysql/privilege/RangerDorisAccessControllerFactory.java
@@ -22,6 +22,11 @@ import
org.apache.doris.catalog.authorizer.ranger.doris.RangerDorisAccessControl
import java.util.Map;
public class RangerDorisAccessControllerFactory implements
AccessControllerFactory {
+ private static class SingletonHolder {
+ // Every controller starts a Ranger policy refresher, so all Env
instances must share one controller.
+ private static final RangerDorisAccessController INSTANCE = new
RangerDorisAccessController("doris");
+ }
+
@Override
public String factoryIdentifier() {
return "ranger-doris";
@@ -29,6 +34,6 @@ public class RangerDorisAccessControllerFactory implements
AccessControllerFacto
@Override
public RangerDorisAccessController createAccessController(Map<String,
String> prop) {
- return new RangerDorisAccessController("doris");
+ return SingletonHolder.INSTANCE;
}
}
diff --git
a/fe/fe-core/src/main/java/org/apache/doris/mysql/privilege/RangerDorisAccessControllerFactory.java
b/fe/fe-core/src/test/java/org/apache/doris/mysql/privilege/RangerDorisAccessControllerFactoryTest.java
similarity index 51%
copy from
fe/fe-core/src/main/java/org/apache/doris/mysql/privilege/RangerDorisAccessControllerFactory.java
copy to
fe/fe-core/src/test/java/org/apache/doris/mysql/privilege/RangerDorisAccessControllerFactoryTest.java
index 28093ad7886..7029f8e4389 100644
---
a/fe/fe-core/src/main/java/org/apache/doris/mysql/privilege/RangerDorisAccessControllerFactory.java
+++
b/fe/fe-core/src/test/java/org/apache/doris/mysql/privilege/RangerDorisAccessControllerFactoryTest.java
@@ -19,16 +19,25 @@ package org.apache.doris.mysql.privilege;
import
org.apache.doris.catalog.authorizer.ranger.doris.RangerDorisAccessController;
-import java.util.Map;
+import org.junit.Assert;
+import org.junit.Test;
+import org.mockito.MockedConstruction;
+import org.mockito.Mockito;
-public class RangerDorisAccessControllerFactory implements
AccessControllerFactory {
- @Override
- public String factoryIdentifier() {
- return "ranger-doris";
- }
+import java.util.Collections;
+
+public class RangerDorisAccessControllerFactoryTest {
+ @Test
+ public void testCreateAccessControllerReturnsSingleton() {
+ try (MockedConstruction<RangerDorisAccessController>
mockedConstruction =
+ Mockito.mockConstruction(RangerDorisAccessController.class)) {
+ RangerDorisAccessController first = new
RangerDorisAccessControllerFactory()
+ .createAccessController(Collections.emptyMap());
+ RangerDorisAccessController second = new
RangerDorisAccessControllerFactory()
+ .createAccessController(Collections.emptyMap());
- @Override
- public RangerDorisAccessController createAccessController(Map<String,
String> prop) {
- return new RangerDorisAccessController("doris");
+ Assert.assertEquals(1, mockedConstruction.constructed().size());
+ Assert.assertSame(first, second);
+ }
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]