Skip to content

Fixes #1225 - Place all table configurations under single Zookeeper path.#1382

Closed
jzgithub1 wants to merge 1 commit intoapache:masterfrom
jzeiberg:accumulo-1225
Closed

Fixes #1225 - Place all table configurations under single Zookeeper path.#1382
jzgithub1 wants to merge 1 commit intoapache:masterfrom
jzeiberg:accumulo-1225

Conversation

@jzgithub1
Copy link
Copy Markdown
Contributor

This pull request adds a new Zookeeper path to put the table configurations for all tables under a single Znode. This path is located at /accumulo/{instance-id}/table_configs in Zookeeper. Many of the other table configurations will be still located under /accumulo/{instance-id}/tables to maintain the current functional operation of the code with the present ZooCache class which has not been modified at all. The relocated configurations are ones like these: table.iterator.majc.vers, table.constraint.1, table.iterator.scan.vers.opt.maxVersions, table.iterator.minc.vers, table.iterator.majc.vers.opt.maxVersions, table.iterator.minc.vers.opt.maxVersions, table.iterator.scan.vers.

Those configuration values were being cleared from the ZooCache during add/remove/clone table operations. This necessitated calling Zookeeper again for all the configurations of all the tables. For large systems that constantly added and removed tables this caused ZooCache.get to created new Watchers on configurations that ZooKeeper already had a watch on. On systems with many TServers with many tables this must have put a larger burden on Zookeeper than we would see in smaller systems.
I think that this pull request reduces the number of Zookeeper Watchers that get created in the ZooCache.get function. I have observed this in trace debugging.

I have run the ingest testing in the Accumulo-Testing project on this code. Also I have verified table creation, deletion and cloning in the accumulo command line interface. I verified the creation of the table configurations at their new locations inside of the ZooKeeper command line interface.

…e to prevent erasure from ZooCache and reduce Watchers
Copy link
Copy Markdown
Member

@ctubbsii ctubbsii left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

From what I can see, this change does two things: moves the table configs under a single ZK path, and stops clearing the tableStateCache on certain watched events. I'm not convinced these changes address the problem of too many watchers at all. If it does, I'm very confused as to how. I would also prefer a solution that doesn't move the table config, as I don't think it's necessary.

@jzgithub1 jzgithub1 closed this Oct 7, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants