1#52
Open
xyuanlu wants to merge 48 commits into
Open
Conversation
Add new submodule meta client - a generic metadata client
Add listener interfaces and factory class for metaclient interface
Add Meta client factory and ZkMetaClient constructor
…implementation (apache#2333) Prepare zkclient for meta-client DataChangeListener add new method in IZkDataListener Implement boolean flag connectOnInit in zkclient for decoupling Override equals and hashcode for the converter class
Add basic CRUD for ZkMetaClient and test
Metaclient - Op and OpResult Logic for transactional suppor
Metaclient - Implementation of Create from CRUD operations
* Implement data change listener for ZkMetaClient and test
… zkclient (apache#2346) Prepare zkclient and implement new adapter for child change listener.
1. Implementation of the transactionOp() operation method in zkMetaClient. This method enables transactional support by converting metaclient operations into zk ops and running the zk.multi() method. The results are converted back from zk opResults to metaclient opResults. 2. Created a separate util class zkMetaClientUtil for Util functions and the logic behind the implementation of transactionOp().
Refactoring MetaClient Exception. Creating separate exception directory.
Rename and reformat metaclient test and util
Implements the direct child change listener in ZkMetaClient using the native ZkClient.
Modified transactionOp test case variable for clearer understanding. Added more comments to test cases.
Fix ZkClient retry logic for customized callback and test
Update async API for MetaClient.
Add wrapper file for meta client async callback class
Create separate API for persistent and one-time listener
Implementation of Container Nodes in ZkMetaClient
Implement zk Meta client async crud
TTL Node Interface Methods Co-authored-by: mapeng <mapeng@linkedin.com>
This change adds an extra check in ZkClient.connect so that it will only be invoked once. Also avoid close called in between of isclosed check and connection establishment in connect().
Add support for state change in ZkMetaClient
TTL Node Lattice Implementation
Implement timeout for auto reconnect ZkClient does auto reconnect when it get's disconnected from Zookeeper. There is no timeout when reconnect can not be established. In ZkMetaclient, we have a separate thread to monitor reconnect status and close ZkClient when connection can not be reestablished when timed out.
Refactor ZkClient for persist watch
Implementing LockInfo Object for LockClient in MetaClient --------- Co-authored-by: mapeng <mapeng@linkedin.com>
…he#2443) Add comment and description for ZkMetaClient reconnect handling
…gured) (apache#2432) Before ZK 3.6, all zk watchers are one time watcher. ZkClient used to resubscribe every time when an event happens. This change adopts ZK persist watcher.
…ient (apache#2439) ZkPathRecursiveWatcherTrie will be used for a registry for ZK persist recursive watcher. When persist recursive watcher is registered on path /X, ZK will send out data change for any data/child changing under the tree structure of /X. The event only include the path of changed ZNode. In ZkClient, when ever we get a dataChange event for path /X/Y/Z, we need to track back the path and notify all registered recursive persist listener and notify them about the node change. ref: https://zookeeper.apache.org/doc/r3.7.1/zookeeperProgrammers.html#sc_WatchPersistentRecursive
Update snapshot version for metaclient align with TOT of master branch
Add metaclient supporting files.
Add meta-client module in version bump script
…r flag is on (apache#2465) When Zk Client register a one time listener on a path hat has already a persist watcher registered. ZK will over write the persist watcher and only trigger event once when change happen. In Helix ZkClient, we should disable one time wacher registration when _usePersistWatcher is set to true.
ZkPathRecursiveWatcherTrie will be used as a registry of persistent recursive watchers. When persist recursive watcher is registered on path /X, ZK will send out data change for any data/child changing under the tree structure of /X. The event only include the path of changed ZNode. In ZkClient, when ever we get a dataChange event for path /X/Y/Z, we need to track back the path and notify all registered recursive persist listener and notify them about the node change. ref: https://zookeeper.apache.org/doc/r3.7.1/zookeeperProgrammers.html#sc_WatchPersistentRecursive
Implementation of LockClient for Lattice. Co-authored-by: mapeng <mapeng@linkedin.com>
…PI only * add recursive persist listener API in ZkClient and test native ZK
3d7f9d4 to
cc536b9
Compare
ZkClient add recursive persist listener implementation
7bd0ee8 to
7a8fa24
Compare
7a8fa24 to
481acbf
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Issues
(apache#200 - Link your issue number here: You can write "Fixes #XXX". Please use the proper keyword so that the issue gets closed automatically. See https://docs.github.com/en/github/managing-your-work-on-github/linking-a-pull-request-to-an-issue
Any of the following keywords can be used: close, closes, closed, fix, fixes, fixed, resolve, resolves, resolved)
Description
(Write a concise description including what, why, how)
Tests
(List the names of added unit/integration tests)
(If CI test fails due to known issue, please specify the issue and test PR locally. Then copy & paste the result of "mvn test" to here.)
Changes that Break Backward Compatibility (Optional)
(Consider including all behavior changes for public methods or API. Also include these changes in merge description so that other developers are aware of these changes. This allows them to make relevant code changes in feature branches accounting for the new method/API behavior.)
Documentation (Optional)
(Link the GitHub wiki you added)
Commits
Code Quality
(helix-style-intellij.xml if IntelliJ IDE is used)