Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Simplify ZooKeeper entry points by removing ZooSession #5124

Open
ctubbsii opened this issue Nov 29, 2024 · 0 comments
Open

Simplify ZooKeeper entry points by removing ZooSession #5124

ctubbsii opened this issue Nov 29, 2024 · 0 comments
Assignees
Labels
enhancement This issue describes a new feature, improvement, or optimization.
Milestone

Comments

@ctubbsii
Copy link
Member

I've been spending a lot of time lately looking at the ZooKeeper code, and there's a lot of room for improvement. For the longest time, I really couldn't understand what ZooSession is really doing that's important. After spending some more time on it, I've come to believe that it is merely allowing client object reuse for unclosed ZooKeeper objects globally. However, I believe this is no longer needed, because we are not arbitrarily constructing ZooKeeper instances through static utilities throughout our code like we may have once done.

In current Accumulo code, we now have ClientContext and ServerContext objects that maintain state for clients (AccumuloClient) and server-side processes (AbstractServer and utilities), respectively, and give a lifecycle to that state. There are only a few calls to ZooSession, and they are entirely in ZooReader and ZooReaderWriter, which are lightweight wrappers around ZooKeeper for convenient read/write operations. ZooReader/Writer are instantiated as fields inside ClientContext/ServerContext, so it is not necessary to have all this complexity.

I believe ZooSession can be removed, and ZooReader/Writer can be rewritten as decorators for a ZooKeeper that is directly stored as a field in ClientContext/ServerContext, and this would dramatically simplify much of our ZooKeeper code, as well as clean up some complexity in ClientContext/ServerContext.

Unless there's a good reason why ZooSession should stay, I intend to work on this.

@ctubbsii ctubbsii added the enhancement This issue describes a new feature, improvement, or optimization. label Nov 29, 2024
@ctubbsii ctubbsii added this to the 3.1.0 milestone Nov 29, 2024
@ctubbsii ctubbsii self-assigned this Nov 29, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement This issue describes a new feature, improvement, or optimization.
Projects
None yet
Development

No branches or pull requests

1 participant