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