Improve the way store connections are managed #452
Merged
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.
This makes it much less likely a "stale" store connection that hasn't
actually been checked for liveness gets used. (Long story short, there
could be one more connection than RelStorage instance because of how
these were managed, and that connection would be rarely used, only
when the ZODB connection pool is overgrown. Closing or timing out ZODB
connections wouldn't actually remove that one.)
With psycopg2, restarting a store connection sometimes/often doesn't
have to actually communicate with the database if we know we're not in
a transaction. This could make a OperationalError pop up at an unusual
time.
This doesn't change that, but it does fix it so that resolving the
underlying issue doesn't leave a time bomb waiting.
Gardening changes
Getting an error installing ccache, thinking maybe the old version is gone now?