Ramachandran Krishnan created RANGER-5710:
---------------------------------------------

             Summary: Access Audit UI: ClassCastException on multi-value Users 
filter (DB audit path)
                 Key: RANGER-5710
                 URL: https://issues.apache.org/jira/browse/RANGER-5710
             Project: Ranger
          Issue Type: Task
          Components: Ranger
    Affects Versions: 2.8.0, 3.0.0
            Reporter: Ramachandran Krishnan
            Assignee: Ramachandran Krishnan


Access Audit UI search fails when the Users filter contains more than one value 
(e.g. {{admin}} and {{{}hive{}}}). 
Ranger Admin returns an error and {{catalina.out}} shows:
 
{code:java}
 java.lang.ClassCastException: java.util.ArrayList cannot be cast to 
java.lang.String   at 
org.apache.ranger.common.SearchUtil.buildWhereClause(SearchUtil.java:513)   at 
org.apache.ranger.service.XAccessAuditService ... {code}


h3. Root cause

{{AssetREST.getAccessLogs()}} has used {{extractStringList()}} for the Users 
filter since RANGER-2394 (2019). Repeated query params 
({{{}requestUser=admin&requestUser=hive{}}}) are stored in 
{{SearchCriteria.paramList}} as an {{{}ArrayList{}}}.

On the Solr audit path, {{AccessAuditsService}} already declares 
{{requestUser}} as {{{}STR_LIST{}}}, so multi-value filters work.

On the DB audit path, {{XAccessAuditService}} still declared {{requestUser}} as 
{{{}DATA_TYPE.STRING{}}}. {{SearchUtil.buildWhereClause()}} casts the param to 
{{{}String{}}}, which fails when the value is a list.



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

Reply via email to