[ 
https://issues.apache.org/jira/browse/IMPALA-13722?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Quanlong Huang resolved IMPALA-13722.
-------------------------------------
    Fix Version/s: Impala 4.5.0
       Resolution: Fixed

> Ranger request should have no null values in the resources map
> --------------------------------------------------------------
>
>                 Key: IMPALA-13722
>                 URL: https://issues.apache.org/jira/browse/IMPALA-13722
>             Project: IMPALA
>          Issue Type: Bug
>          Components: Test
>            Reporter: Quanlong Huang
>            Assignee: Quanlong Huang
>            Priority: Critical
>             Fix For: Impala 4.5.0
>
>
> In a downstream build with newer versions of Ranger, we saw tests in 
> AuthorizationStmtTest failed to grant and revoke privileges. The cause is 
> there is an illegal key-value pair of url=null in the resources map:
> {code:java}
> 2025-01-22 17:37:59,430 ERROR org.apache.ranger.rest.ServiceREST: 
> [http-nio-6080-exec-5]: grantAccess(test_impala, 
> GrantRevokeRequest={grantor={admin} grantorGroups={admin } 
> resource={database=*; column=*; table=*; url=null; } users={non_owner } 
> groups={} roles={} accessTypes={create } delegateAdmin={false} 
> enableAudit={true} replaceExistingPermissions={false} isRecursive={false} 
> clientIPAddress={127.0.0.1} clientType={null} requestData={null} 
> sessionId={null} clusterName={test-cluster} zoneName={null} }) failed
> java.lang.NullPointerException: null
>         at 
> org.apache.ranger.rest.ServiceRESTUtil.getAccessResourceObjectMap(ServiceRESTUtil.java:443)
>  ~[classes/:?]
>         at 
> org.apache.ranger.rest.ServiceREST.grantAccess(ServiceREST.java:1272) 
> ~[classes/:?]
>         at 
> org.apache.ranger.rest.ServiceREST$$FastClassBySpringCGLIB$$92dab672.invoke(<generated>)
>  ~[classes/:?]
>         at 
> org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218) 
> ~[spring-core-5.3.39.jar:5.3.39]
>         ...{code}
> The resource map in the above case is resource=\{database=\*; column=\*; 
> table=\*; url=null; \}. It shouldn't have url=null in the map. This is added 
> unintentionally in our FE test code:
> {code:java}
>   private static Map<String, String> updateUri(Map<String, String> resources) 
> {
>     String uri = resources.get(RangerImpalaResourceBuilder.URL);
>     if (uri != null && uri.startsWith("/")) {
>       uri = "hdfs://localhost:20500" + uri;
>     }
>     resources.put(RangerImpalaResourceBuilder.URL, uri);
>     return resources;
>   } {code}
> [https://github.com/apache/impala/blob/8eb57a9921ed6d0ffccb98932d50506fede24fa9/fe/src/test/java/org/apache/impala/authorization/AuthorizationTestBase.java#L231-L235]
> When the resources map doesn't contains a key for "url", we get a null uri 
> and then set it in the resources map. What we want is just updating it when 
> it exists.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to