You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@hbase.apache.org by "Sean Busbey (JIRA)" <ji...@apache.org> on 2018/12/17 17:47:00 UTC

[jira] [Comment Edited] (HBASE-20984) Add/Modify test case to check custom hbase.wal.dir outside hdfs filesystem

    [ https://issues.apache.org/jira/browse/HBASE-20984?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16723208#comment-16723208 ] 

Sean Busbey edited comment on HBASE-20984 at 12/17/18 5:46 PM:
---------------------------------------------------------------

{quote}
{code}

--- a/hbase-server/src/test/java/org/apache/hadoop/hbase/HBaseTestingUtility.java
+++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/HBaseTestingUtility.java
@@ -551,16 +551,16 @@ public class HBaseTestingUtility extends HBaseZKTestingUtility {
   /**
    * Sets up a new path in test filesystem to be used by tests.
    */
-  private Path getNewDataTestDirOnTestFS() throws IOException {
+  private Path getNewDataTestDirOnTestFS(FileSystem fs) throws IOException {
     //The file system can be either local, mini dfs, or if the configuration
     //is supplied externally, it can be an external cluster FS. If it is a local
     //file system, the tests should use getBaseTestDir, otherwise, we can use
     //the working directory, and create a unique sub dir there
-    FileSystem fs = getTestFileSystem();
+
     Path newDataTestDir;
     String randomStr = getRandomUUID().toString();
     if (fs.getUri().getScheme().equals(FileSystem.getLocal(conf).getUri().getScheme())) {
-      newDataTestDir = new Path(getDataTestDir(), randomStr);
+      newDataTestDir = new Path("file:///"+getDataTestDir(), randomStr);
       File dataTestDir = new File(newDataTestDir.toString());
       if (deleteOnExit()) dataTestDir.deleteOnExit();
     } else {
{code}
{quote}

this is a little brittle, since it assumes the scheme for the Filesystem returned by {{FileSystem.getLocal(conf)}} will be {{file://}}, but that's unlikely to change anytime soon. (unless the Hadoop encrypted filesystem supports directly wrapping a local fs instance?)

Could you change this to use {{makeQualified}} from the {{fs}} instead of inserting a scheme in the string? Or does that break things?


was (Author: busbey):
{quote}
{code}

562	    if (fs.getUri().getScheme().equals(FileSystem.getLocal(conf).getUri().getScheme())) {	562	    if (fs.getUri().getScheme().equals(FileSystem.getLocal(conf).getUri().getScheme())) {
563	      newDataTestDir = new Path(getDataTestDir(), randomStr);	563	      newDataTestDir = new Path("file:///"+getDataTestDir(), randomStr);
564	      File dataTestDir = new File(newDataTestDir.toString());	564	      File dataTestDir = new File(newDataTestDir.toString());
565	      if (deleteOnExit()) dataTestDir.deleteOnExit();	565	      if (deleteOnExit()) dataTestDir.deleteOnExit();
566	    } else {	566	    } else {
{code}
{quote}

this is a little brittle, since it assumes the scheme for the Filesystem returned by {{FileSystem.getLocal(conf)}} will be {{file://}}, but that's unlikely to change anytime soon. (unless the Hadoop encrypted filesystem supports directly wrapping a local fs instance?)

Could you change this to use {{makeQualified}} from the {{fs}} instead of inserting a scheme in the string? Or does that break things?

> Add/Modify test case to check custom hbase.wal.dir outside hdfs filesystem
> --------------------------------------------------------------------------
>
>                 Key: HBASE-20984
>                 URL: https://issues.apache.org/jira/browse/HBASE-20984
>             Project: HBase
>          Issue Type: Bug
>          Components: test, wal
>            Reporter: Sakthi
>            Assignee: Sakthi
>            Priority: Minor
>         Attachments: hbase-20984.master.001.patch, hbase-20984.master.002.patch
>
>
> The current setup in TestWALFactory tries to create custom WAL directory outside hdfs but ends up creating a custom WAL directory inside hdfs. In TestWALFactory.java:
> {code:java}
> public static void setUpBeforeClass() throws Exception {
>     CommonFSUtils.setWALRootDir(TEST_UTIL.getConfiguration(), new Path("file:///tmp/wal")); // A local filesystem WAL is attempted
> ...
>     hbaseDir = TEST_UTIL.createRootDir();
>     hbaseWALDir = TEST_UTIL.createWALRootDir(); // But a directory inside hdfs is created here using HBaseTestingUtility#getNewDataTestDirOnTestFS
> }
> {code}
> The change was made in HBASE-20723



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)