fix: Ensure Postgres queries are committed or autocommit is used #5039
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.
What this PR does / why we need it:
We are using
psycopg3in case we use Postgres for the online store. If you create connections withpsycopg3using a context manager (i.e. awith ...block), it will automatically commit the transaction once you exit the context. However, infeastwe are manually creating (and in the case of connection pools, putting) connections, so we need to ensure that we also explicitly callcommitafter firing queries to the database.The
commitstatements were missing for (async) read methods of thePostgresOnlineStoreand theteardownmethod. For the read statements, this wasn't an issue as we just do aSELECT. However, it does add warning statements and quite a bit of latency as transactions needed to be rolled back.Hence, for those read methods, I introduced an optional
autocommitto the_get_connand_get_conn_asyncmethods that defaults toFalse. We are setting it toTruein our read methods, so that prevents us from having to callcommitand further optimizes the performance. In my local tests,online_read_asyncperformance improved by 20-30% when calling explicitly commit, and 40-70% when enabling autocommit (depending on feature view).Which issue(s) this PR fixes:
Fixes #5038