You are viewing a plain text version of this content. The canonical link for it is here.
Posted to common-commits@hadoop.apache.org by fa...@apache.org on 2018/08/01 01:51:33 UTC
hadoop git commit: HDFS-13322 fuse dfs - uid persists when switching
between ticket caches. Contributed by Istvan Fajth.
Repository: hadoop
Updated Branches:
refs/heads/trunk c835fc08a -> 40f9b0c5c
HDFS-13322 fuse dfs - uid persists when switching between ticket caches. Contributed by Istvan Fajth.
Project: http://git-wip-us.apache.org/repos/asf/hadoop/repo
Commit: http://git-wip-us.apache.org/repos/asf/hadoop/commit/40f9b0c5
Tree: http://git-wip-us.apache.org/repos/asf/hadoop/tree/40f9b0c5
Diff: http://git-wip-us.apache.org/repos/asf/hadoop/diff/40f9b0c5
Branch: refs/heads/trunk
Commit: 40f9b0c5c13f40921b6976589543a04efa489f93
Parents: c835fc0
Author: Aaron Fabbri <fa...@apache.org>
Authored: Tue Jul 31 15:21:38 2018 -0700
Committer: Aaron Fabbri <fa...@apache.org>
Committed: Tue Jul 31 18:44:49 2018 -0700
----------------------------------------------------------------------
.../src/main/native/fuse-dfs/fuse_connect.c | 17 +++++++++++++----
1 file changed, 13 insertions(+), 4 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hadoop/blob/40f9b0c5/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/fuse-dfs/fuse_connect.c
----------------------------------------------------------------------
diff --git a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/fuse-dfs/fuse_connect.c b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/fuse-dfs/fuse_connect.c
index 6ee4ad5..f08917a 100644
--- a/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/fuse-dfs/fuse_connect.c
+++ b/hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/fuse-dfs/fuse_connect.c
@@ -192,7 +192,7 @@ int fuseConnectInit(const char *nnUri, int port)
}
/**
- * Compare two libhdfs connections by username
+ * Compare two libhdfs connections by username and Kerberos ticket cache path
*
* @param a The first libhdfs connection
* @param b The second libhdfs connection
@@ -201,22 +201,26 @@ int fuseConnectInit(const char *nnUri, int port)
*/
static int hdfsConnCompare(const struct hdfsConn *a, const struct hdfsConn *b)
{
- return strcmp(a->usrname, b->usrname);
+ int rc = strcmp(a->usrname, b->usrname);
+ if (rc) return rc;
+ return gHdfsAuthConf == AUTH_CONF_KERBEROS && strcmp(a->kpath, b->kpath);
}
/**
* Find a libhdfs connection by username
*
* @param usrname The username to look up
+ * @param kpath The Kerberos ticket cache file path
*
* @return The connection, or NULL if none could be found
*/
-static struct hdfsConn* hdfsConnFind(const char *usrname)
+static struct hdfsConn* hdfsConnFind(const char *usrname, const char *kpath)
{
struct hdfsConn exemplar;
memset(&exemplar, 0, sizeof(exemplar));
exemplar.usrname = (char*)usrname;
+ exemplar.kpath = (char*)kpath;
return RB_FIND(hdfsConnTree, &gConnTree, &exemplar);
}
@@ -542,8 +546,13 @@ static int fuseConnect(const char *usrname, struct fuse_context *ctx,
int ret;
struct hdfsConn* conn;
+ char kpath[PATH_MAX] = { 0 };
+ if (gHdfsAuthConf == AUTH_CONF_KERBEROS) {
+ findKerbTicketCachePath(ctx, kpath, sizeof(kpath));
+ }
+
pthread_mutex_lock(&gConnMutex);
- conn = hdfsConnFind(usrname);
+ conn = hdfsConnFind(usrname, kpath);
if (!conn) {
ret = fuseNewConnect(usrname, ctx, &conn);
if (ret) {
---------------------------------------------------------------------
To unsubscribe, e-mail: common-commits-unsubscribe@hadoop.apache.org
For additional commands, e-mail: common-commits-help@hadoop.apache.org