in Amazon.QLDB.Driver/driver/QldbDriver.cs [270:303]
internal T Execute<T>(Func<TransactionExecutor, T> func, RetryPolicy retryPolicy, Action<int> retryAction)
{
this.driverBase.ThrowIfClosed();
bool replaceDeadSession = false;
for (int retryAttempt = 1; true; retryAttempt++)
{
QldbSession session = null;
try
{
if (replaceDeadSession)
{
session = this.StartNewSession();
}
else
{
session = this.GetSession();
}
T returnedValue = session.Execute(func);
this.driverBase.ReleaseSession(session);
return returnedValue;
}
catch (QldbTransactionException qte)
{
replaceDeadSession = this.driverBase.GetShouldReplaceDeadSessionOrThrowIfNoRetry(
qte,
session,
retryAttempt,
retryPolicy,
retryAction);
}
}
}