Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Issue 1799: bkctl is broken with default build options #1800

Merged
merged 3 commits into from
Nov 12, 2018

Conversation

sijie
Copy link
Member

@sijie sijie commented Nov 10, 2018

Descriptions of the changes in this PR:

Motivation

bkctl is designed in a modularized way for extensibility.
it loads command groups via ServiceLoader. However current build
profile doesn't leverage this extensibility. Instead it hardcodes
all the commands in one service load file. So if bkctl is built
without -Dstream, it will broke.

Changes

  • move ledger related commands to tools/ledger
  • generate the service load file by concating commands files from each module's resources directory.

Results

bkctl works for all build profiles.

  • without -Dstream
$ bin/bkctl

bkctl interacts and operates Apache BookKeeper clusters

Usage:  bkctl [flags] [command group] [commands]

Commands:

    bookie      Commands on operating a single bookie
    bookies     Commands on operating a cluster of bookies
    cookie      Commands on operating cookies
    ledger      Commands on interacting with ledgers

    help        Display help information about it

Flags:

    -c, --conf
        Configuration file

    -n, --namespace
        Namespace scope to run commands (only valid for table service for now)

    -u, --service-uri
        Service Uri

    -h, --help
        Display help information

Use "bkctl [command] --help" or "bkctl help [command]" for more information
about a command
  • with -Dstream
$ bin/bkctl

bkctl interacts and operates Apache BookKeeper clusters

Usage:  bkctl [flags] [command group] [commands]

Commands:

    bookie          Commands on operating a single bookie
    bookies         Commands on operating a cluster of bookies
    cluster         Commands on administrating bookkeeper clusters
    cookie          Commands on operating cookies
    ledger          Commands on interacting with ledgers
    namespace       Commands on operating namespaces
    table           Commands on interacting with tables
    tables          Commands on operating tables

    help            Display help information about it

Flags:

    -c, --conf
        Configuration file

    -n, --namespace
        Namespace scope to run commands (only valid for table service for now)

    -u, --service-uri
        Service Uri

    -h, --help
        Display help information

Use "bkctl [command] --help" or "bkctl help [command]" for more information
about a command

Master Issue: #1799


In order to uphold a high standard for quality for code contributions, Apache BookKeeper runs various precommit
checks for pull requests. A pull request can only be merged when it passes precommit checks. However running all
the precommit checks can take a long time, some trivial changes don't need to run all the precommit checks. You
can check following list to skip the tests that don't need to run for your pull request. Leave them unchecked if
you are not sure, committers will help you:

  • [skip bookkeeper-server bookie tests]: skip testing org.apache.bookkeeper.bookie in bookkeeper-server module.
  • [skip bookkeeper-server client tests]: skip testing org.apache.bookkeeper.client in bookkeeper-server module.
  • [skip bookkeeper-server replication tests]: skip testing org.apache.bookkeeper.replication in bookkeeper-server module.
  • [skip bookkeeper-server tls tests]: skip testing org.apache.bookkeeper.tls in bookkeeper-server module.
  • [skip bookkeeper-server remaining tests]: skip testing all other tests in bookkeeper-server module.
  • [skip integration tests]: skip docker based integration tests. if you make java code changes, you shouldn't skip integration tests.
  • [skip build java8]: skip build on java8. ONLY skip this when ONLY changing files under documentation under site.
  • [skip build java9]: skip build on java9. ONLY skip this when ONLY changing files under documentation under site.


Be sure to do all of the following to help us incorporate your contribution
quickly and easily:

If this PR is a BookKeeper Proposal (BP):

  • Make sure the PR title is formatted like:
    <BP-#>: Description of bookkeeper proposal
    e.g. BP-1: 64 bits ledger is support
  • Attach the master issue link in the description of this PR.
  • Attach the google doc link if the BP is written in Google Doc.

Otherwise:

  • Make sure the PR title is formatted like:
    <Issue #>: Description of pull request
    e.g. Issue 123: Description ...
  • Make sure tests pass via mvn clean apache-rat:check install spotbugs:check.
  • Replace <Issue #> in the title with the actual Issue number.

sijie added 2 commits November 9, 2018 16:45
*Motivation*

`bkctl` is designed in a modularized way for extensibility.
it loads command groups via ServiceLoader. However current build
profile doesn't leverage this extensibility. Instead it hardcodes
all the commands in one service load file. So if `bkctl` is built
without `-Dstream`, it will broke.

*Changes*

- move `ledger` related commands to `tools/ledger`
- generate the service load file by concating `commands` files from each module's resources directory.

*Results*

bkctl works for all build profiles.

- without `-Dstream`

```
$ bin/bkctl

bkctl interacts and operates Apache BookKeeper clusters

Usage:  bkctl [flags] [command group] [commands]

Commands:

    bookie      Commands on operating a single bookie
    bookies     Commands on operating a cluster of bookies
    cookie      Commands on operating cookies
    ledger      Commands on interacting with ledgers

    help        Display help information about it

Flags:

    -c, --conf
        Configuration file

    -n, --namespace
        Namespace scope to run commands (only valid for table service for now)

    -u, --service-uri
        Service Uri

    -h, --help
        Display help information

Use "bkctl [command] --help" or "bkctl help [command]" for more information
about a command
```

- with `-Dstream`

```
$ bin/bkctl

bkctl interacts and operates Apache BookKeeper clusters

Usage:  bkctl [flags] [command group] [commands]

Commands:

    bookie          Commands on operating a single bookie
    bookies         Commands on operating a cluster of bookies
    cluster         Commands on administrating bookkeeper clusters
    cookie          Commands on operating cookies
    ledger          Commands on interacting with ledgers
    namespace       Commands on operating namespaces
    table           Commands on interacting with tables
    tables          Commands on operating tables

    help            Display help information about it

Flags:

    -c, --conf
        Configuration file

    -n, --namespace
        Namespace scope to run commands (only valid for table service for now)

    -u, --service-uri
        Service Uri

    -h, --help
        Display help information

Use "bkctl [command] --help" or "bkctl help [command]" for more information
about a command
```
@sijie sijie added this to the 4.9.0 milestone Nov 10, 2018
@sijie sijie self-assigned this Nov 10, 2018
@sijie sijie mentioned this pull request Nov 10, 2018
Copy link
Contributor

@eolivelli eolivelli left a comment

Choose a reason for hiding this comment

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

Well done

@sijie
Copy link
Member Author

sijie commented Nov 11, 2018

run bookkeeper-server bookie tests

Copy link
Contributor

@ivankelly ivankelly left a comment

Choose a reason for hiding this comment

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

Looks good. The tool output is actually nicer than what you have in the commit message as it groups stuff.

Cookie should probably be under infrastructure, but that's not for this PR.

Usage:  bkctl [flags] [command group] [commands]

    cookie      Commands on operating cookies

Infrastructure commands :

    bookie      Commands on operating a single bookie
    bookies     Commands on operating a cluster of bookies

Ledger service commands :

    ledger      Commands on interacting with ledgers

@@ -60,7 +66,9 @@ Command | Action
`mvn verify` | Performs a wide variety of verification and validation tasks
`mvn apache-rat:check` | Run Maven using the [Apache Rat](http://creadur.apache.org/rat/apache-rat-plugin/) plugin
`mvn compile javadoc:aggregate` | Build Javadocs locally
`mvn package assembly:single` | Build a complete distribution using the Maven [Assembly](http://maven.apache.org/plugins/maven-assembly-plugin/) plugin
`mvn -am -pl bookkeeper-dist/server package` | Build a server distribution using the Maven [Assembly](http://maven.apache.org/plugins/maven-assembly-plugin/) plugin
Copy link
Contributor

Choose a reason for hiding this comment

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

I don't understand why this changed? How is this better than straight "package assembly:single"?

Copy link
Contributor

Choose a reason for hiding this comment

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

This is not related strictly to this issue, but currently the command is that one
we can fix it on master as follow up

Copy link
Contributor

Choose a reason for hiding this comment

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

Ah, i see. The previous command doesn't actually work.

@sijie
Copy link
Member Author

sijie commented Nov 12, 2018

Cookie should probably be under infrastructure, but that's not for this PR.

Cookie change and grouping change are done by two independent changes. So that’s why cookie was not categorized. A subsequent change is needed to add cookie to infrastructure

@eolivelli eolivelli merged commit faeb9bb into apache:master Nov 12, 2018
eolivelli pushed a commit to eolivelli/bookkeeper that referenced this pull request Nov 12, 2018
Descriptions of the changes in this PR:

*Motivation*

`bkctl` is designed in a modularized way for extensibility.
it loads command groups via ServiceLoader. However current build
profile doesn't leverage this extensibility. Instead it hardcodes
all the commands in one service load file. So if `bkctl` is built
without `-Dstream`, it will broke.

*Changes*

- move `ledger` related commands to `tools/ledger`
- generate the service load file by concating `commands` files from each module's resources directory.

*Results*

bkctl works for all build profiles.

- without `-Dstream`

```
$ bin/bkctl

bkctl interacts and operates Apache BookKeeper clusters

Usage:  bkctl [flags] [command group] [commands]

Commands:

    bookie      Commands on operating a single bookie
    bookies     Commands on operating a cluster of bookies
    cookie      Commands on operating cookies
    ledger      Commands on interacting with ledgers

    help        Display help information about it

Flags:

    -c, --conf
        Configuration file

    -n, --namespace
        Namespace scope to run commands (only valid for table service for now)

    -u, --service-uri
        Service Uri

    -h, --help
        Display help information

Use "bkctl [command] --help" or "bkctl help [command]" for more information
about a command
```

- with `-Dstream`

```
$ bin/bkctl

bkctl interacts and operates Apache BookKeeper clusters

Usage:  bkctl [flags] [command group] [commands]

Commands:

    bookie          Commands on operating a single bookie
    bookies         Commands on operating a cluster of bookies
    cluster         Commands on administrating bookkeeper clusters
    cookie          Commands on operating cookies
    ledger          Commands on interacting with ledgers
    namespace       Commands on operating namespaces
    table           Commands on interacting with tables
    tables          Commands on operating tables

    help            Display help information about it

Flags:

    -c, --conf
        Configuration file

    -n, --namespace
        Namespace scope to run commands (only valid for table service for now)

    -u, --service-uri
        Service Uri

    -h, --help
        Display help information

Use "bkctl [command] --help" or "bkctl help [command]" for more information
about a command
```

Master Issue: apache#1799

Reviewers: Ivan Kelly <ivank@apache.org>, Enrico Olivelli <eolivelli@gmail.com>

This closes apache#1800 from sijie/refactor_bkctl, closes apache#1799
eolivelli pushed a commit to eolivelli/bookkeeper that referenced this pull request Nov 13, 2018
Descriptions of the changes in this PR:

*Motivation*

`bkctl` is designed in a modularized way for extensibility.
it loads command groups via ServiceLoader. However current build
profile doesn't leverage this extensibility. Instead it hardcodes
all the commands in one service load file. So if `bkctl` is built
without `-Dstream`, it will broke.

*Changes*

- move `ledger` related commands to `tools/ledger`
- generate the service load file by concating `commands` files from each module's resources directory.

*Results*

bkctl works for all build profiles.

- without `-Dstream`

```
$ bin/bkctl

bkctl interacts and operates Apache BookKeeper clusters

Usage:  bkctl [flags] [command group] [commands]

Commands:

    bookie      Commands on operating a single bookie
    bookies     Commands on operating a cluster of bookies
    cookie      Commands on operating cookies
    ledger      Commands on interacting with ledgers

    help        Display help information about it

Flags:

    -c, --conf
        Configuration file

    -n, --namespace
        Namespace scope to run commands (only valid for table service for now)

    -u, --service-uri
        Service Uri

    -h, --help
        Display help information

Use "bkctl [command] --help" or "bkctl help [command]" for more information
about a command
```

- with `-Dstream`

```
$ bin/bkctl

bkctl interacts and operates Apache BookKeeper clusters

Usage:  bkctl [flags] [command group] [commands]

Commands:

    bookie          Commands on operating a single bookie
    bookies         Commands on operating a cluster of bookies
    cluster         Commands on administrating bookkeeper clusters
    cookie          Commands on operating cookies
    ledger          Commands on interacting with ledgers
    namespace       Commands on operating namespaces
    table           Commands on interacting with tables
    tables          Commands on operating tables

    help            Display help information about it

Flags:

    -c, --conf
        Configuration file

    -n, --namespace
        Namespace scope to run commands (only valid for table service for now)

    -u, --service-uri
        Service Uri

    -h, --help
        Display help information

Use "bkctl [command] --help" or "bkctl help [command]" for more information
about a command
```

Master Issue: apache#1799

Reviewers: Ivan Kelly <ivank@apache.org>, Enrico Olivelli <eolivelli@gmail.com>

This closes apache#1800 from sijie/refactor_bkctl, closes apache#1799
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants