Hi Xiaoyu,

IIUC patch release must not include new features but only bug fixes.

Best,
tison.


Anon Hxy <anonhx...@gmail.com> 于2022年7月1日周五 23:59写道:

> Hi Nicolò Boschi,
>
> The Pulsar Shell is really cool and I like it. And also I have a question:
>
> >  I'd like to target this feature for 2.11
>
> Will it be possible to use Pulsar Shell in the legacy version of Pulsar, in
> other words, could we cherry-pick the PR to another branch easily?
>
> Thanks,
> Xiaoyu Hou
>
> Nicolò Boschi <boschi1...@gmail.com> 于2022年7月1日周五 20:40写道:
>
> > I updated the issue linking all the implementations pull requests.
> > If you open the issue you will be able to see 2 videos that better
> explain
> > how the tool works.
> > https://github.com/apache/pulsar/issues/16250
> >
> > Let me know if you have any feedbacks
> >
> > I'd like to target this feature for 2.11
> >
> > BR,
> > Nicolò Boschi
> >
> >
> > Il giorno mar 28 giu 2022 alle ore 10:06 Nicolò Boschi <
> > boschi1...@gmail.com>
> > ha scritto:
> >
> > > Hi all,
> > >
> > > I opened a new PIP about Pulsar CLI tools.
> > > Looking forward to seeing comments and suggestions.
> > >
> > > PIP: https://github.com/apache/pulsar/issues/16250
> > >
> > > I posted a short video that shows how the new tool will work:
> > >
> > >
> >
> https://user-images.githubusercontent.com/23314389/176125261-35e123a1-1826-4553-b912-28d00914c0e4.mp4
> > >
> > >
> > >
> > >
> > > ## Motivation
> > >
> > > Currently Pulsar comes with a couple of utility scripts with the goal
> of
> > > managing an existing cluster, test behaviours and verify performances:
> > > these tools are available as SH script inside the `bin` directory.
> > > The `pulsar-admin` is the CLI tool supposed to help users and operators
> > to
> > > configure the system, operate over policies, install functions and much
> > > else.
> > >
> > > This proposal basically aims to solve two different problems:
> > >
> > > 1. `pulsar-admin` is terribly slow. Every time the script is
> triggered, a
> > > new JVM process is spawned. The JVM process creation is heavy and most
> of
> > > the time is spent by the JVM initialization process. A very common use
> > case
> > > for cluster operators is to create scripts with several commands with
> the
> > > goal of initialize the cluster, initialize a specific tenant
> (namespaces,
> > > topics, policies, functions..); in this case, one JVM is initialized
> for
> > > each scripts leads to waste of time and resources.
> > >
> > > 2. User experience. The current design of the Pulsar CLIs can be
> > improved.
> > > There are a couple of aspects that may be annoying for a user and can
> > > discourage a user to use Pulsar.
> > >     1. Poking around available commands and options in a CLI tool
> > > (`pulsar-admin` for instance, but it's the same for `pulsar-perf` and
> > > `pulsar-client`) is slow and hard. In order to discover commands and
> > > options you need to use `-h` option and, since the performance issue
> > > pointed at 1., it can be annoying and time-consuming. Autocomplete
> > feature
> > > could be a real game-changer in this context.
> > >     2. Different CLI tools. There are a couple of different shell
> > scripts.
> > > They have different goals and it's okay to keep them separated.
> However,
> > > they raise a barrier for a non Pulsar expert that doesn't have a
> > convenient
> > > entry-point.
> > >
> > > ## Goal
> > >
> > > Address all the issues in the previous section with a single solution.
> > >
> > > ## API Changes
> > >
> > > A new shell script `bin/pulsar-shell` will be introduced. `bin/pulsar
> > > shell` could be a valid alternative but it's not findable for a newbie
> > user
> > > since no direct file exists.
> > >
> > > ## Implementation
> > >
> > > ### Concepts
> > > The new script `pulsar-shell` will differ from the existing for the
> > > following reasons:
> > >
> > > 1. It's a shell. When you start it, it will wait for commands to be
> > > executed. After the command has been executed, despite its result, the
> > > shell session will not be destroyed and it will wait for another
> command.
> > > 2. Unifies all the CLI scripts. In `pulsar-shell` you'll be able to run
> > > all the existing CLI commands. This will be done in a way that when a
> new
> > > command/option is added, the pulsar-shell will be updated accordingly.
> > > 3. It comes with sophisticated autocompletion and command history to
> > > highly improve the UX.
> > > 4. Performance. Since JVM is initiated once, it will gain on
> performance
> > > thanks to the JVM warmup and internal libraries bootstraps.
> > > 5. It will accept a file or a list of commands (parameter and stdin) to
> > > start a shell, run the commands and close the shell. We'll call it the
> > > `non-interactive` mode and it will ease the cluster operations
> > automations.
> > >
> > > Note that existing tools will not be removed/changed.
> > >
> > > ### Implementation
> > >
> > > The shell implementation will be developed in Java, using a well-known
> > > library called [JLine 3](https://github.com/jline/jline3) for the
> shell
> > > support.
> > > There will be a new main class that will extends the existing class
> tools
> > > (e.g. `PulsarAdminTool`)
> > >
> > > #### Configuration
> > > The configuration file taken by default will be `client.conf`, like
> > > current CLI tools. The env setup will be exactly the same as for
> > > `pulsar-admin` and `pulsar-client`.
> > >
> > > #### Autocompletion
> > > JLine3 has great support for autocompletion. The shell java class will
> > > translate current `JCommander` tools to the JLine3 completion API. This
> > > will ensure that all APIs will be up-to-date and covered.
> > >
> > > #### History
> > > JLine3 has built-in support for history, both in-memory and persisted
> (on
> > > local FS). By default the history will be persisted in the user home
> > > directory. This feature can be turned off for security concerns with a
> > > configuration property.
> > >
> > > #### List of tools
> > > The proposal is to get the following tools:
> > > - bin/pulsar-admin
> > > - bin/pulsar-client
> > > - bin/pulsar-perf
> > >
> > >
> > > ## Rejected Alternatives
> > >
> > > - Create a shell mode for `pulsar-admin`. This won't be a flexible
> > > solution because then we may need the same for other tools. Also it
> > doesn't
> > > cover the CLI unification part.
> > > - Create a brand-new shell mode. Not compatible with current CLI and
> > > another tool to maintain.
> > > - Use another shell library. There are a couple of valid alternatives
> to
> > > JLine3 but it's wide-spread and the autocompletion API is much more
> > > flexible than others since it's not done with annotations (the shell
> > needs
> > > to translate current JCommander definitions from existing tools)
> > >
> > >
> > >
> > >
> > > Nicolò Boschi
> > >
> >
>

Reply via email to