[ 
https://issues.apache.org/jira/browse/CASSANDRA-18661?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17799529#comment-17799529
 ] 

Brad Schoening commented on CASSANDRA-18661:
--------------------------------------------

Claude,

Great suggestions.  In case you are not aware of the history of (driver) mode, 
Cassandra used to support thrift and there were three "modes": thrift, cql3 
(DataStax Java CQL driver), and simplenative (the SimpleClient class bundled 
with the server). 

Thrift has been removed from the code base and CASSANDRA-18529 defaulted 
cassandra-stress to use CQL, which is the normal Java driver.  The simple 
native client is an esoteric use case used only by contributors for testing as 
Brandon explained it.  Simple native would be best unseen by ordinary users of 
cassandra-stress and is just confusing to them. 

the current usage is something like:
{noformat}
Usage: -mode [prepared] [compression=?] [port=?] [user=?] [password=?] 
[auth-provider=?] [maxPending=?] [connectionsPerHost=?] [protocolVersion=?] 
[simplenative]{noformat}
and would be more understandable using the standard format of:
{noformat}
Usage: --user u --password p --port n --auth-provider c --prepared 
--compression n --maxPending n --connectionsPerHost n --protocolVersion n 
--simplenative{noformat}
Many complex use case of cassandra-stress have transitioned to NoSQLBench. 
Breaking changes to the command line arguments might be acceptable to improve 
the simplicity of using cassandra-stress for the simple use cases where it 
works best.  CASSANDRA-18529 had already introduced breaking changes.

> 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: commits-unsubscr...@cassandra.apache.org
For additional commands, e-mail: commits-h...@cassandra.apache.org

Reply via email to