Hi Mahadev! 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 me. 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. Erik