Add event subscriber for transaction isolation level #18227
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.
Fix #17947
Tricky one. Take a long running task (e.g. uploading a file). Connection is lost from sql server.
ReconnectWrapper
will handle the disconnect and reconnect. TransactionLevel is correct for the first connection but not for the reconnected one because setTransactionLevel works per connection.This change is probably danger.
setTransactionIsolation(parent::TRANSACTION_READ_COMMITTED);
is the same as calling$this->connect()
from the constructor.Master: A new
DB\Connection
instance will connect immediately to the sql server (triggered bysetTransactionIsolation
.This PR: Connection to sql server is established on demand.
postConnect
will run before the requested query.Don't have a reliable way to reproduce it yet. Keeping a process open with xdebug and kill the sql connection works sometimes ;)