Sounds good that you want getters and setters, it makes most things easier
to reason about,
even though it might add a couple of extra lines of code.
The reason that I'm bringing up the synchronization is that some of the
methods in the DataNode
are synchronized, which I like if it means that you can get more concurrency
on the Object. But now
it feels like there is a mix of both approaches which is bit confusing to
I think that more and more people are going to start pushing ZooKeeper
towards it's limits and then
it might be reasonable to change the current synchronization schema from the
node to the individual
variables and maybe even get fancy and use Volatile in some places.