[
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)