[ https://issues.apache.org/jira/browse/ZOOKEEPER-319?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Mahadev konar updated ZOOKEEPER-319: ------------------------------------ Attachment: ZOOKEEPER-319.patch just a minor modification. my compiler fails on compiliing consta char* auth_data without initialization. +1 to the patch. one minor nit -- - we have some logging in auth_completion_func() in zookeeper.c {noformat} zoo_lock_auth(zh); if(rc!=0){ LOG_ERROR(("Authentication scheme %s failed. Connection closed.", zh->auth.scheme)); zh->state=ZOO_AUTH_FAILED_STATE; }else{ zh->auth.state=1; // active LOG_INFO(("Authentication scheme %s succeeded", zh->auth.scheme)); } if (zh->auth.completion) { auth_completion = zh->auth.completion; auth_data = zh->auth.data; zh->auth.completion=0; } zoo_unlock_auth(zh); {noformat} Should we get rid of logging within the lock? > add locking around auth info in zhandle_t > ----------------------------------------- > > Key: ZOOKEEPER-319 > URL: https://issues.apache.org/jira/browse/ZOOKEEPER-319 > Project: Zookeeper > Issue Type: Bug > Components: c client > Affects Versions: 3.0.0, 3.0.1, 3.1.0 > Reporter: Chris Darroch > Fix For: 3.1.1, 3.2.0 > > Attachments: ZOOKEEPER-319.patch, ZOOKEEPER-319.patch > > > Looking over the zookeeper.c code it appears to me that the zoo_add_auth() > function may be called at any time by the user in their "main" thread. This > function alters the elements of the auth_info structure in the zhandle_t > structure. > Meanwhile, the IO thread may read those elements at any time in such > functions as send_auth_info() and auth_completion_func(). It seems > important, then, to add a lock which prevents data being read by the IO > thread while only partially changed by the user's thread. The attached patch > add such a lock. -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.