[
https://issues.apache.org/jira/browse/ZOOKEEPER-1285?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13144125#comment-13144125
]
Thomas Koch commented on ZOOKEEPER-1285:
----------------------------------------
To explain it more detailed: The nodes HashMap of the DataTree would go away
and instead each DataNode has a HashMap of <String, DataNode>. The DataTree
class holds a reference to the root node and accesses all sub nodes by
traversing the nodes. DataNodes are immutable. Each change to a DataNode
including additions, removals or replacements of child nodes require the
instantiation of a new DataNode instance.
> make DataTree immutable
> -----------------------
>
> Key: ZOOKEEPER-1285
> URL: https://issues.apache.org/jira/browse/ZOOKEEPER-1285
> Project: ZooKeeper
> Issue Type: Improvement
> Reporter: Thomas Koch
> Assignee: Thomas Koch
>
> Having an immutable DataTree structure in the ZooKeeper server is an
> ambitious goal but is possible. Advantages would be:
> - No synchronization needed when accessing the DataTree.
> - The snapshotter thread gets an immutable datatree and will write a
> consistent DataTree to the disk.
> - No headaches whether multi transactions could lead to issues with
> (de)serialization.
> - Much better testability.
> - No concurrency - No headaches.
> - I hope for considerable speed improvements. Maybe also some memory savings,
> at least from refactorings possible after this step.
> - Statistical Data about the tree can be updated on every tree modification
> and is always consistent. The need to save statistical data in extra nodes
> for the quota feature goes away.
> Possible further improvements:
> Read requests actually don't need to enter the processor pipeline. Instead
> each server connection could get a reference to a (zxid, tree) tuple. Updates
> are delivered as (zxid, newTree, triggerWatchesCallback) to the server
> connections.
> The watches could be managed at each server connection instead of centrally
> at the DataTree.
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators:
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira