Sailesh Mukil has posted comments on this change.

Change subject: IMPALA-5221: Avoid re-use of stale SASL contexts.
......................................................................


Patch Set 2:

(14 comments)

http://gerrit.cloudera.org:8080/#/c/7116/1//COMMIT_MSG
Commit Message:

PS1, Line 7: Avoid re-use of stale SASL contexts.
> specifically: don't re-use old sasl contexts, right?
Yup, done.


http://gerrit.cloudera.org:8080/#/c/7116/1/be/src/transport/TSasl.cpp
File be/src/transport/TSasl.cpp:

PS1, Line 119: }
             :   /*
             :   if (!authenticationId.empty()) {
             :     // TODO: setup security property
             :     sasl_security_properties_t secprops;
             :     // populate  secprop
> move these initializations to the member initializer list (e.g. service(ser
Whoops, thanks. Done.


PS1, Line 128: 
             : 
> int result = ...
Done


Line 129: 
> IIUC, we should DCHECK(conn == nullptr) here to confirm we're not hitting t
Done


PS1, Line 208:   const string& userRealm, unsigned flags, sasl_callback_t* 
callbacks)
             :     : TSasl(service, serverFQDN, callbacks),
             :       userRealm(userRealm),
             :       flags(flags),
             :       serverStarted(false) { }
             : 
             : void TSaslServer::setupS
> move to member initializer list etc.
Done


PS1, Line 218:     NULL, NULL, callbacks, flags, &conn);
             :   if (re
> int result = ...
Done


http://gerrit.cloudera.org:8080/#/c/7116/1/be/src/transport/TSasl.h
File be/src/transport/TSasl.h:

PS1, Line 61: setupSaslContext
> I think setupSaslContext is a better name.
Done


PS1, Line 66: dispose
> can't this lead to calling sasl_dispose(&nullptr) if there's a negotiation 
Yes, I completely missed that. I've added a null check in dispose().

It looks like the code would return a bad status if the pointer it receives is 
invalid and we ignore it anyway because it's the destructor. That probably 
explains why we've never seen it crash here with my patch.


PS1, Line 69:  * Call
> why is this one virtual? and how about disposeSaslContext()?
Done


Line 71:    * with servers or done with clients.  Internally the library 
maintains a which
> doesn't this need to be wrapped in "if (conn != nullptr)"? i.e. can't we ge
Yes, I added the check here, it could end up here with conn==nullptr with the 
case Henry mentioned.

It looks like the code would return a bad status if the pointer it receives is 
invalid and we ignore it anyway because it's the destructor. That probably 
explains why we've never seen it crash here with my patch.


PS1, Line 69:  * Called once per application to free resources.`
            :    * Note that there is no distinction in the sasl library 
between being done
            :    * with servers or done with clients.  Internally the library 
maintains a which
            :    
> can this be protected?
Done


Line 131:    sasl_conn_t* conn;
> who owns it? and any way to be more descriptive than "registered callbacks"
Done


http://gerrit.cloudera.org:8080/#/c/7116/1/be/src/transport/TSaslClientTransport.h
File be/src/transport/TSaslClientTransport.h:

PS1, Line 51: Set u
> Set up
Done


http://gerrit.cloudera.org:8080/#/c/7116/1/be/src/transport/TSaslServerTransport.h
File be/src/transport/TSaslServerTransport.h:

PS1, Line 44: /* Set up the Sasl server state for a connection.
> If this is a no-op, the comment shold be here.
Done


-- 
To view, visit http://gerrit.cloudera.org:8080/7116
To unsubscribe, visit http://gerrit.cloudera.org:8080/settings

Gerrit-MessageType: comment
Gerrit-Change-Id: I7d509e14dfe46fa28d0626cf84daf6de82955d80
Gerrit-PatchSet: 2
Gerrit-Project: Impala-ASF
Gerrit-Branch: master
Gerrit-Owner: Sailesh Mukil <sail...@cloudera.com>
Gerrit-Reviewer: Dan Hecht <dhe...@cloudera.com>
Gerrit-Reviewer: Henry Robinson <he...@cloudera.com>
Gerrit-Reviewer: Sailesh Mukil <sail...@cloudera.com>
Gerrit-HasComments: Yes

Reply via email to