[ https://issues.apache.org/jira/browse/HBASE-27987?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
ConfX resolved HBASE-27987. --------------------------- Resolution: Duplicate > HCommon get local file system fails with a casting error > -------------------------------------------------------- > > Key: HBASE-27987 > URL: https://issues.apache.org/jira/browse/HBASE-27987 > Project: HBase > Issue Type: Bug > Reporter: ConfX > Priority: Critical > Attachments: reproduce.sh > > > h2. What happened > After setting {{{}fs.file.impl=org.apache.hadoop.fs.RawLocalFileSystem{}}}, > trying to acquire local file system using the {{getLocal}} in > {{org.apache.hadoop.fs}} fails with {{java.lang.ClassCastException}} > h2. Where's the bug > In the function {{getLocal}} of {{FileSystem}} in HCommon: > {code:java} > public static LocalFileSystem getLocal(Configuration conf) > throws IOException { > return (LocalFileSystem)get(LocalFileSystem.NAME, conf); > } {code} > the returned file system is directly casted to LocalFileSystem without > checking. If the user set the implementation of the local filesystem to be > Raw rather than Checksum, this type cast would fail. > h2. How to reproduce > # Set {{fs.file.impl=org.apache.hadoop.fs.RawLocalFileSystem}} > # Run {{org.apache.hadoop.hbase.TestHBaseTestingUtility#testMiniDFSCluster}} > and the following exception should be observed: > {code:java} > java.lang.ClassCastException: class org.apache.hadoop.fs.RawLocalFileSystem > cannot be cast to class org.apache.hadoop.fs.LocalFileSystem > (org.apache.hadoop.fs.RawLocalFileSystem and > org.apache.hadoop.fs.LocalFileSystem are in unnamed module of loader 'app') > at org.apache.hadoop.fs.FileSystem.getLocal(FileSystem.java:441) at > org.apache.hadoop.hbase.HBaseTestingUtility.getNewDataTestDirOnTestFS(HBaseTestingUtility.java:550) > at > org.apache.hadoop.hbase.HBaseTestingUtility.setupDataTestDirOnTestFS(HBaseTestingUtility.java:536) > at > org.apache.hadoop.hbase.HBaseTestingUtility.getDataTestDirOnTestFS(HBaseTestingUtility.java:510) > at > org.apache.hadoop.hbase.HBaseTestingUtility.getDataTestDirOnTestFS(HBaseTestingUtility.java:524) > at > org.apache.hadoop.hbase.HBaseTestingUtility.createDirsAndSetProperties(HBaseTestingUtility.java:737) > at > org.apache.hadoop.hbase.HBaseTestingUtility.startMiniDFSCluster(HBaseTestingUtility.java:682) > at > org.apache.hadoop.hbase.HBaseTestingUtility.startMiniDFSCluster(HBaseTestingUtility.java:665) > at > org.apache.hadoop.hbase.HBaseTestingUtility.startMiniDFSCluster(HBaseTestingUtility.java:653) > at > org.apache.hadoop.hbase.TestHBaseTestingUtility.testMiniDFSCluster(TestHBaseTestingUtility.java:377) > {code} -- This message was sent by Atlassian Jira (v8.20.10#820010)