Skip to content

Commit f934150

Browse files
authored
Add missing OperationCanceledException in async code where required
- Update AsyncGenerator to 0.8.2.4 Fixes nhibernate#1672
1 parent e87efc6 commit f934150

30 files changed

+62
-1
lines changed

Tools/packages.config

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
<package id="NUnit.Extension.NUnitV2ResultWriter" version="3.6.0" targetFramework="net461" />
88
<package id="NUnit.Extension.TeamCityEventListener" version="1.0.2" targetFramework="net461" />
99
<package id="NUnit.Extension.VSProjectLoader" version="3.6.0" targetFramework="net461" />
10-
<package id="CSharpAsyncGenerator.CommandLine" version="0.8.2.1" targetFramework="net461" />
10+
<package id="CSharpAsyncGenerator.CommandLine" version="0.8.2.4" targetFramework="net461" />
1111
<package id="vswhere" version="2.1.4" targetFramework="net461" />
1212
<package id="gitreleasemanager" version="0.7.0" targetFramework="net461" />
1313
</packages>

src/NHibernate.Test/Async/Cascade/Circle/MultiPathCircleCascadeTest.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -155,6 +155,7 @@ public async Task MergeEntityWithNonNullableEntityNullAsync()
155155
await (session.MergeAsync(route, cancellationToken));
156156
Assert.Fail("should have thrown an exception");
157157
}
158+
catch (OperationCanceledException) { throw; }
158159
catch (Exception ex)
159160
{
160161
Assert.That(ex, Is.TypeOf(typeof(PropertyValueException)));

src/NHibernate.Test/Async/DebugConnectionProvider.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ public override async Task<DbConnection> GetConnectionAsync(CancellationToken ca
3030
connections.TryAdd(connection, 0);
3131
return connection;
3232
}
33+
catch (OperationCanceledException) { throw; }
3334
catch (Exception e)
3435
{
3536
throw new HibernateException("Could not open connection to: " + ConnectionString, e);

src/NHibernate/Async/AdoNet/AbstractBatcher.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -123,6 +123,7 @@ public async Task<int> ExecuteNonQueryAsync(DbCommand cmd, CancellationToken can
123123
{
124124
return await (cmd.ExecuteNonQueryAsync(cancellationToken)).ConfigureAwait(false);
125125
}
126+
catch (OperationCanceledException) { throw; }
126127
catch (Exception e)
127128
{
128129
e.Data["actual-sql-query"] = cmd.CommandText;
@@ -150,6 +151,7 @@ public virtual async Task<DbDataReader> ExecuteReaderAsync(DbCommand cmd, Cancel
150151
{
151152
reader = await (cmd.ExecuteReaderAsync(cancellationToken)).ConfigureAwait(false);
152153
}
154+
catch (OperationCanceledException) { throw; }
153155
catch (Exception e)
154156
{
155157
e.Data["actual-sql-query"] = cmd.CommandText;

src/NHibernate/Async/Collection/Generic/PersistentGenericIdentifierBag.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -193,6 +193,7 @@ public override async Task PreInsertAsync(ICollectionPersister persister, Cancel
193193
}
194194
}
195195
}
196+
catch (OperationCanceledException) { throw; }
196197
catch (Exception sqle)
197198
{
198199
throw new ADOException("Could not generate idbag row id.", sqle);

src/NHibernate/Async/Connection/DriverConnectionProvider.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ public override async Task<DbConnection> GetConnectionAsync(CancellationToken ca
3939
conn.ConnectionString = ConnectionString;
4040
await (conn.OpenAsync(cancellationToken)).ConfigureAwait(false);
4141
}
42+
catch (OperationCanceledException) { throw; }
4243
catch (Exception)
4344
{
4445
conn.Dispose();

src/NHibernate/Async/Context/ThreadLocalSessionContext.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,13 +38,15 @@ private static async Task CleanupAnyOrphanedSessionAsync(ISessionFactory factory
3838
{
3939
await (orphan.Transaction.RollbackAsync(cancellationToken)).ConfigureAwait(false);
4040
}
41+
catch (OperationCanceledException) { throw; }
4142
catch (Exception ex)
4243
{
4344
log.Debug(ex, "Unable to rollback transaction for orphaned session");
4445
}
4546
}
4647
orphan.Close();
4748
}
49+
catch (OperationCanceledException) { throw; }
4850
catch (Exception ex)
4951
{
5052
log.Debug(ex, "Unable to close orphaned session");

src/NHibernate/Async/Dialect/Lock/SelectLockingStrategy.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,7 @@ public async Task LockAsync(object id, object version, object obj, ISessionImple
6464
session.Batcher.CloseCommand(st, rs);
6565
}
6666
}
67+
catch (OperationCanceledException) { throw; }
6768
catch (HibernateException)
6869
{
6970
// Do not call Convert on HibernateExceptions

src/NHibernate/Async/Driver/NDataReader.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,7 @@ public static async Task<NDataReader> CreateAsync(DbDataReader reader, bool isMi
6060

6161
dataReader.results = resultList.ToArray();
6262
}
63+
catch (OperationCanceledException) { throw; }
6364
catch (Exception e)
6465
{
6566
throw new ADOException("There was a problem converting an DbDataReader to NDataReader", e);

src/NHibernate/Async/Engine/Query/NativeSQLQueryPlan.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,7 @@ public async Task<int> PerformExecuteUpdateAsync(QueryParameters queryParameters
9696
}
9797
}
9898
}
99+
catch (OperationCanceledException) { throw; }
99100
catch (HibernateException)
100101
{
101102
throw;

src/NHibernate/Async/Hql/Ast/ANTLR/Exec/AbstractStatementExecutor.cs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -114,6 +114,7 @@ protected virtual async Task DropTemporaryTableIfNecessaryAsync(IQueryable persi
114114
ps = await (session.Batcher.PrepareCommandAsync(CommandType.Text, commandText, Array.Empty<SqlType>(), cancellationToken)).ConfigureAwait(false);
115115
await (session.Batcher.ExecuteNonQueryAsync(ps, cancellationToken)).ConfigureAwait(false);
116116
}
117+
catch (OperationCanceledException) { throw; }
117118
catch (Exception t)
118119
{
119120
log.Warn(t, "unable to cleanup temporary id table after use [{0}]", t);
@@ -150,6 +151,7 @@ public async Task DoWorkAsync(DbConnection connection, DbTransaction transaction
150151
await (stmnt.ExecuteNonQueryAsync(cancellationToken)).ConfigureAwait(false);
151152
session.Factory.Settings.SqlStatementLogger.LogCommand(stmnt, FormatStyle.Ddl);
152153
}
154+
catch (OperationCanceledException) { throw; }
153155
catch (Exception t)
154156
{
155157
log.Debug(t, "unable to create temporary id table [{0}]", t.Message);
@@ -186,6 +188,7 @@ public async Task DoWorkAsync(DbConnection connection, DbTransaction transaction
186188
await (stmnt.ExecuteNonQueryAsync(cancellationToken)).ConfigureAwait(false);
187189
session.Factory.Settings.SqlStatementLogger.LogCommand(stmnt, FormatStyle.Ddl);
188190
}
191+
catch (OperationCanceledException) { throw; }
189192
catch (Exception t)
190193
{
191194
log.Warn("unable to drop temporary id table after use [{0}]", t.Message);

src/NHibernate/Async/Id/Enhanced/TableGenerator.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -101,6 +101,7 @@ public override async Task<object> DoWorkInCurrentTransactionAsync(ISessionImple
101101
result = Convert.ToInt64(selectedValue);
102102
}
103103
}
104+
catch (OperationCanceledException) { throw; }
104105
catch (Exception ex)
105106
{
106107
log.Error(ex, "Unable to read or initialize hi value in {0}", TableName);
@@ -124,6 +125,7 @@ public override async Task<object> DoWorkInCurrentTransactionAsync(ISessionImple
124125
updatedRows = await (updateCmd.ExecuteNonQueryAsync(cancellationToken)).ConfigureAwait(false);
125126
}
126127
}
128+
catch (OperationCanceledException) { throw; }
127129
catch (Exception ex)
128130
{
129131
log.Error(ex, "Unable to update hi value in {0}", TableName);

src/NHibernate/Async/Id/Enhanced/TableStructure.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,7 @@ public override async Task<object> DoWorkInCurrentTransactionAsync(ISessionImple
5555
}
5656
result = Convert.ToInt64(selectedValue);
5757
}
58+
catch (OperationCanceledException) { throw; }
5859
catch (Exception sqle)
5960
{
6061
Log.Error(sqle, "could not read a hi value");
@@ -76,6 +77,7 @@ public override async Task<object> DoWorkInCurrentTransactionAsync(ISessionImple
7677
updatedRows = await (updateCmd.ExecuteNonQueryAsync(cancellationToken)).ConfigureAwait(false);
7778
}
7879
}
80+
catch (OperationCanceledException) { throw; }
7981
catch (Exception sqle)
8082
{
8183
Log.Error(sqle, "could not update hi value in: {0}", _tableName);

src/NHibernate/Async/Id/IdentifierGeneratorFactory.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,7 @@ public static async Task<object> GetAsync(DbDataReader rs, IType type, ISessionI
7272
{
7373
return await (type.NullSafeGetAsync(rs, rs.GetName(0), session, null, cancellationToken)).ConfigureAwait(false);
7474
}
75+
catch (OperationCanceledException) { throw; }
7576
catch (Exception e)
7677
{
7778
throw new IdentifierGenerationException("could not retrieve identifier value", e);

src/NHibernate/Async/Id/NativeGuidGenerator.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,7 @@ public async Task<object> GenerateAsync(ISessionImplementor session, object obj,
5656
session.Batcher.CloseCommand(st, reader);
5757
}
5858
}
59+
catch (OperationCanceledException) { throw; }
5960
catch (Exception sqle)
6061
{
6162
throw ADOExceptionHelper.Convert(session.Factory.SQLExceptionConverter, sqle, "could not retrieve GUID", sql);

src/NHibernate/Async/Id/TableGenerator.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,7 @@ public override async Task<object> DoWorkInCurrentTransactionAsync(ISessionImple
8787
}
8888
result = Convert.ToInt64(columnType.Get(rs, 0, session));
8989
}
90+
catch (OperationCanceledException) { throw; }
9091
catch (Exception e)
9192
{
9293
log.Error(e, "could not read a hi value");
@@ -114,6 +115,7 @@ public override async Task<object> DoWorkInCurrentTransactionAsync(ISessionImple
114115

115116
rows = await (ups.ExecuteNonQueryAsync(cancellationToken)).ConfigureAwait(false);
116117
}
118+
catch (OperationCanceledException) { throw; }
117119
catch (Exception e)
118120
{
119121
log.Error(e, "could not update hi value in: {0}", tableName);

src/NHibernate/Async/Impl/MultiCriteriaImpl.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -205,6 +205,7 @@ private async Task GetResultsFromDatabaseAsync(IList results, CancellationToken
205205
}
206206
}
207207
}
208+
catch (OperationCanceledException) { throw; }
208209
catch (Exception sqle)
209210
{
210211
log.Error(sqle, "Failed to execute multi criteria: [{0}]", resultSetsCommand.Sql);

src/NHibernate/Async/Impl/MultiQueryImpl.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -173,6 +173,7 @@ protected async Task<List<object>> DoListAsync(CancellationToken cancellationTok
173173
}
174174
}
175175
}
176+
catch (OperationCanceledException) { throw; }
176177
catch (Exception sqle)
177178
{
178179
log.Error(sqle, "Failed to execute multi query: [{0}]", resultSetsCommand.Sql);

src/NHibernate/Async/Impl/SessionImpl.cs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -268,6 +268,7 @@ private async Task ListAsync(IQueryExpression queryExpression, QueryParameters q
268268
await (plan.PerformListAsync(queryParameters, this, results, cancellationToken)).ConfigureAwait(false);
269269
success = true;
270270
}
271+
catch (OperationCanceledException) { throw; }
271272
catch (HibernateException)
272273
{
273274
// Do not call Convert on HibernateExceptions
@@ -1065,6 +1066,7 @@ private async Task FilterAsync(object collection, string filter, QueryParameters
10651066
await (plan.PerformListAsync(queryParameters, this, results, cancellationToken)).ConfigureAwait(false);
10661067
success = true;
10671068
}
1069+
catch (OperationCanceledException) { throw; }
10681070
catch (HibernateException)
10691071
{
10701072
// Do not call Convert on HibernateExceptions
@@ -1155,6 +1157,7 @@ public override async Task ListAsync(CriteriaImpl criteria, IList results, Cance
11551157
}
11561158
success = true;
11571159
}
1160+
catch (OperationCanceledException) { throw; }
11581161
catch (HibernateException)
11591162
{
11601163
// Do not call Convert on HibernateExceptions

src/NHibernate/Async/Impl/StatelessSessionImpl.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -104,6 +104,7 @@ public override async Task ListAsync(IQueryExpression queryExpression, QueryPara
104104
await (plan.PerformListAsync(queryParameters, this, results, cancellationToken)).ConfigureAwait(false);
105105
success = true;
106106
}
107+
catch (OperationCanceledException) { throw; }
107108
catch (HibernateException)
108109
{
109110
// Do not call Convert on HibernateExceptions
@@ -145,6 +146,7 @@ public override async Task ListAsync(CriteriaImpl criteria, IList results, Cance
145146
}
146147
success = true;
147148
}
149+
catch (OperationCanceledException) { throw; }
148150
catch (HibernateException)
149151
{
150152
// Do not call Convert on HibernateExceptions

src/NHibernate/Async/Loader/Loader.cs

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -116,6 +116,7 @@ protected async Task<object> LoadSingleRowAsync(DbDataReader resultSet, ISession
116116
await (GetRowFromResultSetAsync(resultSet, session, queryParameters, GetLockModes(queryParameters.LockModes), null,
117117
hydratedObjects, new EntityKey[entitySpan], returnProxies, cancellationToken)).ConfigureAwait(false);
118118
}
119+
catch (OperationCanceledException) { throw; }
119120
catch (HibernateException)
120121
{
121122
throw; // Don't call Convert on HibernateExceptions
@@ -298,6 +299,7 @@ private async Task<IList> DoQueryAsync(ISessionImplementor session, QueryParamet
298299
Log.Debug("done processing result set ({0} rows)", count);
299300
}
300301
}
302+
catch (OperationCanceledException) { throw; }
301303
catch (Exception e)
302304
{
303305
e.Data["actual-sql-query"] = st.CommandText;
@@ -812,6 +814,7 @@ protected internal virtual async Task<DbCommand> PrepareQueryCommandAsync(QueryP
812814
driver.RemoveUnusedCommandParameters(command, sqlString);
813815
driver.ExpandQueryParameters(command, sqlString, sqlCommand.ParameterTypes);
814816
}
817+
catch (OperationCanceledException) { throw; }
815818
catch (HibernateException)
816819
{
817820
session.Batcher.CloseCommand(command, null);
@@ -893,6 +896,7 @@ protected async Task<DbDataReader> GetResultSetAsync(
893896
}
894897
return rs;
895898
}
899+
catch (OperationCanceledException) { throw; }
896900
catch (Exception sqle)
897901
{
898902
ADOExceptionReporter.LogExceptions(sqle);
@@ -922,6 +926,7 @@ protected async Task<IList> LoadEntityAsync(ISessionImplementor session, object
922926
optionalIdentifier);
923927
result = await (DoQueryAndInitializeNonLazyCollectionsAsync(session, qp, false, cancellationToken)).ConfigureAwait(false);
924928
}
929+
catch (OperationCanceledException) { throw; }
925930
catch (HibernateException)
926931
{
927932
throw;
@@ -955,6 +960,7 @@ protected async Task<IList> LoadEntityAsync(ISessionImplementor session, object
955960
new QueryParameters(new IType[] { keyType, indexType },
956961
new object[] { key, index }), false, cancellationToken)).ConfigureAwait(false);
957962
}
963+
catch (OperationCanceledException) { throw; }
958964
catch (Exception sqle)
959965
{
960966
throw ADOExceptionHelper.Convert(_factory.SQLExceptionConverter, sqle, "could not collection element by index",
@@ -989,6 +995,7 @@ protected internal async Task<IList> LoadEntityBatchAsync(ISessionImplementor se
989995
new QueryParameters(types, ids, optionalObject, optionalEntityName,
990996
optionalId), false, cancellationToken)).ConfigureAwait(false);
991997
}
998+
catch (OperationCanceledException) { throw; }
992999
catch (HibernateException)
9931000
{
9941001
throw;
@@ -1021,6 +1028,7 @@ public async Task LoadCollectionAsync(ISessionImplementor session, object id, IT
10211028
{
10221029
await (DoQueryAndInitializeNonLazyCollectionsAsync(session, new QueryParameters(new IType[] { type }, ids, ids), true, cancellationToken)).ConfigureAwait(false);
10231030
}
1031+
catch (OperationCanceledException) { throw; }
10241032
catch (HibernateException)
10251033
{
10261034
// Do not call Convert on HibernateExceptions
@@ -1053,6 +1061,7 @@ public async Task LoadCollectionBatchAsync(ISessionImplementor session, object[]
10531061
{
10541062
await (DoQueryAndInitializeNonLazyCollectionsAsync(session, new QueryParameters(idTypes, ids, ids), true, cancellationToken)).ConfigureAwait(false);
10551063
}
1064+
catch (OperationCanceledException) { throw; }
10561065
catch (HibernateException)
10571066
{
10581067
// Do not call Convert on HibernateExceptions
@@ -1082,6 +1091,7 @@ protected async Task LoadCollectionSubselectAsync(ISessionImplementor session, o
10821091
new QueryParameters(parameterTypes, parameterValues, namedParameters, ids),
10831092
true, cancellationToken)).ConfigureAwait(false);
10841093
}
1094+
catch (OperationCanceledException) { throw; }
10851095
catch (HibernateException)
10861096
{
10871097
// Do not call Convert on HibernateExceptions
@@ -1283,6 +1293,7 @@ protected async Task<IList> DoListAsync(ISessionImplementor session, QueryParame
12831293
{
12841294
result = await (DoQueryAndInitializeNonLazyCollectionsAsync(session, queryParameters, true, forcedResultTransformer, cancellationToken)).ConfigureAwait(false);
12851295
}
1296+
catch (OperationCanceledException) { throw; }
12861297
catch (HibernateException)
12871298
{
12881299
// Do not call Convert on HibernateExceptions

src/NHibernate/Async/Persister/Collection/AbstractCollectionPersister.cs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -217,6 +217,7 @@ public async Task RemoveAsync(object id, ISessionImplementor session, Cancellati
217217
expectation.VerifyOutcomeNonBatched(await (session.Batcher.ExecuteNonQueryAsync(st, cancellationToken)).ConfigureAwait(false), st);
218218
}
219219
}
220+
catch (OperationCanceledException) { throw; }
220221
catch (Exception e)
221222
{
222223
if (useBatch)
@@ -376,6 +377,7 @@ public async Task DeleteRowsAsync(IPersistentCollection collection, object id, I
376377
}
377378
count++;
378379
}
380+
catch (OperationCanceledException) { throw; }
379381
catch (Exception e)
380382
{
381383
if (useBatch)
@@ -517,6 +519,7 @@ protected async Task<object> PerformInsertAsync(object ownerId, IPersistentColle
517519
expectation.VerifyOutcomeNonBatched(await (session.Batcher.ExecuteNonQueryAsync(st, cancellationToken)).ConfigureAwait(false), st);
518520
}
519521
}
522+
catch (OperationCanceledException) { throw; }
520523
catch (Exception e)
521524
{
522525
if (useBatch)

src/NHibernate/Async/Persister/Collection/BasicCollectionPersister.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,7 @@ protected override async Task<int> DoUpdateRowsAsync(object id, IPersistentColle
9898
expectation.VerifyOutcomeNonBatched(await (session.Batcher.ExecuteNonQueryAsync(st, cancellationToken)).ConfigureAwait(false), st);
9999
}
100100
}
101+
catch (OperationCanceledException) { throw; }
101102
catch (Exception e)
102103
{
103104
if (useBatch)

src/NHibernate/Async/Persister/Collection/OneToManyPersister.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,7 @@ protected override async Task<int> DoUpdateRowsAsync(object id, IPersistentColle
8181
deleteExpectation.VerifyOutcomeNonBatched(await (session.Batcher.ExecuteNonQueryAsync(st, cancellationToken)).ConfigureAwait(false), st);
8282
}
8383
}
84+
catch (OperationCanceledException) { throw; }
8485
catch (Exception e)
8586
{
8687
if (useBatch)
@@ -146,6 +147,7 @@ protected override async Task<int> DoUpdateRowsAsync(object id, IPersistentColle
146147
insertExpectation.VerifyOutcomeNonBatched(await (session.Batcher.ExecuteNonQueryAsync(st, cancellationToken)).ConfigureAwait(false), st);
147148
}
148149
}
150+
catch (OperationCanceledException) { throw; }
149151
catch (Exception e)
150152
{
151153
if (useBatch)

0 commit comments

Comments
 (0)