dbcli / dbcli/mssql-cli

Crash when cancelling a query

Open
#477 0 comments 0 reactions 0 assignees View on GitHub
Dominant language
Python
Stars
1.4k
Forks
191
PR merge metrics
No merged PRs in 30d

Description

# Description
The CLI tool crashes when you cancel a query with CTRL+C.

**Traceback**
```
^CCancelling query...
Query cancelled.
Traceback (most recent call last):
File "/usr/lib/python3.8/runpy.py", line 193, in _run_module_as_main
return _run_code(code, main_globals, None,
File "/usr/lib/python3.8/runpy.py", line 86, in _run_code
exec(code, run_globals)
File "/home/dylan/.local/share/virtualenvs/mssql-7pmLXHeZ/lib/python3.8/site-packages/mssqlcli/main.py", line 122, in
main()
File "/home/dylan/.local/share/virtualenvs/mssql-7pmLXHeZ/lib/python3.8/site-packages/mssqlcli/main.py", line 115, in main
run_cli_with(mssqlcli_options)
File "/home/dylan/.local/share/virtualenvs/mssql-7pmLXHeZ/lib/python3.8/site-packages/mssqlcli/main.py", line 56, in run_cli_with
mssqlcli.run()
File "/home/dylan/.local/share/virtualenvs/mssql-7pmLXHeZ/lib/python3.8/site-packages/mssqlcli/mssql_cli.py", line 445, in run
self.execute_query(text)
File "/home/dylan/.local/share/virtualenvs/mssql-7pmLXHeZ/lib/python3.8/site-packages/mssqlcli/mssql_cli.py", line 372, in execute_query
output = self._execute_interactive_command(text)
File "/home/dylan/.local/share/virtualenvs/mssql-7pmLXHeZ/lib/python3.8/site-packages/mssqlcli/mssql_cli.py", line 367, in _execute_interactive_command
return output
UnboundLocalError: local variable 'output' referenced before assignment
--- Logging error ---
Traceback (most recent call last):
File "/usr/lib/python3.8/logging/handlers.py", line 69, in emit
if self.shouldRollover(record):
File "/usr/lib/python3.8/logging/handlers.py", line 183, in shouldRollover
self.stream = self._open()
File "/usr/lib/python3.8/logging/__init__.py", line 1172, in _open
return open(self.baseFilename, self.mode, encoding=self.encoding)
NameError: name 'open' is not defined
Call stack:
File "/home/dylan/.local/share/virtualenvs/mssql-7pmLXHeZ/lib/python3.8/site-packages/mssqlcli/mssql_cli.py", line 214, in __del__
self.sqltoolsclient.shutdown()
File "/home/dylan/.local/share/virtualenvs/mssql-7pmLXHeZ/lib/python3.8/site-packages/mssqlcli/sqltoolsclient.py", line 91, in shutdown
self.json_rpc_client.shutdown()
File "/home/dylan/.local/share/virtualenvs/mssql-7pmLXHeZ/lib/python3.8/site-packages/mssqlcli/jsonrpc/jsonrpcclient.py", line 183, in shutdown
logger.info('Shutting down Json rpc client.')
Message: 'Shutting down Json rpc client.'
Arguments: ()
--- Logging error ---
Traceback (most recent call last):
File "/usr/lib/python3.8/logging/handlers.py", line 69, in emit
if self.shouldRollover(record):
File "/usr/lib/python3.8/logging/handlers.py", line 183, in shouldRollover
self.stream = self._open()
File "/usr/lib/python3.8/logging/__init__.py", line 1172, in _open
return open(self.baseFilename, self.mode, encoding=self.encoding)
NameError: name 'open' is not defined
Call stack:
File "/home/dylan/.local/share/virtualenvs/mssql-7pmLXHeZ/lib/python3.8/site-packages/mssqlcli/mssql_cli.py", line 214, in __del__
self.sqltoolsclient.shutdown()
File "/home/dylan/.local/share/virtualenvs/mssql-7pmLXHeZ/lib/python3.8/site-packages/mssqlcli/sqltoolsclient.py", line 94, in shutdown
logger.info(u'Shutting down Sql Tools Client Process Id: %s',
Message: 'Shutting down Sql Tools Client Process Id: %s'
Arguments: (44347,)
```

# How to reproduce

1. Perform a query
2. Hit CTRL+C during the execution
3. `Cancelling query...` is printed
4. `Query cancelled.` is printed and the tool crashes.

# Environment

**OS**: Ubuntu 20.04 LTS
**Python version**: Python 3.8.2
**Server version**: 15.0.4023.6 Developer Edition 64 bit

Contributor guide

No contributing guide indexed for this repository

Research direction

Start in mssql_cli.py at execute_query and _execute_interactive_command, then inspect the shutdown paths in sqltoolsclient.py and jsonrpc/jsonrpcclient.py shown in the traceback. Reproduce a running query followed by CTRL+C and verify cancellation completes without an UnboundLocalError, traceback, or logging error.

Written by the indexing model from the issue text.

Assessment

Tech stack
python
Domain
cli, database
Issue type
Bug
Difficulty
2/5
Estimated time
1-3 hours
Activity status
Stale
Clarity
Clearly specified
Newbie friendliness
55/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.