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

Andrew Kyle Purtell resolved HBASE-8644.
----------------------------------------
    Resolution: Incomplete

> "hbck -fixReferenceFiles" checks for write permissions in / even if 
> sidelineDir is specified
> --------------------------------------------------------------------------------------------
>
>                 Key: HBASE-8644
>                 URL: https://issues.apache.org/jira/browse/HBASE-8644
>             Project: HBase
>          Issue Type: Bug
>          Components: hbck
>    Affects Versions: 0.94.2
>            Reporter: Clint Heath
>            Priority: Minor
>
> We found a situation where a temporary reference file got left in META's 
> recovered.edits directory and this was causing hbck to report inconsistency 
> with HBase.  When trying to repair it with the "hbck -fixReferenceFiles" 
> command, an access control exception was thrown, because hbck was trying to 
> put the sidelined reference file in the root of HDFS and the hbase user did 
> not have permissions.  But even after specifying a "sidelineDir" (hbck 
> -fixReferenceFiles -sidelineDir hdfs://<namespace>/tmp), the same exception 
> was thrown (logs obfuscated below):
> INFO util.HBaseFsck: Trying to sildeline reference 
> filehdfs://<namespace>/hbase/.META./1028685194/recovered.edits/0000000000000000016.temp
>  to hdfs://<namespace>/0000000000000000016.temp 
> Exception in thread "main" org.apache.hadoop.security.AccessControlException: 
> Permission denied: user=hbase, access=WRITE, inode="/":hdfs:hadoop:drwxr-xr-x 
> Since the operation requires moving data around in HDFS, we tried the same 
> command as the "hdfs" user which should have no permission problems, but an 
> exception was thrown nonetheless:
>  
> ... 
> WARN util.HBaseFsck: Got AccessControlException when preCheckPermission 
> org.apache.hadoop.security.AccessControlException: Permission denied: 
> action=WRITE path=hdfs://<namespace>/hbase/-ROOT- user=hdfs 
> Ultimately in order to get this working, we ran this command to tell hbck to 
> not run it's prechecks:
> hbase hbck -fixReferenceFiles -sidelineDir hdfs://<namespace>/tmp 
> -ignorePreCheckPermission
> A few thoughts here:
> 1) it seems that / is a bad default location to attempt to sideline files
> 2) shouldn't hbck be run as the hbase user?  If so, it should sideline files 
> to a directory it has write permissions to.
> 3) if we expect hbck to be run as the hdfs user, permissions should not be 
> denied that user when HDFS itself will not deny them.



--
This message was sent by Atlassian Jira
(v8.20.7#820007)

Reply via email to