very good Enrico
Il giorno mer 22 dic 2021 alle ore 03:37 mattison chao < mattisonc...@gmail.com> ha scritto: > +1 > > On Wed, 22 Dec 2021 at 07:59, Matteo Merli <mme...@apache.org> wrote: > > > This is the voting thread for PIP-123. It will stay open for at least > 48h. > > > > https://github.com/apache/pulsar/issues/13346 > > > > > > --------- > > ## Motivation > > > > For a very long time, we have included a CLI command to start the > ZooKeeper > > shell utility: `pulsar zookeeper-shell`, which is essentially a > repackaging > > of the ZooKeeper tool `zkCli.sh`. > > > > This is useful in some cases to either verify the content of metadata or > > to perform cleanup and modification tasks for which there is not an > > available > > option through the Pulsar REST APIs. > > > > While it's very useful, there are some drawbacks with the > `zookeeper-shell` > > as it is today: > > > > 1. This is only a ZooKeeper tool (obviously). Since we are adding more > > metadata backends, we should have a tool that works across all the > > implementations and presents a single consistent interface. > > > > 2. ZooKeeper shell is designed to be an interactive shell and it's not > > very > > good when trying to do non-interactive scriptable operations. > > > > 3. ZooKeeper is a bit clunky when using it and it requires the user to > > retype > > paths many times. The commands are not very intuitive or documented. > > It's not possible to update z-node with multi-lines content. > > > > 4. We cannot easily add functionality or improvements into ZooKeeper > > shell, > > since it belongs to a different project and the tool has been > > stagnating > > for many years. > > > > 5. In cases where the z-nodes content is binary (Protobuf) or > compressed, > > there > > is no easy way to inspect the content from the ZooKeeper shell. > > Additionally, we can format and colorize JSON content to make it > > easier to > > read. > > > > 6. The paths used for metadata resources are also often using encodings > > that > > make it more difficult to construct on the shell tool. > > > > Part of what is described here is in the `pulsar-managed-ledger-admin` > CLI > > tool, > > though that is a Python script that requires additional dependencies that > > are > > not typically installed, it only works with ZooKeeper, and it only > targets > > accessing the managed ledger metadata. > > > > ## Goal > > > > Introduce a new Java CLI tool to access, inspect and modify metadata that > > solves > > all the issues described above. > > > > We would leave the `zookeeper-shell` command for now. In the future, once > > the > > new tool is proven, we can consider removing the `zookeeper-shell` > command. > > > > > > ## Proposed changes > > > > Add a new command: > > ```bash > > bin/pulsar metadata > > ``` > > > > with several subcommands: > > > > > > #### Get > > > > Examples: > > ```bash > > # General path get > > $ pulsar metadata get /my-path > > > > > > # Topic metadata > > $ pulsar metadata get topic my-tenant/my-namespace/my-topic > > { > > # Managed ledger metadata > > } > > > > # Namespace get > > $ pulsar metadata get namespace my-tenant/my-namespace > > { > > # Namespace metadata > > } > > > > $ pulsar metadata get ledger 12345 > > { > > # BK ledger metadata > > } > > ``` > > > > #### Delete > > > > Examples: > > ```bash > > # General path delete > > $ pulsar metadata delete /my-path > > > > # Topic metadata > > $ pulsar metadata delete topic my-tenant/my-namespace/my-topic > > ``` > > > > #### Scan > > > > Examples: > > ```bash > > $ pulsar metadata scan /my-path > > /my-path > > /my-path/1 > > /my-path/2 > > /my-path/3 > > /my-path/3/1 > > > > $ pulsar metadata scan --values /my-path > > /my-path > > {value} > > > > /my-path/1 > > {value} > > > > /my-path/2 > > {value} > > ``` > > > > #### Shell > > > > ```bash > > $ pulsar metadata shell > > > get topic my-tenant/my-namespace/my-topic > > { > > # Managed ledger metadata > > } > > > > > delete topic my-tenant/my-namespace/my-topic > > > > > cd /my-path > > > ls > > 1 > > 2 > > 3 > > > delete 1 # Delete keys with relative paths > > > > ``` > > > > > > -- > > Matteo Merli > > <mme...@apache.org> > > >