> On June 27, 2018, 3:53 p.m., Peter Vary wrote:
> > standalone-metastore/src/main/java/org/apache/hadoop/hive/metastore/utils/FileUtils.java
> > Lines 526 (patched)
> > <https://reviews.apache.org/r/67753/diff/2/?file=2046288#file2046288line526>
> >
> >     Are we sure that the location is not null at this stage?
> 
> Oleksiy Sayankin wrote:
>     Saying  _location_, do you mean variable _path_ here or the result of 
> _getFileSystem(conf)_?
> 
> Peter Vary wrote:
>     Path... sorry for the confusion!

Yes. From sources:

    Path dbPath = wh.determineDatabasePath(cat, db);
    String dbLocationUri = wh.getDnsPath(dbPath).toString();
      Configuration conf = getConf();
      if (!MetastoreConf.getBoolVar(conf, 
ConfVars.METASTORE_ALLOW_NEW_DB_IN_EXISTING_DIRECTORY) && FileUtils
          .exists(dbPath, conf)) {
    
where method _determineDatabasePath()_ is:

    
    public Path determineDatabasePath(Catalog cat, Database db) throws 
MetaException {
    if (db.isSetLocationUri()) {
      return getDnsPath(new Path(db.getLocationUri()));
    }
    if (cat == null || cat.getName().equalsIgnoreCase(DEFAULT_CATALOG_NAME)) {
      if (db.getName().equalsIgnoreCase(DEFAULT_DATABASE_NAME)) {
        return getWhRoot();
      } else {
        return new Path(getWhRoot(), dbDirFromDbName(db));
      }
    } else {
      return new Path(getDnsPath(new Path(cat.getLocationUri())), 
dbDirFromDbName(db));
     }
    }

look at each __return__ statement. Every time we use __new Path()__ directly or 
as an argument to a method _getDnsPath()_. And it also uses __return new 
Path()__. See

    public static Path getDnsPath(Path path, Configuration conf) throws 
MetaException {
    FileSystem fs = getFs(path, conf);
    return (new Path(fs.getUri().getScheme(), fs.getUri().getAuthority(), path
        .toUri().getPath()));
    }

So _dbPath_ can't be __null__ here. Hence

    return path.getFileSystem(conf).exists(path);
    
works fine and there is no NPE.


- Oleksiy


-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/67753/#review205424
-----------------------------------------------------------


On June 27, 2018, 4:23 p.m., Oleksiy Sayankin wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviews.apache.org/r/67753/
> -----------------------------------------------------------
> 
> (Updated June 27, 2018, 4:23 p.m.)
> 
> 
> Review request for hive, Zoltan Haindrich and Zoltan Haindrich.
> 
> 
> Repository: hive-git
> 
> 
> Description
> -------
> 
> Added hive.metastore.allow.new.db.in.existing.directory property
> 
> 
> Diffs
> -----
> 
>   
> standalone-metastore/src/main/java/org/apache/hadoop/hive/metastore/HiveMetaStore.java
>  e9d7e7c397 
>   
> standalone-metastore/src/main/java/org/apache/hadoop/hive/metastore/conf/MetastoreConf.java
>  f3b909ca44 
>   
> standalone-metastore/src/main/java/org/apache/hadoop/hive/metastore/utils/FileUtils.java
>  963e12f9d8 
>   
> standalone-metastore/src/test/java/org/apache/hadoop/hive/metastore/TestMetaCreateObjects.java
>  PRE-CREATION 
> 
> 
> Diff: https://reviews.apache.org/r/67753/diff/4/
> 
> 
> Testing
> -------
> 
> 
> Thanks,
> 
> Oleksiy Sayankin
> 
>

Reply via email to