-
Notifications
You must be signed in to change notification settings - Fork 31
Labels
bugSomething isn't workingSomething isn't workingtriage doneIssues that are triaged by dev team and are in investigation.Issues that are triaged by dev team and are in investigation.
Description
Is your feature request related to a problem? Please describe.
At interpreter shutdown, an ERROR log is emitted from the cursor finalizer even when the cursor and connection were explicitly closed during normal execution. This is noisy and can be misleading in production diagnostics.
Observed log (at process exit):
mssql\_python::log\@142: Error during cursor cleanup in **del**: Cursor is already closed.
Environment / Context
- OS: Windows 10
- Python: 3.12.6
- mssql-python: 0.9.0
- Pooling: disabled
- Logging:
setup_logging("stdout", logging.DEBUG)
Minimal context (simplified code):
import logging, sys
import mssql_python as DBDRV
DBDRV.setup_logging("stdout", logging.DEBUG)
DBDRV.pooling(enabled=False)
conn = DBDRV.connect("<DSN>")
cur = conn.cursor()
cur.execute("SELECT 1;")
cur.fetchall()
conn.close()
sys.exit(0) # At shutdown, ERROR log above is printedDescribe the solution you'd like
- Make cursor cleanup idempotent in the finalizer path: if the cursor is already closed, treat it as a no-op.
- Downgrade this condition from ERROR to INFO or DEBUG, or suppress it entirely when it occurs during interpreter shutdown.
Describe alternatives you've considered
- Explicitly closing all cursors/connections, clearing references, forcing
gc.collect()→ functional but still prints the ERROR at shutdown. - Lowering global log level to suppress the message → also hides genuinely actionable errors.
- Custom
atexitcleanup → reduces likelihood but does not address the finalizer’s behavior/severity.
Additional context
This request aims to reduce shutdown-time log noise without changing runtime semantics. It should be backward compatible: double-closing a closed cursor becomes a no-op, and logging severity better reflects the benign nature of the condition.
Metadata
Metadata
Assignees
Labels
bugSomething isn't workingSomething isn't workingtriage doneIssues that are triaged by dev team and are in investigation.Issues that are triaged by dev team and are in investigation.