Skip to content

Commit 03c91a6

Browse files
authored
Merge pull request #136 from Insire/configure_async_methods
Add ConfigureAwait(false) to async method calls, to prevent potential…
2 parents 8b05de7 + 431d934 commit 03c91a6

File tree

2 files changed

+32
-33
lines changed

2 files changed

+32
-33
lines changed

Respawn/Respawner.cs

Lines changed: 28 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -38,11 +38,11 @@ public static async Task<Respawner> CreateAsync(string nameOrConnectionString, R
3838

3939
await using var connection = new SqlConnection(nameOrConnectionString);
4040

41-
await connection.OpenAsync();
41+
await connection.OpenAsync().ConfigureAwait(false);
4242

4343
var respawner = new Respawner(options);
4444

45-
await respawner.BuildDeleteTables(connection);
45+
await respawner.BuildDeleteTables(connection).ConfigureAwait(false);
4646

4747
return respawner;
4848
}
@@ -59,80 +59,79 @@ public static async Task<Respawner> CreateAsync(DbConnection connection, Respawn
5959

6060
var respawner = new Respawner(options);
6161

62-
await respawner.BuildDeleteTables(connection);
62+
await respawner.BuildDeleteTables(connection).ConfigureAwait(false);
6363

6464
return respawner;
6565
}
6666

67-
6867
public virtual async Task ResetAsync(string nameOrConnectionString)
6968
{
7069
await using var connection = new SqlConnection(nameOrConnectionString);
7170

72-
await connection.OpenAsync();
71+
await connection.OpenAsync().ConfigureAwait(false);
7372

74-
await ResetAsync(connection);
73+
await ResetAsync(connection).ConfigureAwait(false);
7574
}
7675

7776
public virtual async Task ResetAsync(DbConnection connection)
7877
{
7978
if (_temporalTables.Any())
8079
{
8180
var turnOffVersioningCommandText = Options.DbAdapter.BuildTurnOffSystemVersioningCommandText(_temporalTables);
82-
await ExecuteAlterSystemVersioningAsync(connection, turnOffVersioningCommandText);
81+
await ExecuteAlterSystemVersioningAsync(connection, turnOffVersioningCommandText).ConfigureAwait(false);
8382
}
8483

8584
try
8685
{
87-
await ExecuteDeleteSqlAsync(connection);
86+
await ExecuteDeleteSqlAsync(connection).ConfigureAwait(false);
8887
}
8988
finally
9089
{
9190
if (_temporalTables.Any())
9291
{
9392
var turnOnVersioningCommandText = Options.DbAdapter.BuildTurnOnSystemVersioningCommandText(_temporalTables);
94-
await ExecuteAlterSystemVersioningAsync(connection, turnOnVersioningCommandText);
93+
await ExecuteAlterSystemVersioningAsync(connection, turnOnVersioningCommandText).ConfigureAwait(false);
9594
}
9695
}
9796
}
9897

9998
private async Task ExecuteAlterSystemVersioningAsync(DbConnection connection, string commandText)
10099
{
101-
await using var tx = await connection.BeginTransactionAsync();
100+
await using var tx = await connection.BeginTransactionAsync().ConfigureAwait(false);
102101
await using var cmd = connection.CreateCommand();
103102

104103
cmd.CommandTimeout = Options.CommandTimeout ?? cmd.CommandTimeout;
105104
cmd.CommandText = commandText;
106105
cmd.Transaction = tx;
107106

108-
await cmd.ExecuteNonQueryAsync();
107+
await cmd.ExecuteNonQueryAsync().ConfigureAwait(false);
109108

110-
await tx.CommitAsync();
109+
await tx.CommitAsync().ConfigureAwait(false);
111110
}
112111

113112
private async Task ExecuteDeleteSqlAsync(DbConnection connection)
114113
{
115-
await using var tx = await connection.BeginTransactionAsync();
114+
await using var tx = await connection.BeginTransactionAsync().ConfigureAwait(false);
116115
await using var cmd = connection.CreateCommand();
117116

118117
cmd.CommandTimeout = Options.CommandTimeout ?? cmd.CommandTimeout;
119118
cmd.CommandText = DeleteSql;
120119
cmd.Transaction = tx;
121120

122-
await cmd.ExecuteNonQueryAsync();
121+
await cmd.ExecuteNonQueryAsync().ConfigureAwait(false);
123122

124123
if (ReseedSql != null)
125124
{
126125
cmd.CommandText = ReseedSql;
127-
await cmd.ExecuteNonQueryAsync();
126+
await cmd.ExecuteNonQueryAsync().ConfigureAwait(false);
128127
}
129128

130-
await tx.CommitAsync();
129+
await tx.CommitAsync().ConfigureAwait(false);
131130
}
132131

133132
private async Task BuildDeleteTables(DbConnection connection)
134133
{
135-
var allTables = await GetAllTables(connection);
134+
var allTables = await GetAllTables(connection).ConfigureAwait(false);
136135

137136
if (!allTables.Any())
138137
{
@@ -142,10 +141,10 @@ private async Task BuildDeleteTables(DbConnection connection)
142141

143142
if (Options.CheckTemporalTables && await Options.DbAdapter.CheckSupportsTemporalTables(connection))
144143
{
145-
_temporalTables = await GetAllTemporalTables(connection);
144+
_temporalTables = await GetAllTemporalTables(connection).ConfigureAwait(false);
146145
}
147146

148-
var allRelationships = await GetRelationships(connection);
147+
var allRelationships = await GetRelationships(connection).ConfigureAwait(false);
149148

150149
var graphBuilder = new GraphBuilder(allTables, allRelationships);
151150

@@ -162,13 +161,13 @@ private async Task<HashSet<Relationship>> GetRelationships(DbConnection connecti
162161

163162
cmd.CommandText = commandText;
164163

165-
await using var reader = await cmd.ExecuteReaderAsync();
164+
await using var reader = await cmd.ExecuteReaderAsync().ConfigureAwait(false);
166165

167-
while (await reader.ReadAsync())
166+
while (await reader.ReadAsync().ConfigureAwait(false))
168167
{
169168
relationships.Add(new Relationship(
170-
new Table(await reader.IsDBNullAsync(0) ? null : reader.GetString(0), reader.GetString(1)),
171-
new Table(await reader.IsDBNullAsync(2) ? null : reader.GetString(2), reader.GetString(3)),
169+
new Table(await reader.IsDBNullAsync(0).ConfigureAwait(false) ? null : reader.GetString(0), reader.GetString(1)),
170+
new Table(await reader.IsDBNullAsync(2).ConfigureAwait(false) ? null : reader.GetString(2), reader.GetString(3)),
172171
reader.GetString(4)));
173172
}
174173

@@ -185,11 +184,11 @@ private async Task<HashSet<Table>> GetAllTables(DbConnection connection)
185184

186185
cmd.CommandText = commandText;
187186

188-
await using var reader = await cmd.ExecuteReaderAsync();
187+
await using var reader = await cmd.ExecuteReaderAsync().ConfigureAwait(false);
189188

190-
while (await reader.ReadAsync())
189+
while (await reader.ReadAsync().ConfigureAwait(false))
191190
{
192-
tables.Add(new Table(await reader.IsDBNullAsync(0) ? null : reader.GetString(0), reader.GetString(1)));
191+
tables.Add(new Table(await reader.IsDBNullAsync(0).ConfigureAwait(false) ? null : reader.GetString(0), reader.GetString(1)));
193192
}
194193

195194
return tables;
@@ -205,11 +204,11 @@ private async Task<IList<TemporalTable>> GetAllTemporalTables(DbConnection conne
205204

206205
cmd.CommandText = commandText;
207206

208-
await using var reader = await cmd.ExecuteReaderAsync();
207+
await using var reader = await cmd.ExecuteReaderAsync().ConfigureAwait(false);
209208

210-
while (await reader.ReadAsync())
209+
while (await reader.ReadAsync().ConfigureAwait(false))
211210
{
212-
tables.Add(new TemporalTable(await reader.IsDBNullAsync(0) ? null : reader.GetString(0), reader.GetString(1), reader.GetString(2), reader.GetString(3)));
211+
tables.Add(new TemporalTable(await reader.IsDBNullAsync(0).ConfigureAwait(false) ? null : reader.GetString(0), reader.GetString(1), reader.GetString(2), reader.GetString(3)));
213212
}
214213

215214
return tables;

Respawn/SqlServerDbAdapter.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -308,8 +308,8 @@ public string BuildTurnOnSystemVersioningCommandText(IEnumerable<TemporalTable>
308308

309309
public async Task<bool> CheckSupportsTemporalTables(DbConnection connection)
310310
{
311-
_compatibilityLevel ??= await GetCompatibilityLevel(connection);
312-
_engineEdition ??= await GetEngineEdition(connection);
311+
_compatibilityLevel ??= await GetCompatibilityLevel(connection).ConfigureAwait(false);
312+
_engineEdition ??= await GetEngineEdition(connection).ConfigureAwait(false);
313313

314314
//Code taken from https://github.com/dotnet/efcore/blob/main/src/EFCore.SqlServer/Scaffolding/Internal/SqlServerDatabaseModelFactory.cs
315315
return _compatibilityLevel >= 130 && _engineEdition != 6;
@@ -320,7 +320,7 @@ private static async Task<int> GetEngineEdition(DbConnection connection)
320320
await using var command = connection.CreateCommand();
321321
command.CommandText = @"
322322
SELECT SERVERPROPERTY('EngineEdition');";
323-
var engineEdition = await command.ExecuteScalarAsync();
323+
var engineEdition = await command.ExecuteScalarAsync().ConfigureAwait(false);
324324
return (int)engineEdition!;
325325
}
326326

@@ -332,7 +332,7 @@ SELECT compatibility_level
332332
FROM sys.databases
333333
WHERE name = '{connection.Database}';";
334334

335-
var result = await command.ExecuteScalarAsync();
335+
var result = await command.ExecuteScalarAsync().ConfigureAwait(false);
336336
return result != null ? Convert.ToByte(result) : (byte)0;
337337
}
338338
}

0 commit comments

Comments
 (0)