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

Jungtaek Lim commented on STORM-2906:
-------------------------------------

[~satish.duggana] stated that it doesn't occur when HDFS and HBase bolts are 
running in different workers.

After some investigation I found the cause, 

[https://github.com/apache/storm/blob/6402d436a8700eb743ccd84f7f562c51d8cf9be7/external/storm-hbase/src/main/java/org/apache/storm/hbase/common/Utils.java#L39-L65]

 
{code:java}
    public static HTable getTable(UserProvider provider, final Configuration 
config, final String tableName)
            throws IOException, InterruptedException {
        UserGroupInformation ugi;
        if (provider != null) {
            ugi = provider.getCurrent().getUGI();
            LOG.debug("Current USER for provider: {}", ugi.getUserName());
        } else {
            // autocreds puts delegation token into current user UGI
            ugi = UserGroupInformation.getCurrentUser();


            LOG.debug("UGI for current USER : {}", ugi.getUserName());
            for (Token<? extends TokenIdentifier> token : ugi.getTokens()) {
                LOG.debug("Token in UGI (delegation token): {} / {}", 
token.toString(),
                        token.decodeIdentifier().getUser());


                // use UGI from token
                ugi = token.decodeIdentifier().getUser();
                ugi.addToken(token);
            }
        }


        return ugi.doAs(new PrivilegedExceptionAction<HTable>() {
            @Override public HTable run() throws IOException {
                return new HTable(config, tableName);
            }
        });
    }{code}
UGI is always selected from last element of tokens, and unfortunately tokens 
have HDFS delegation tokens as well. So we should check kind of token 
(HBASE_AUTH_TOKEN) before leveraging it.

If nimbus can distribute tokens based on worker, then it will not occur when 
HDFS and HBase bolts are running different workers.

> HDFS and HBase bolt on the same worker fails with GSS no valid credentials 
> exception
> ------------------------------------------------------------------------------------
>
>                 Key: STORM-2906
>                 URL: https://issues.apache.org/jira/browse/STORM-2906
>             Project: Apache Storm
>          Issue Type: Bug
>          Components: storm-hbase
>            Reporter: Santhosh B Gowda
>            Assignee: Jungtaek Lim
>            Priority: Critical
>              Labels: pull-request-available
>          Time Spent: 10m
>  Remaining Estimate: 0h
>
> We have observed that the topology which has HDFS and HBase bolts fails with 
> GSS exception no valid credentials.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to