You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sentry.apache.org by ha...@apache.org on 2016/12/13 23:05:02 UTC
sentry git commit: SENTRY-1564: Improve error detection and reporting
in MetastoreCacheInitializer.java (Vadim Spector, Reviewed by: Hao Hao)
Repository: sentry
Updated Branches:
refs/heads/master 4abd1869f -> 55947a5d7
SENTRY-1564: Improve error detection and reporting in MetastoreCacheInitializer.java (Vadim Spector, Reviewed by: Hao Hao)
Change-Id: I257c31033a748ee9dd23961441ab937d505ce51c
Project: http://git-wip-us.apache.org/repos/asf/sentry/repo
Commit: http://git-wip-us.apache.org/repos/asf/sentry/commit/55947a5d
Tree: http://git-wip-us.apache.org/repos/asf/sentry/tree/55947a5d
Diff: http://git-wip-us.apache.org/repos/asf/sentry/diff/55947a5d
Branch: refs/heads/master
Commit: 55947a5d7944b45d967b3e40fe3741bd9ca9f73a
Parents: 4abd186
Author: hahao <ha...@cloudera.com>
Authored: Tue Dec 13 15:04:17 2016 -0800
Committer: hahao <ha...@cloudera.com>
Committed: Tue Dec 13 15:04:17 2016 -0800
----------------------------------------------------------------------
.../sentry/hdfs/MetastoreCacheInitializer.java | 38 ++++++++++++++++----
1 file changed, 31 insertions(+), 7 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/sentry/blob/55947a5d/sentry-hdfs/sentry-hdfs-service/src/main/java/org/apache/sentry/hdfs/MetastoreCacheInitializer.java
----------------------------------------------------------------------
diff --git a/sentry-hdfs/sentry-hdfs-service/src/main/java/org/apache/sentry/hdfs/MetastoreCacheInitializer.java b/sentry-hdfs/sentry-hdfs-service/src/main/java/org/apache/sentry/hdfs/MetastoreCacheInitializer.java
index 517bba5..f9664f0 100644
--- a/sentry-hdfs/sentry-hdfs-service/src/main/java/org/apache/sentry/hdfs/MetastoreCacheInitializer.java
+++ b/sentry-hdfs/sentry-hdfs-service/src/main/java/org/apache/sentry/hdfs/MetastoreCacheInitializer.java
@@ -148,6 +148,10 @@ class MetastoreCacheInitializer implements Closeable {
PartitionTask(String dbName, String tblName, List<String> partNames,
TPathChanges tblPathChange) {
super();
+ Preconditions.checkNotNull(dbName, "Null database name");
+ Preconditions.checkNotNull(tblName, "database \"%s\": Null table name", dbName);
+ Preconditions.checkNotNull(partNames, "database \"%s\", table \"%s\": Null partNames", dbName, tblName);
+ Preconditions.checkNotNull(tblPathChange, "database \"%s\", table \"%s\": Null tblPathChange", dbName, tblName);
this.dbName = dbName;
this.tblName = tblName;
this.partNames = partNames;
@@ -164,11 +168,14 @@ class MetastoreCacheInitializer implements Closeable {
}
for (Partition part : tblParts) {
List<String> partPath = null;
+ Preconditions.checkNotNull(part.getSd(),
+ "database \"%s\", table \"%s\", partition with Null SD",
+ dbName, tblName);
try {
partPath = PathsUpdate.parsePath(part.getSd().getLocation());
} catch (SentryMalformedPathException e) {
- String msg = "Unexpected path in partitionTask: dbName=" + dbName +
- ", tblName=" + tblName + ", path=" + part.getSd().getLocation();
+ String msg = String.format("Unexpected path in partitionTask: dbName=\"%s\", tblName=\"%s\", path=\"%s\"",
+ dbName, tblName, part.getSd().getLocation());
throw new SentryMalformedPathException(msg, e);
}
@@ -188,6 +195,10 @@ class MetastoreCacheInitializer implements Closeable {
TableTask(Database db, List<String> tableNames, PathsUpdate update) {
super();
+ Preconditions.checkNotNull(db, "Null database");
+ Preconditions.checkNotNull(db.getName(), "Null database name");
+ Preconditions.checkNotNull(tableNames, "database \"%s\": Null tableNames", db.getName());
+ Preconditions.checkNotNull(update, "database \"%s\": Null update object", db.getName());
this.db = db;
this.tableNames = tableNames;
this.update = update;
@@ -204,9 +215,16 @@ class MetastoreCacheInitializer implements Closeable {
for (Table tbl : tables) {
TPathChanges tblPathChange;
// Table names are case insensitive
+ Preconditions.checkNotNull(tbl.getTableName(),
+ "database \"%s\": Null table name", db.getName());
+ Preconditions.checkNotNull(tbl.getDbName(),
+ "database \"%s\", table \"%s\": Null database name", db.getName(), tbl.getTableName());
+ Preconditions.checkNotNull(tbl.getSd(),
+ "database \"%s\", table \"%s\": Null SD", db.getName(), tbl.getTableName());
+ Preconditions.checkArgument(tbl.getDbName().equalsIgnoreCase(db.getName()),
+ "database \"%s\", table \"%s\": inconsistent database name \"%s\"", tbl.getDbName(), tbl.getTableName(), db.getName());
String tableName = tbl.getTableName().toLowerCase();
synchronized (update) {
- Preconditions.checkArgument(tbl.getDbName().equalsIgnoreCase(db.getName()));
tblPathChange = update.newPathChange(db.getName() + "." + tableName);
}
if (tbl.getSd().getLocation() != null) {
@@ -214,8 +232,8 @@ class MetastoreCacheInitializer implements Closeable {
try {
tblPath = PathsUpdate.parsePath(tbl.getSd().getLocation());
} catch (SentryMalformedPathException e) {
- String msg = "Unexpected path in TableTask: dbName=" + tbl.getDbName() +
- ", tblName=" + tbl.getTableName() + ", path=" + tbl.getSd().getLocation();
+ String msg = String.format("Unexpected path in TableTask: dbName=\"%s\", tblName=\"%s\", path=\"%s\"",
+ tbl.getDbName(), tbl.getTableName(), tbl.getSd().getLocation());
throw new SentryMalformedPathException(msg, e);
}
if (tblPath != null) {
@@ -246,6 +264,8 @@ class MetastoreCacheInitializer implements Closeable {
DbTask(PathsUpdate update, String dbName) {
super();
+ Preconditions.checkNotNull(dbName, "Null database name");
+ Preconditions.checkNotNull(update, "database \"%s\": Null update object", dbName);
this.update = update;
//Database names are case insensitive
this.dbName = dbName.toLowerCase();
@@ -254,20 +274,24 @@ class MetastoreCacheInitializer implements Closeable {
@Override
public void doTask() throws TException, SentryMalformedPathException {
Database db = hmsHandler.get_database(dbName);
+ Preconditions.checkNotNull(db, "Cannot find database \"%s\"", dbName);
List<String> dbPath = null;
try {
dbPath = PathsUpdate.parsePath(db.getLocationUri());
} catch (SentryMalformedPathException e) {
- String msg = "Unexpected path in DbTask: DB=" + db.getName() + ", Path=" + db.getLocationUri();
+ String msg = String.format("Unexpected path in DbTask: DB=\"%s\", Path = \"%s\"",
+ db.getName(), db.getLocationUri());
throw new SentryMalformedPathException(msg, e);
}
if (dbPath != null) {
synchronized (update) {
- Preconditions.checkArgument(dbName.equalsIgnoreCase(db.getName()));
+ Preconditions.checkArgument(dbName.equalsIgnoreCase(db.getName()),
+ "Inconsistent database names \"%s\" vs \"%s\"", dbName, db.getName());
update.newPathChange(dbName).addToAddPaths(dbPath);
}
}
List<String> allTblStr = hmsHandler.get_all_tables(dbName);
+ Preconditions.checkNotNull(allTblStr, "Cannot fetch tables for database \"%s\"", dbName);
for (int i = 0; i < allTblStr.size(); i += maxTablesPerCall) {
List<String> tablesToFetch =
allTblStr.subList(i, Math.min(