This repository has been archived by the owner on Nov 30, 2022. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 16
Reduce Idle Connections from Health Checks [#1102] #1107
Merged
Merged
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
…are a single engine across the application, including for the health checks. Currently we're using the default pool_size and max_overflow.
sanders41
approved these changes
Aug 17, 2022
thanks for merging @sanders41 ⭐ |
seanpreston
reviewed
Aug 18, 2022
yield db | ||
finally: | ||
db.close() | ||
|
||
|
||
def _get_session() -> Session: | ||
"""Gets a database session""" | ||
global _engine # pylint: disable=W0603 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Good solution. Is there a limit to how many connections one engine can make?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
yes, I noted this in the description, we're currently using the defaults, so I believe the pool_size
is 5, and there's a default max_overflow
of 10, so you take the sum - 15. This is something that we'll probably want to make configurable at some point.
sanders41
pushed a commit
that referenced
this pull request
Sep 22, 2022
* Don't create a new engine as part of running the health checks and share a single engine across the application, including for the health checks. Currently we're using the default pool_size and max_overflow. * Update changelog. * Fix that health checks are still supposed to run, even if the database is disabled. * Need to yield instead - 'generator' object has no attribute 'query'
This was referenced Sep 30, 2022
Sign up for free
to subscribe to this conversation on GitHub.
Already have an account?
Sign in.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Purpose
The health check endpoints are opening up too many connections against the fidesops application database. Shoutout to @RobertKeyser and @sanders41 for spotting.
Changes
get_db_session
when we go to get a single connection, instead of creating a new engine. (Note we are currently using the defaultpool_size
andmax_overflow
parameters. This is something that may need to be configurable in the future). This is used for all our API endpoints.Background
Checklist
CHANGELOG.md
fileCHANGELOG.md
file is being appended toUnreleased
section in an appropriate category. Add a new category from the list at the top of the file if the needed one isn't already there.Run Unsafe PR Checks
label has been applied, and checks have passed, if this PR touches any external servicesTicket
Fixes #1102