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