[ 
https://issues.apache.org/jira/browse/ZOOKEEPER-78?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12694793#action_12694793
 ] 

Chris Darroch commented on ZOOKEEPER-78:
----------------------------------------

Just took a quick peek to see what would be either rework these in a 
ZooKeeper::Lock Perl module to go along with Net::ZooKeeper, or to expose the C 
version through Net::ZooKeeper.  I may well be missing something after such a 
brief review, but in zoo_mutex_operation() I would be inclined to add some 
return value checks.

For example, if zoo_create() here returns a failure code, I believe it's 
possible for the retbuf to contain whatever random data it had before the call. 
 In that case, getName() might "succeed" if the data contains a '/' and return 
a string --- possibly one that doesn't happen to be null-terminated within the 
retbuf buffer.

{noformat}
           char retbuf[len+20];
           snprintf(buf, len, "%s/%s", path, prefix);
           ret = zoo_create(zh, buf, NULL, 0,  mutex->acl, 
                            ZOO_EPHEMERAL|ZOO_SEQUENCE, retbuf, (len+20));
           mutex->id = getName(retbuf);
{noformat}

There are some calls to zoo_get_children(), etc., which I think might be 
usefully checked for failure return codes as well.  Sorry not to provide a 
patch yet.

> added a high level protocol/feature - for easy Leader Election or exclusive 
> Write Lock creation
> -----------------------------------------------------------------------------------------------
>
>                 Key: ZOOKEEPER-78
>                 URL: https://issues.apache.org/jira/browse/ZOOKEEPER-78
>             Project: Zookeeper
>          Issue Type: New Feature
>          Components: java client
>    Affects Versions: 3.0.0
>            Reporter: james strachan
>            Assignee: james strachan
>             Fix For: 3.2.0
>
>         Attachments: patch_with_including_Benjamin's_fix.patch, 
> using_zookeeper_facade.patch, ZOOKEEPER-78.patch, ZOOKEEPER-78.patch, 
> ZOOKEEPER-78.patch, ZOOKEEPER-78.patch
>
>
> Here's a patch which adds a little WriteLock helper class for performing 
> leader elections or creating exclusive locks in some directory znode. Note 
> its an early cut; am sure we can improve it over time. The aim is to avoid 
> folks having to use the low level ZK stuff but provide a simpler high level 
> abstraction.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to