Skip to content

fix persistent connections #250

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Feb 12, 2025
Merged

Conversation

timgraham
Copy link
Collaborator

Without autocommit set, BaseDatabaseWrapper.close_if_unusable_or_obsolete() short-circuits early and always closes the connection after each request.

Without autocommit set, BaseDatabaseWrapper.close_if_unusable_or_obsolete()
short-circuits early and always closes the connection after each request.
@timgraham timgraham requested a review from Jibola February 7, 2025 15:32
@timgraham timgraham merged commit f5dbacb into mongodb:main Feb 12, 2025
13 checks passed
@timgraham timgraham deleted the persistent-connections branch February 12, 2025 16:01
@aclark4life
Copy link
Collaborator

@timgraham Setting autocommit does not mean that autocommit occurs, correct?

@timgraham
Copy link
Collaborator Author

Query execution uses Django and MongoDB’s default behavior of autocommit mode. Each query is immediately committed to the database.

Part of the purpose of set_autocommit() is to allow the user to disable transaction management. As far as I know, there is no way to disable transaction management in MongoDB, and this method shouldn't need any adjustments.

@aclark4life
Copy link
Collaborator

I noticed you didn't use the "backend specific" _set_autocommit(). Was that intentional and if so is that because we don't need what's in set_autocommit() ? Assuming _set_autocommit works the same (because it's called by set_autocommit) should we use that instead, because it is potentially less confusing?

@timgraham
Copy link
Collaborator Author

Since the backend has no transaction support, overriding set_autocommit() avoids a lot of uneeded things. It might be that adding support for transactions requires overriding _set_autocommit() instead (it would just be an empty method).

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.

3 participants