Fang-Yu Rao created IMPALA-9148:
-----------------------------------

             Summary: AuthorizationStmtTest.testColumnMaskEnabled seems flaky
                 Key: IMPALA-9148
                 URL: https://issues.apache.org/jira/browse/IMPALA-9148
             Project: IMPALA
          Issue Type: Bug
          Components: Frontend
            Reporter: Fang-Yu Rao
            Assignee: Fang-Yu Rao


Recently we have seen failed {{AuthorizationStmtTest.testColumnMaskEnabled}} 
occasionally with the following error messages (e.g., 
[https://jenkins.impala.io/job/gerrit-verify-dryrun/5194/consoleFull]).
{code:java}
Impala does not support row filtering yet. Row filtering is enabled on table: 
functional.alltypes_view
expected:
Impala does not support column masking yet. Column masking is enabled on 
column: functional.alltypes_view.string_col
{code}
Taking a look at the {{testColumnMaskEnabled()}}, we can see the related SQL 
statement is
{code:java}
select string_col from functional.alltypes_view;
{code}
I found that for this SQL statement, {{authorizeRowFilterAndColumnMask()}} in 
{{RangerAuthorizationCheker.java}} will be called first 
([https://github.com/apache/impala/blob/master/fe/src/main/java/org/apache/impala/authorization/ranger/RangerAuthorizationChecker.java#L183-L200]).
 There will be two privilege requests, one request for column, and the other 
for table. The function {{authorizeRowFilter()}} is the only function that 
could produce the error message above 
([https://github.com/apache/impala/blob/master/fe/src/main/java/org/apache/impala/authorization/ranger/RangerAuthorizationChecker.java#L295-L308]).
 Specifically, this error would be generated if 
{{plugin_.evalRowFilterPolicies(req, null).isRowFilterEnabled()}} returns true 
([https://github.com/apache/impala/blob/master/fe/src/main/java/org/apache/impala/authorization/ranger/RangerAuthorizationChecker.java#L303]).

I have taken a brief look at {{isRowFilterEnabled()}}, and found that it will 
return true only if there is some policy on the Ranger server that specifies 
the policy of row filtering (according to my current understanding). However, 
in {{testColumnMaskEnabled()}} 
([https://github.com/apache/impala/blob/master/fe/src/test/java/org/apache/impala/authorization/AuthorizationStmtTest.java#L2836]),
 we only add a policy for column masking. Therefore, I suspect it may be 
possible that some other tests added to the Ranger server some policy for row 
filtering but did not properly do the cleanup of this row filtering policy 
afterwards.

To address this issue, we should add some logic to clean up the policies stored 
on the Ranger server before running this JUnit test. This JUnit test assumes 
that the Ranger server does not store any policies related to column masking 
and row filtering before the testing.

 

 



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to