[ 
https://issues.apache.org/jira/browse/HADOOP-10070?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13897893#comment-13897893
 ] 

Daryn Sharp commented on HADOOP-10070:
--------------------------------------

Will this completely fix the issue?  Ex. Client1 uses a conf with a principal1 
and establishes a connection.  Client2 uses an equivalent conf with a different 
principal.  Unless the connection from client1 has closed, won't client2 reuse 
the open connection?  If correct, is this valid behavior in your case?

Truly fixing the problem requires a calculating equivalence of all keys that 
affect the ipc client connection.  Ideally the connectionId would consider all 
"ipc.client.*" kvps predicated on the client only using values in that range 
which may not be true.  Extracting/calculating equivalence for just the subset 
is likely not performant...  Even serializing those keys back into another conf 
key as a cached value would help but it'd need to updated if one of the cached 
values changes which is back to re-checking all the keys.  Sigh.

> RPC client doesn't use per-connection conf to determine server's expected 
> Kerberos principal name
> -------------------------------------------------------------------------------------------------
>
>                 Key: HADOOP-10070
>                 URL: https://issues.apache.org/jira/browse/HADOOP-10070
>             Project: Hadoop Common
>          Issue Type: Bug
>          Components: security
>    Affects Versions: 2.2.0
>            Reporter: Aaron T. Myers
>            Assignee: Aaron T. Myers
>         Attachments: HADOOP-10070.patch, HADOOP-10070.patch, 
> TestKerberosClient.java
>
>
> Currently, RPC client caches the {{Configuration}} object that was passed in 
> to its constructor and uses that same conf for every connection it sets up 
> thereafter. This can cause problems when security is enabled if the 
> {{Configuration}} object provided when the first RPC connection was made does 
> not contain all possible entries for all server principals that will later be 
> used by subsequent connections. When this happens, it will result in later 
> RPC connections incorrectly failing with the error "Failed to specify 
> server's Kerberos principal name" even though the principal name was 
> specified in the {{Configuration}} object provided on later RPC connection 
> attempts.
> I believe this means that we've inadvertently reintroduced HADOOP-6907.



--
This message was sent by Atlassian JIRA
(v6.1.5#6160)

Reply via email to