You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Use the Cloud Spanner emulator as the backend (it will abort queries more readily than the real Spanner).
Start a transaction tx1.
Execute a query (like SELECT 1) in tx1 that will cause a session to be opened. Leave that session open.
Outside of any transaction context, execute another single-statement query, i.e. (SELECT 2).
The SELECT 2 query will be aborted (because the emulator only supports one transaction at a time) and will go into an infinite retry loop using (*readWriteTransaction).retry() waiting for tx1 to close.
Close tx1 (rollback or commit).
If the SELECT 2 query has been retrying for long enough, it will have exhausted the limit on session handles and will block forever waiting for more. SELECT 2 will never complete. Also, no more sessions can be opened at this point.
Environment details
Steps to reproduce
SELECT 1) in tx1 that will cause a session to be opened. Leave that session open.SELECT 2).SELECT 2query will be aborted (because the emulator only supports one transaction at a time) and will go into an infinite retry loop using(*readWriteTransaction).retry()waiting for tx1 to close.SELECT 2query has been retrying for long enough, it will have exhausted the limit on session handles and will block forever waiting for more.SELECT 2will never complete. Also, no more sessions can be opened at this point.