This is an automated email from the ASF dual-hosted git repository. xyuanlu pushed a commit to branch metaclient in repository https://gitbox.apache.org/repos/asf/helix.git
commit f9e6c606cdba5f3ea94bbbbb82545885d7ac27bd Author: xyuanlu <[email protected]> AuthorDate: Wed Feb 15 09:43:55 2023 -0800 Add wrapper file for meta client async callback class (#2372) Add wrapper file for meta client async callback class --- .../adapter/ZkMetaClientCreateCallbackHandler.java | 48 +++++++++++++++++++ .../adapter/ZkMetaClientDeleteCallbackHandler.java | 47 +++++++++++++++++++ .../adapter/ZkMetaClientExistCallbackHandler.java | 53 +++++++++++++++++++++ .../zk/adapter/ZkMetaClientGetCallbackHandler.java | 54 ++++++++++++++++++++++ 4 files changed, 202 insertions(+) diff --git a/meta-client/src/main/java/org/apache/helix/metaclient/impl/zk/adapter/ZkMetaClientCreateCallbackHandler.java b/meta-client/src/main/java/org/apache/helix/metaclient/impl/zk/adapter/ZkMetaClientCreateCallbackHandler.java new file mode 100644 index 000000000..358b447db --- /dev/null +++ b/meta-client/src/main/java/org/apache/helix/metaclient/impl/zk/adapter/ZkMetaClientCreateCallbackHandler.java @@ -0,0 +1,48 @@ +package org.apache.helix.metaclient.impl.zk.adapter; + +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + + +import org.apache.helix.metaclient.api.AsyncCallback; +import org.apache.helix.zookeeper.zkclient.callback.ZkAsyncCallbacks; + +/** + * Wrapper class for metaclient.api.AsyncCallback. + * This wrapper class extends zk callback class. It has an object of user defined + * metaclient.api.AsyncCallback. + * Each callback will do default retry defined in ZkAsyncCallbacks. (defined in ZkAsyncCallbacks) + * + * ZkClient execute async callbacks at zkClient main thead, retry is handles in a separate retry + * thread. In our first version of implementation, we will keep similar behavior and have + * callbacks executed in ZkClient event thread, and reuse zkclient retry logic. + */ + +public class ZkMetaClientCreateCallbackHandler extends ZkAsyncCallbacks.CreateCallbackHandler { + AsyncCallback.VoidCallback _userCallback; + + public ZkMetaClientCreateCallbackHandler(AsyncCallback.VoidCallback cb) { + _userCallback = cb; + } + + @Override + public void handle() { + _userCallback.processResult(getRc(), getPath()); + } +} diff --git a/meta-client/src/main/java/org/apache/helix/metaclient/impl/zk/adapter/ZkMetaClientDeleteCallbackHandler.java b/meta-client/src/main/java/org/apache/helix/metaclient/impl/zk/adapter/ZkMetaClientDeleteCallbackHandler.java new file mode 100644 index 000000000..59f173f81 --- /dev/null +++ b/meta-client/src/main/java/org/apache/helix/metaclient/impl/zk/adapter/ZkMetaClientDeleteCallbackHandler.java @@ -0,0 +1,47 @@ +package org.apache.helix.metaclient.impl.zk.adapter; + +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import org.apache.helix.metaclient.api.AsyncCallback; +import org.apache.helix.zookeeper.zkclient.callback.ZkAsyncCallbacks; + +/** + * Wrapper class for metaclient.api.AsyncCallback. + * This wrapper class extends zk callback class. It has an object of user defined + * metaclient.api.AsyncCallback. + * Each callback will do default retry defined in ZkAsyncCallbacks. (defined in ZkAsyncCallbacks) + * + * ZkClient execute async callbacks at zkClient main thead, retry is handles in a separate retry + * thread. In our first version of implementation, we will keep similar behavior and have + * callbacks executed in ZkClient event thread, and reuse zkclient retry logic. + */ + +public class ZkMetaClientDeleteCallbackHandler extends ZkAsyncCallbacks.DeleteCallbackHandler { + AsyncCallback.VoidCallback _userCallback; + + public ZkMetaClientDeleteCallbackHandler(AsyncCallback.VoidCallback cb) { + _userCallback = cb; + } + + @Override + public void handle() { + _userCallback.processResult(getRc(), getPath()); + } +} diff --git a/meta-client/src/main/java/org/apache/helix/metaclient/impl/zk/adapter/ZkMetaClientExistCallbackHandler.java b/meta-client/src/main/java/org/apache/helix/metaclient/impl/zk/adapter/ZkMetaClientExistCallbackHandler.java new file mode 100644 index 000000000..eefafc339 --- /dev/null +++ b/meta-client/src/main/java/org/apache/helix/metaclient/impl/zk/adapter/ZkMetaClientExistCallbackHandler.java @@ -0,0 +1,53 @@ +package org.apache.helix.metaclient.impl.zk.adapter; + +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import org.apache.helix.metaclient.api.AsyncCallback; +import org.apache.helix.metaclient.api.MetaClientInterface; +import org.apache.helix.metaclient.impl.zk.util.ZkMetaClientUtil; +import org.apache.helix.zookeeper.zkclient.callback.ZkAsyncCallbacks; + +/** + * Wrapper class for metaclient.api.AsyncCallback. + * This wrapper class extends zk callback class. It has an object of user defined + * metaclient.api.AsyncCallback. + * Each callback will do default retry defined in ZkAsyncCallbacks. (defined in ZkAsyncCallbacks) + * + * ZkClient execute async callbacks at zkClient main thead, retry is handles in a separate retry + * thread. In our first version of implementation, we will keep similar behavior and have + * callbacks executed in ZkClient event thread, and reuse zkclient retry logic. + */ + +public class ZkMetaClientExistCallbackHandler extends ZkAsyncCallbacks.ExistsCallbackHandler { + AsyncCallback.StatCallback _userCallback; + + public ZkMetaClientExistCallbackHandler(AsyncCallback.StatCallback cb) { + _userCallback = cb; + } + + // Call user passed in callback. Will pass a null for stats if operation fails. + @Override + public void handle() { + _userCallback.processResult(getRc(), getPath(), getStat() == null ? null + : new MetaClientInterface.Stat( + ZkMetaClientUtil.convertZkEntryModeToMetaClientEntryMode(getStat().getEphemeralOwner()), + getStat().getVersion())); + } +} diff --git a/meta-client/src/main/java/org/apache/helix/metaclient/impl/zk/adapter/ZkMetaClientGetCallbackHandler.java b/meta-client/src/main/java/org/apache/helix/metaclient/impl/zk/adapter/ZkMetaClientGetCallbackHandler.java new file mode 100644 index 000000000..08efb2d54 --- /dev/null +++ b/meta-client/src/main/java/org/apache/helix/metaclient/impl/zk/adapter/ZkMetaClientGetCallbackHandler.java @@ -0,0 +1,54 @@ +package org.apache.helix.metaclient.impl.zk.adapter; + +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import org.apache.helix.metaclient.api.AsyncCallback; +import org.apache.helix.metaclient.api.MetaClientInterface; +import org.apache.helix.metaclient.impl.zk.util.ZkMetaClientUtil; +import org.apache.helix.zookeeper.zkclient.callback.ZkAsyncCallbacks; + +/** + * Wrapper class for metaclient.api.AsyncCallback. + * This wrapper class extends zk callback class. It has an object of user defined + * metaclient.api.AsyncCallback. + * Each callback will do default retry defined in ZkAsyncCallbacks. (defined in ZkAsyncCallbacks) + * + * ZkClient execute async callbacks at zkClient main thead, retry is handles in a separate retry + * thread. In our first version of implementation, we will keep similar behavior and have + * callbacks executed in ZkClient event thread, and reuse zkclient retry logic. + */ + +public class ZkMetaClientGetCallbackHandler extends ZkAsyncCallbacks.GetDataCallbackHandler { + AsyncCallback.DataCallback _userCallback; + + public ZkMetaClientGetCallbackHandler(AsyncCallback.DataCallback cb) { + _userCallback = cb; + } + + + // Call user passed in callback. Will pass a null for stats if get operation fails. + @Override + public void handle() { + _userCallback.processResult(getRc(), getPath(), getData(), + getStat() == null ? null : new MetaClientInterface.Stat( + ZkMetaClientUtil.convertZkEntryModeToMetaClientEntryMode(getStat().getEphemeralOwner()), + getStat().getVersion())); + } +}
