Skip to content

Conversation

@teolzr
Copy link

@teolzr teolzr commented Aug 28, 2025

What do these changes do?

Are there changes in behavior for the user?

Related issue number

Checklist

  • I think the code is well written
  • Unit tests for the changes exist
  • Documentation reflects the changes

teolzr added 2 commits August 28, 2025 16:29
…er command' error

This commit addresses issue aio-libs#468 where concurrent cursor operations on the same
connection could cause race conditions leading to the error:
'DBAPIError: (pyodbc.Error) (HY000, [HY000] [Microsoft][ODBC Driver 18 for SQL Server]Connection is busy with results for another command (0))'

Changes made:
- Added asyncio.Lock to Connection class to synchronize cursor operations
- Protected cursor creation and cleanup with the lock to prevent race conditions
- Enhanced error detection in utils.py to handle 'Connection is busy' errors
- Added comprehensive tests to verify the fix works correctly

The fix ensures that:
1. Cursor operations are properly serialized
2. Cleanup operations don't interfere with new cursor creation
3. The 'Connection is busy' error is properly detected and handled
4. Backward compatibility is maintained

Fixes aio-libs#468
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant