[
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)