[
https://issues.apache.org/jira/browse/HADOOP-9957?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13767678#comment-13767678
]
Aimee Cheng commented on HADOOP-9957:
-------------------------------------
I see. Actually the reason for that ticket is that we found a strange problem
that though we use checkTGTAndReloginFromKeytab() every time when we do the
hbase access, but we still met "SASL authentication failed" problem after about
1-2 days running, you can see the error log in below. So we want that we can
force it to relogin without checking TGT when we met "SASL authentication
failed" problem. While now we replace the exception handler to be login again,
but this problem still exists. Sorry for creating ticket first without
checking carefully, I'll ask for help in hbase community.
{quote}
java.lang.RuntimeException: SASL authentication failed. The most likely cause
is missing or invalid credentials. Consider 'kinit'.
at
org.apache.hadoop.hbase.ipc.SecureClient$SecureConnection$1.run(SecureClient.java:242)
at java.security.AccessController.doPrivileged(Native Method)
at javax.security.auth.Subject.doAs(Subject.java:415)
at
org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1212)
at sun.reflect.GeneratedMethodAccessor33.invoke(Unknown Source)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at org.apache.hadoop.hbase.util.Methods.call(Methods.java:37)
at org.apache.hadoop.hbase.security.User.call(User.java:590)
at org.apache.hadoop.hbase.security.User.access$700(User.java:51)
at
org.apache.hadoop.hbase.security.User$SecureHadoopUser.runAs(User.java:444)
at
org.apache.hadoop.hbase.ipc.SecureClient$SecureConnection.handleSaslConnectionFailure(SecureClient.java:203)
at
org.apache.hadoop.hbase.ipc.SecureClient$SecureConnection.setupIOstreams(SecureClient.java:291)
at
org.apache.hadoop.hbase.ipc.HBaseClient.getConnection(HBaseClient.java:1124)
at org.apache.hadoop.hbase.ipc.HBaseClient.call(HBaseClient.java:974)
at
org.apache.hadoop.hbase.ipc.SecureRpcEngine$Invoker.invoke(SecureRpcEngine.java:104)
at $Proxy7.getClosestRowBefore(Unknown Source)
at
org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1016)
at
org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:882)
at
org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:984)
at
org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:886)
at
org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:843)
at
org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.processBatchCallback(HConnectionManager.java:1533)
at
org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.processBatch(HConnectionManager.java:1418)
at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:918)
at org.apache.hadoop.hbase.client.HTable.doPut(HTable.java:774)
at org.apache.hadoop.hbase.client.HTable.put(HTable.java:749)
at
org.apache.hadoop.hbase.client.HTablePool$PooledHTable.put(HTablePool.java:394)
at
com.yahoo.slingstone.event.pipeline.dao.hbase.HBaseDAO.write(HBaseDAO.java:177)
at
com.yahoo.slingstone.event.pipeline.dao.hbase.CommonHbaseDAO.write(CommonHbaseDAO.java:91)
at
com.yahoo.slingstone.event.pipeline.storm.bolt.HBaseStorageBolt.doPersistentOperation(HBaseStorageBolt.java:181)
at
com.yahoo.slingstone.event.pipeline.storm.bolt.HBaseStorageBolt.execute(HBaseStorageBolt.java:105)
at
com.yahoo.slingstone.event.pipeline.batch.CommonBolt.execute(CommonBolt.java:36)
at
backtype.storm.daemon.executor$eval3836$fn__3837$tuple_action_fn__3839.invoke(executor.clj:566)
at
backtype.storm.daemon.executor$mk_task_receiver$fn__3760.invoke(executor.clj:345)
at
backtype.storm.disruptor$clojure_handler$reify__1583.onEvent(disruptor.clj:43)
at
backtype.storm.utils.DisruptorQueue.consumeBatchToCursor(DisruptorQueue.java:84)
at
backtype.storm.utils.DisruptorQueue.consumeBatchWhenAvailable(DisruptorQueue.java:58)
at
backtype.storm.disruptor$consume_batch_when_available.invoke(disruptor.clj:62)
at
backtype.storm.daemon.executor$eval3836$fn__3837$fn__3846$fn__3893.invoke(executor.clj:658)
at backtype.storm.util$async_loop$fn__357.invoke(util.clj:377)
at clojure.lang.AFn.run(AFn.java:24)
at java.lang.Thread.run(Thread.java:722)
Caused by: javax.security.sasl.SaslException: GSS initiate failed [Caused by
GSSException: No valid credentials provided (Mechanism level: Failed to find
any Kerberos tgt)]
at
com.sun.security.sasl.gsskerb.GssKrb5Client.evaluateChallenge(GssKrb5Client.java:212)
at
org.apache.hadoop.hbase.security.HBaseSaslRpcClient.saslConnect(HBaseSaslRpcClient.java:156)
at
org.apache.hadoop.hbase.ipc.SecureClient$SecureConnection.setupSaslConnection(SecureClient.java:177)
at
org.apache.hadoop.hbase.ipc.SecureClient$SecureConnection.access$500(SecureClient.java:85)
at
org.apache.hadoop.hbase.ipc.SecureClient$SecureConnection$2.run(SecureClient.java:284)
at
org.apache.hadoop.hbase.ipc.SecureClient$SecureConnection$2.run(SecureClient.java:281)
at java.security.AccessController.doPrivileged(Native Method)
at javax.security.auth.Subject.doAs(Subject.java:415)
at
org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1212)
at sun.reflect.GeneratedMethodAccessor33.invoke(Unknown Source)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at org.apache.hadoop.hbase.util.Methods.call(Methods.java:37)
at org.apache.hadoop.hbase.security.User.call(User.java:590)
at org.apache.hadoop.hbase.security.User.access$700(User.java:51)
at
org.apache.hadoop.hbase.security.User$SecureHadoopUser.runAs(User.java:444)
at
org.apache.hadoop.hbase.ipc.SecureClient$SecureConnection.setupIOstreams(SecureClient.java:280)
... 30 more
Caused by: GSSException: No valid credentials provided (Mechanism level: Failed
to find any Kerberos tgt)
at
sun.security.jgss.krb5.Krb5InitCredential.getInstance(Krb5InitCredential.java:147)
at
sun.security.jgss.krb5.Krb5MechFactory.getCredentialElement(Krb5MechFactory.java:121)
at
sun.security.jgss.krb5.Krb5MechFactory.getMechanismContext(Krb5MechFactory.java:187)
at
sun.security.jgss.GSSManagerImpl.getMechanismContext(GSSManagerImpl.java:223)
at
sun.security.jgss.GSSContextImpl.initSecContext(GSSContextImpl.java:212)
at
sun.security.jgss.GSSContextImpl.initSecContext(GSSContextImpl.java:179)
at
com.sun.security.sasl.gsskerb.GssKrb5Client.evaluateChallenge(GssKrb5Client.java:193)
... 46 more
{quote}
> UserGroupInformation.checkTGTAndReloginFromKeytab() do the same thing as
> method reloginFromKeytab()
> ---------------------------------------------------------------------------------------------------
>
> Key: HADOOP-9957
> URL: https://issues.apache.org/jira/browse/HADOOP-9957
> Project: Hadoop Common
> Issue Type: Wish
> Components: security
> Reporter: Aimee Cheng
>
> The methods checkTGTAndReloginFromKeytab() and reloginFromKeytab() in
> UserGroupInformation actually are do the same things. Now reloginFromKeytab()
> will check the TGT expire time, if fresh, then will not relogin, just as what
> checkTGTAndReloginFromKeytab() does. I suggest maybe we can still let
> reloginFromKeytab() not check the TGT and provide a way to let develop can
> control when to relogin. While maybe we can just remove the
> checkTGTAndReloginFromKeytab() method.
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira