[
https://issues.apache.org/jira/browse/CASSANDRA-18661?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17799433#comment-17799433
]
Claude Warren commented on CASSANDRA-18661:
-------------------------------------------
We could change the sub-option arguments by prefixing them with what is now a
"sub-option"
For example, this would change the example in [1] from:
{quote}{{#Load one row with default schema}}
{{$ cassandra-stress write n=1 cl=one -mode native cql3 -log
file=create_schema.log}}{quote}
{quote}{{#Modify schema in CQL}}
{{$ cqlsh }}{quote}
{quote}{{#Run a real write workload}}
{{$ cassandra-stress write n=1000000 cl=one -mode native cql3 -schema
keyspace="keyspace1" -log file=load_1M_rows.log}}{quote}
To:
{quote}{{#Load one row with default schema}}
{{$ cassandra-stress write n=1 cl=one -mode-native -mode-cql3 -log-file
create_schema.log}}{quote}
{quote}{{#Modify schema in CQL}}
{{$ cqlsh}}{quote}
{quote}{{#Run a real write workload}}
{{$ cassandra-stress write n=1000000 cl=one -mode-native -mode-cql3
-schema-keyspace "keyspace1" -log-file load_1M_rows.log}}{quote}
We could also change the "additional stress parameters to options which would
then look like:
{quote}{{#Load one row with default schema}}
{{$ cassandra-stress write -n 1 -cl one -mode-native -mode-cql3 -log-file
create_schema.log}}{quote}
{quote}{{#Modify schema in CQL}}
{{$ cqlsh }}{quote}
{quote}{{#Run a real write workload}}
{{$ cassandra-stress write -n 1000000 -cl one -mode-native -mode-cql3
-schema-keyspace "keyspace1" -log-file load_1M_rows.log}}{quote}
This is a significant breaking change, though it might be possible to build an
upgrade tool to convert old command lines to new ones.
[1]
https://docs.datastax.com/en/dse/5.1/docs/tooling/cassandra-stress-tool.html
> Update cassandra-stress to use Apache Commons CLI
> -------------------------------------------------
>
> Key: CASSANDRA-18661
> URL: https://issues.apache.org/jira/browse/CASSANDRA-18661
> Project: Cassandra
> Issue Type: Improvement
> Components: Tool/stress
> Reporter: Brad Schoening
> Assignee: Claude Warren
> Priority: Normal
> Labels: lhf
>
> The Apache Commons CLI library provides an API for parsing command line
> options with the package org.apache.commons.cli and this is already used by a
> dozen of existing Cassandra utilities including:
> {quote}SSTableMetadataViewer, StandaloneScrubber, StandaloneSplitter,
> SSTableExport, BulkLoader, and others.
> {quote}
> However, cassandra-stress is an outlier which uses its own custom classes to
> parse command line options with classes such as OptionsSimple. In addition,
> the options syntax for username, password, and others are not aligned with
> the format used by CQLSH.
> Currently, there are > 5K lines of code in 'settings' which appears to just
> process command line args.
> This suggestion is to:
>
> a) Upgrade cassandra-stress to use Apache Commons CLI (no new dependencies
> are required as this library is already used by the project)
>
> b) Align the cassandra-stress CLI options with those in CQLSH,
>
> {quote}For example, using the new syntax like CQLSH:
> {quote}
>
> cassandra-stress -username foo -password bar
> {quote}and replacing the old syntax:
> {quote}
> cassandra-stress -mode username=foo and password=bar
>
> This will simplify and unify the code base, eliminate code and reduce the
> confusion between similar named classes such as
> org.apache.cassandra.stress.settings.\{Option, OptionsMulti, OptionsSimple}
> and org.apache.commons.cli.{Option, OptionGroup, Options)
>
> Note: documentation will need to be updated as well
--
This message was sent by Atlassian Jira
(v8.20.10#820010)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]