private async Task <PooledSession> BeginTransactionAsync(PooledSession session, TransactionOptions options, CancellationToken cancellationToken) { // While we're creating a transaction, it's as if we're preparing a new session - it's a period of time // where there's already an RPC in flight, and when it completes a session will be available. Interlocked.Increment(ref _inFlightSessionCreationCount); var request = new BeginTransactionRequest { Options = options }; try { var transaction = await session.BeginTransactionAsync(request, Options.Timeout, cancellationToken).ConfigureAwait(false); return(session.WithTransaction(transaction.Id, options.ModeCase)); } finally { Interlocked.Decrement(ref _inFlightSessionCreationCount); } }
partial void Modify_BeginTransactionRequest(ref BeginTransactionRequest request, ref CallSettings settings) => ApplyResourcePrefixHeaderFromSession(ref settings, request.Session);