(cqlsh) Add request timeout option to cqlsh patch by Paulo Motta; reviewed by Benjamin Lerer for CASSANDRA-10686
Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/c7f00329 Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/c7f00329 Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/c7f00329 Branch: refs/heads/cassandra-3.0 Commit: c7f0032912798b5e53b64d8391e3e3d7e4121165 Parents: 7550ebd Author: Paulo Motta <pauloricard...@gmail.com> Authored: Wed Jan 13 14:48:04 2016 +0100 Committer: Benjamin Lerer <b.le...@gmail.com> Committed: Wed Jan 13 14:48:04 2016 +0100 ---------------------------------------------------------------------- CHANGES.txt | 1 + bin/cqlsh.py | 22 +++++++++++++--------- 2 files changed, 14 insertions(+), 9 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cassandra/blob/c7f00329/CHANGES.txt ---------------------------------------------------------------------- diff --git a/CHANGES.txt b/CHANGES.txt index 21c5b27..1554cf5 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -16,6 +16,7 @@ * Disable reloading of GossipingPropertyFileSnitch (CASSANDRA-9474) * Verify tables in pseudo-system keyspaces at startup (CASSANDRA-10761) Merged from 2.1: + * (cqlsh) Add request timeout option to cqlsh (CASSANDRA-10686) * Avoid AssertionError while submitting hint with LWT (CASSANDRA-10477) * If CompactionMetadata is not in stats file, use index summary instead (CASSANDRA-10676) * Retry sending gossip syn multiple times during shadow round (CASSANDRA-8072) http://git-wip-us.apache.org/repos/asf/cassandra/blob/c7f00329/bin/cqlsh.py ---------------------------------------------------------------------- diff --git a/bin/cqlsh.py b/bin/cqlsh.py index be2ad46..c03a3c2 100644 --- a/bin/cqlsh.py +++ b/bin/cqlsh.py @@ -165,6 +165,7 @@ DEFAULT_PORT = 9042 DEFAULT_CQLVER = '3.3.1' DEFAULT_PROTOCOL_VERSION = 4 DEFAULT_CONNECT_TIMEOUT_SECONDS = 5 +DEFAULT_REQUEST_TIMEOUT_SECONDS = 10 DEFAULT_FLOAT_PRECISION = 5 DEFAULT_MAX_TRACE_WAIT = 10 @@ -209,6 +210,8 @@ parser.add_option('--cqlversion', default=DEFAULT_CQLVER, parser.add_option("-e", "--execute", help='Execute the statement and quit.') parser.add_option("--connect-timeout", default=DEFAULT_CONNECT_TIMEOUT_SECONDS, dest='connect_timeout', help='Specify the connection timeout in seconds (default: %default seconds).') +parser.add_option("--request-timeout", default=DEFAULT_REQUEST_TIMEOUT_SECONDS, dest='request_timeout', + help='Specify the default request timeout in seconds (default: %default seconds).') parser.add_option("-t", "--tty", action='store_true', dest='tty', help='Force tty mode (command prompt).') @@ -657,7 +660,7 @@ class Shell(cmd.Cmd): max_trace_wait=DEFAULT_MAX_TRACE_WAIT, ssl=False, single_statement=None, - client_timeout=10, + request_timeout=DEFAULT_REQUEST_TIMEOUT_SECONDS, protocol_version=DEFAULT_PROTOCOL_VERSION, connect_timeout=DEFAULT_CONNECT_TIMEOUT_SECONDS): cmd.Cmd.__init__(self, completekey=completekey) @@ -707,7 +710,7 @@ class Shell(cmd.Cmd): if not self.conn.metadata.keyspaces: self.refresh_schema_metadata_best_effort() - self.session.default_timeout = client_timeout + self.session.default_timeout = request_timeout self.session.row_factory = ordered_dict_factory self.session.default_consistency_level = cassandra.ConsistencyLevel.ONE self.get_connection_versions() @@ -2324,6 +2327,7 @@ def read_options(cmdlineargs, environment): optvalues.tty = option_with_default(configs.getboolean, 'ui', 'tty', sys.stdin.isatty()) optvalues.cqlversion = option_with_default(configs.get, 'cql', 'version', DEFAULT_CQLVER) optvalues.connect_timeout = option_with_default(configs.getint, 'connection', 'timeout', DEFAULT_CONNECT_TIMEOUT_SECONDS) + optvalues.request_timeout = option_with_default(configs.getint, 'connection', 'request_timeout', DEFAULT_REQUEST_TIMEOUT_SECONDS) optvalues.execute = None (options, arguments) = parser.parse_args(cmdlineargs, values=optvalues) @@ -2334,14 +2338,14 @@ def read_options(cmdlineargs, environment): try: options.connect_timeout = int(options.connect_timeout) except ValueError: - parser.error('"%s" is not a valid timeout.' % (options.connect_timeout,)) + parser.error('"%s" is not a valid connect timeout.' % (options.connect_timeout,)) options.connect_timeout = DEFAULT_CONNECT_TIMEOUT_SECONDS - options.client_timeout = option_with_default(configs.get, 'connection', 'client_timeout', '10') - if options.client_timeout.lower() == 'none': - options.client_timeout = None - else: - options.client_timeout = int(options.client_timeout) + try: + options.request_timeout = int(options.request_timeout) + except ValueError: + parser.error('"%s" is not a valid request timeout.' % (options.request_timeout,)) + options.request_timeout = DEFAULT_REQUEST_TIMEOUT_SECONDS hostname = environment.get('CQLSH_HOST', hostname) port = environment.get('CQLSH_PORT', port) @@ -2451,7 +2455,7 @@ def main(options, hostname, port): max_trace_wait=options.max_trace_wait, ssl=options.ssl, single_statement=options.execute, - client_timeout=options.client_timeout, + request_timeout=options.request_timeout, connect_timeout=options.connect_timeout, encoding=options.encoding) except KeyboardInterrupt: