kirby zhou created RANGER-3645:
----------------------------------

             Summary: Should not create ServiceDef with invalid implClass
                 Key: RANGER-3645
                 URL: https://issues.apache.org/jira/browse/RANGER-3645
             Project: Ranger
          Issue Type: Improvement
          Components: admin
    Affects Versions: 3.0.0, 2.3.0
            Reporter: kirby zhou


ServiceDBStore::createServiceDef does not check whether the implClass of the 
service is valid now. People can create an invalid ServiceDef, then encounter 
ClassNotFound error when click TestConnection.

I suggest to check implClass at ServiceDBStore::createServiceDef to make bad 
things happen early.

Codelet like:

 
{code:java}

--- a/security-admin/src/main/java/org/apache/ranger/biz/ServiceDBStore.java
+++ b/security-admin/src/main/java/org/apache/ranger/biz/ServiceDBStore.java
@@ -436,6 +436,9 @@ public RangerServiceDef createServiceDef(RangerServiceDef 
serviceDef)
                                        MessageEnums.ERROR_DUPLICATE_OBJECT);
                }
 
+               // try to load implClass, it will throw an Exception when 
failure
+               this.serviceMgr.getClassForServiceType(serviceDef);
+
                List<RangerServiceConfigDef> configs = serviceDef.getConfigs();
                List<RangerResourceDef> resources = serviceDef.getResources();
 
--- a/security-admin/src/main/java/org/apache/ranger/biz/ServiceMgr.java
+++ b/security-admin/src/main/java/org/apache/ranger/biz/ServiceMgr.java
@@ -348,6 +348,6 @@ public Class<RangerBaseService> getClassForServiceType(...)
 
        @SuppressWarnings("unchecked")
-       private Class<RangerBaseService> 
getClassForServiceType(RangerServiceDef serviceDef) throws Exception {
+       Class<RangerBaseService> getClassForServiceType(RangerServiceDef 
serviceDef) throws Exception {
                if(LOG.isDebugEnabled()) {
                        LOG.debug("==> ServiceMgr.getClassForServiceType(" + 
serviceDef + ")");
 {code}
 

 

 



--
This message was sent by Atlassian Jira
(v8.20.1#820001)

Reply via email to