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

rudy commented on ZOOKEEPER-645:
--------------------------------

follow this and it seems work.

1、ZNodeName
public int compareTo(ZNodeName that) {
    int s1 = this.sequence;
    int s2 = that.sequence;
    if (s1 == -1 && s2 == -1) {
        return this.name.compareTo(that.name);
    }
    return s1 == -1 ? 1 : s2 == -1 ? -1 : s1 - s2;
}

2、WriteLock
change “id = name;” to “id = dir + "/" + name;”

3、WriteLock
if (stat != null) {
    return Boolean.FALSE;
} else {
    LOG.warn("Could not find the" + " stats for less than me: " + 
lastChildName.getName());
    return execute(); // add this
}



> Bug in WriteLock recipe implementation?
> ---------------------------------------
>
>                 Key: ZOOKEEPER-645
>                 URL: https://issues.apache.org/jira/browse/ZOOKEEPER-645
>             Project: ZooKeeper
>          Issue Type: Bug
>          Components: recipes
>    Affects Versions: 3.2.2
>         Environment: 3.2.2 java 1.6.0_12
>            Reporter: Jaakko Laine
>            Assignee: Mahadev konar
>            Priority: Minor
>             Fix For: 3.6.0
>
>         Attachments: 645-fix-findPrefixInChildren.patch, 
> ZOOKEEPER-645-compareTo.patch, ZOOKEEPER-645.3.patch.txt
>
>
> Not sure, but there seem to be two issues in the example WriteLock:
> (1) ZNodeName is sorted according to session ID first, and then according to 
> znode sequence number. This might cause starvation as lower session IDs 
> always get priority. WriteLock is not thread-safe in the first place, so 
> having session ID involved in compare operation does not seem to make sense.
> (2) if findPrefixInChildren finds previous ID, it should add dir in front of 
> the ID



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to