From 48be81301f6be7002d54ef60edde522207580800 Mon Sep 17 00:00:00 2001 From: Alexander Zaytsev Date: Tue, 8 May 2018 10:06:42 +1200 Subject: [PATCH 1/2] Update AsyncGenerator to 0.8.2.2 Code regenerated to add missing OperationCanceledException where required. Fixes #1674 --- Tools/packages.config | 2 +- .../Cascade/Circle/MultiPathCircleCascadeTest.cs | 1 + src/NHibernate.Test/Async/DebugConnectionProvider.cs | 1 + .../MsSQL/SnapshotIsolationUpdateConflictTest.cs | 11 ++++++----- src/NHibernate/Async/AdoNet/AbstractBatcher.cs | 2 ++ .../Generic/PersistentGenericIdentifierBag.cs | 1 + .../Async/Connection/DriverConnectionProvider.cs | 1 + .../Async/Context/ThreadLocalSessionContext.cs | 2 ++ .../Async/Dialect/Lock/SelectLockingStrategy.cs | 1 + src/NHibernate/Async/Driver/NDataReader.cs | 1 + .../Async/Engine/Query/NativeSQLQueryPlan.cs | 1 + .../Hql/Ast/ANTLR/Exec/AbstractStatementExecutor.cs | 3 +++ src/NHibernate/Async/Id/Enhanced/TableGenerator.cs | 2 ++ src/NHibernate/Async/Id/Enhanced/TableStructure.cs | 2 ++ src/NHibernate/Async/Id/IdentifierGeneratorFactory.cs | 1 + src/NHibernate/Async/Id/NativeGuidGenerator.cs | 1 + src/NHibernate/Async/Id/TableGenerator.cs | 2 ++ src/NHibernate/Async/Impl/MultiCriteriaImpl.cs | 1 + src/NHibernate/Async/Impl/MultiQueryImpl.cs | 1 + src/NHibernate/Async/Impl/SessionImpl.cs | 3 +++ src/NHibernate/Async/Impl/StatelessSessionImpl.cs | 2 ++ src/NHibernate/Async/Loader/Loader.cs | 11 +++++++++++ .../Collection/AbstractCollectionPersister.cs | 3 +++ .../Persister/Collection/BasicCollectionPersister.cs | 1 + .../Async/Persister/Collection/OneToManyPersister.cs | 2 ++ .../Async/Persister/Entity/AbstractEntityPersister.cs | 4 ++++ src/NHibernate/Async/Tool/hbm2ddl/SchemaExport.cs | 2 ++ src/NHibernate/Async/Tool/hbm2ddl/SchemaUpdate.cs | 4 ++++ src/NHibernate/Async/Tool/hbm2ddl/SchemaValidator.cs | 3 +++ src/NHibernate/Async/Transaction/AdoTransaction.cs | 1 + src/NHibernate/Async/Type/EntityType.cs | 1 + 31 files changed, 68 insertions(+), 6 deletions(-) diff --git a/Tools/packages.config b/Tools/packages.config index 5d0a1029d51..8ceaaa9274d 100644 --- a/Tools/packages.config +++ b/Tools/packages.config @@ -7,7 +7,7 @@ - + diff --git a/src/NHibernate.Test/Async/Cascade/Circle/MultiPathCircleCascadeTest.cs b/src/NHibernate.Test/Async/Cascade/Circle/MultiPathCircleCascadeTest.cs index 83876eb50c7..b753abf1b54 100644 --- a/src/NHibernate.Test/Async/Cascade/Circle/MultiPathCircleCascadeTest.cs +++ b/src/NHibernate.Test/Async/Cascade/Circle/MultiPathCircleCascadeTest.cs @@ -155,6 +155,7 @@ public async Task MergeEntityWithNonNullableEntityNullAsync() await (session.MergeAsync(route, cancellationToken)); Assert.Fail("should have thrown an exception"); } + catch (OperationCanceledException) { throw; } catch (Exception ex) { Assert.That(ex, Is.TypeOf(typeof(PropertyValueException))); diff --git a/src/NHibernate.Test/Async/DebugConnectionProvider.cs b/src/NHibernate.Test/Async/DebugConnectionProvider.cs index c2a626f7475..39f4ee9d6bf 100644 --- a/src/NHibernate.Test/Async/DebugConnectionProvider.cs +++ b/src/NHibernate.Test/Async/DebugConnectionProvider.cs @@ -30,6 +30,7 @@ public override async Task GetConnectionAsync(CancellationToken ca connections.TryAdd(connection, 0); return connection; } + catch (OperationCanceledException) { throw; } catch (Exception e) { throw new HibernateException("Could not open connection to: " + ConnectionString, e); diff --git a/src/NHibernate.Test/Async/NHSpecificTest/NH1553/MsSQL/SnapshotIsolationUpdateConflictTest.cs b/src/NHibernate.Test/Async/NHSpecificTest/NH1553/MsSQL/SnapshotIsolationUpdateConflictTest.cs index 2ce5e39ce00..b39fda2308a 100644 --- a/src/NHibernate.Test/Async/NHSpecificTest/NH1553/MsSQL/SnapshotIsolationUpdateConflictTest.cs +++ b/src/NHibernate.Test/Async/NHSpecificTest/NH1553/MsSQL/SnapshotIsolationUpdateConflictTest.cs @@ -77,16 +77,17 @@ private void SavePerson(Person p) /// Tests, that NHibernate detects the update conflict and returns a StaleObjectStateException as expected. /// This behaviour is part of the standard NHibernate feature set. /// + /// A cancellation token that can be used to cancel the work [Test] - public async Task UpdateConflictDetectedByNHAsync() + public async Task UpdateConflictDetectedByNHAsync(CancellationToken cancellationToken = default(CancellationToken)) { - Person p1 = await (LoadPersonAsync()); - Person p2 = await (LoadPersonAsync()); + Person p1 = await (LoadPersonAsync(cancellationToken)); + Person p2 = await (LoadPersonAsync(cancellationToken)); p1.IdentificationNumber++; p2.IdentificationNumber += 2; - await (SavePersonAsync(p1)); + await (SavePersonAsync(p1, cancellationToken)); Assert.That(p1.Version, Is.EqualTo(person.Version + 1)); var expectedException = Sfi.Settings.IsBatchVersionedDataEnabled @@ -95,7 +96,7 @@ public async Task UpdateConflictDetectedByNHAsync() .And.Property("EntityName").EqualTo(typeof(Person).FullName) .And.Property("Identifier").EqualTo(p2.Id); - Assert.That(() => SavePersonAsync(p2), expectedException); + Assert.That(() => SavePersonAsync(p2, cancellationToken), expectedException); } /// diff --git a/src/NHibernate/Async/AdoNet/AbstractBatcher.cs b/src/NHibernate/Async/AdoNet/AbstractBatcher.cs index af6e471c854..9ac50481b66 100644 --- a/src/NHibernate/Async/AdoNet/AbstractBatcher.cs +++ b/src/NHibernate/Async/AdoNet/AbstractBatcher.cs @@ -123,6 +123,7 @@ public async Task ExecuteNonQueryAsync(DbCommand cmd, CancellationToken can { return await (cmd.ExecuteNonQueryAsync(cancellationToken)).ConfigureAwait(false); } + catch (OperationCanceledException) { throw; } catch (Exception e) { e.Data["actual-sql-query"] = cmd.CommandText; @@ -150,6 +151,7 @@ public virtual async Task ExecuteReaderAsync(DbCommand cmd, Cancel { reader = await (cmd.ExecuteReaderAsync(cancellationToken)).ConfigureAwait(false); } + catch (OperationCanceledException) { throw; } catch (Exception e) { e.Data["actual-sql-query"] = cmd.CommandText; diff --git a/src/NHibernate/Async/Collection/Generic/PersistentGenericIdentifierBag.cs b/src/NHibernate/Async/Collection/Generic/PersistentGenericIdentifierBag.cs index 99eac211529..6573a8f8509 100644 --- a/src/NHibernate/Async/Collection/Generic/PersistentGenericIdentifierBag.cs +++ b/src/NHibernate/Async/Collection/Generic/PersistentGenericIdentifierBag.cs @@ -193,6 +193,7 @@ public override async Task PreInsertAsync(ICollectionPersister persister, Cancel } } } + catch (OperationCanceledException) { throw; } catch (Exception sqle) { throw new ADOException("Could not generate idbag row id.", sqle); diff --git a/src/NHibernate/Async/Connection/DriverConnectionProvider.cs b/src/NHibernate/Async/Connection/DriverConnectionProvider.cs index 1523e597d3f..4c3358a5943 100644 --- a/src/NHibernate/Async/Connection/DriverConnectionProvider.cs +++ b/src/NHibernate/Async/Connection/DriverConnectionProvider.cs @@ -39,6 +39,7 @@ public override async Task GetConnectionAsync(CancellationToken ca conn.ConnectionString = ConnectionString; await (conn.OpenAsync(cancellationToken)).ConfigureAwait(false); } + catch (OperationCanceledException) { throw; } catch (Exception) { conn.Dispose(); diff --git a/src/NHibernate/Async/Context/ThreadLocalSessionContext.cs b/src/NHibernate/Async/Context/ThreadLocalSessionContext.cs index a2ebec50be5..01fada343b8 100644 --- a/src/NHibernate/Async/Context/ThreadLocalSessionContext.cs +++ b/src/NHibernate/Async/Context/ThreadLocalSessionContext.cs @@ -38,6 +38,7 @@ private static async Task CleanupAnyOrphanedSessionAsync(ISessionFactory factory { await (orphan.Transaction.RollbackAsync(cancellationToken)).ConfigureAwait(false); } + catch (OperationCanceledException) { throw; } catch (Exception ex) { log.Debug(ex, "Unable to rollback transaction for orphaned session"); @@ -45,6 +46,7 @@ private static async Task CleanupAnyOrphanedSessionAsync(ISessionFactory factory } orphan.Close(); } + catch (OperationCanceledException) { throw; } catch (Exception ex) { log.Debug(ex, "Unable to close orphaned session"); diff --git a/src/NHibernate/Async/Dialect/Lock/SelectLockingStrategy.cs b/src/NHibernate/Async/Dialect/Lock/SelectLockingStrategy.cs index 700ca82e6ad..1aaf3f93250 100644 --- a/src/NHibernate/Async/Dialect/Lock/SelectLockingStrategy.cs +++ b/src/NHibernate/Async/Dialect/Lock/SelectLockingStrategy.cs @@ -64,6 +64,7 @@ public async Task LockAsync(object id, object version, object obj, ISessionImple session.Batcher.CloseCommand(st, rs); } } + catch (OperationCanceledException) { throw; } catch (HibernateException) { // Do not call Convert on HibernateExceptions diff --git a/src/NHibernate/Async/Driver/NDataReader.cs b/src/NHibernate/Async/Driver/NDataReader.cs index da0f878d864..954ee397a1d 100644 --- a/src/NHibernate/Async/Driver/NDataReader.cs +++ b/src/NHibernate/Async/Driver/NDataReader.cs @@ -60,6 +60,7 @@ public static async Task CreateAsync(DbDataReader reader, bool isMi dataReader.results = resultList.ToArray(); } + catch (OperationCanceledException) { throw; } catch (Exception e) { throw new ADOException("There was a problem converting an DbDataReader to NDataReader", e); diff --git a/src/NHibernate/Async/Engine/Query/NativeSQLQueryPlan.cs b/src/NHibernate/Async/Engine/Query/NativeSQLQueryPlan.cs index 8e0aa8630a6..2cf63ed75c9 100644 --- a/src/NHibernate/Async/Engine/Query/NativeSQLQueryPlan.cs +++ b/src/NHibernate/Async/Engine/Query/NativeSQLQueryPlan.cs @@ -96,6 +96,7 @@ public async Task PerformExecuteUpdateAsync(QueryParameters queryParameters } } } + catch (OperationCanceledException) { throw; } catch (HibernateException) { throw; diff --git a/src/NHibernate/Async/Hql/Ast/ANTLR/Exec/AbstractStatementExecutor.cs b/src/NHibernate/Async/Hql/Ast/ANTLR/Exec/AbstractStatementExecutor.cs index 2df56664ab1..f3300c08454 100644 --- a/src/NHibernate/Async/Hql/Ast/ANTLR/Exec/AbstractStatementExecutor.cs +++ b/src/NHibernate/Async/Hql/Ast/ANTLR/Exec/AbstractStatementExecutor.cs @@ -114,6 +114,7 @@ protected virtual async Task DropTemporaryTableIfNecessaryAsync(IQueryable persi ps = await (session.Batcher.PrepareCommandAsync(CommandType.Text, commandText, Array.Empty(), cancellationToken)).ConfigureAwait(false); await (session.Batcher.ExecuteNonQueryAsync(ps, cancellationToken)).ConfigureAwait(false); } + catch (OperationCanceledException) { throw; } catch (Exception t) { 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 await (stmnt.ExecuteNonQueryAsync(cancellationToken)).ConfigureAwait(false); session.Factory.Settings.SqlStatementLogger.LogCommand(stmnt, FormatStyle.Ddl); } + catch (OperationCanceledException) { throw; } catch (Exception t) { log.Debug(t, "unable to create temporary id table [{0}]", t.Message); @@ -186,6 +188,7 @@ public async Task DoWorkAsync(DbConnection connection, DbTransaction transaction await (stmnt.ExecuteNonQueryAsync(cancellationToken)).ConfigureAwait(false); session.Factory.Settings.SqlStatementLogger.LogCommand(stmnt, FormatStyle.Ddl); } + catch (OperationCanceledException) { throw; } catch (Exception t) { log.Warn("unable to drop temporary id table after use [{0}]", t.Message); diff --git a/src/NHibernate/Async/Id/Enhanced/TableGenerator.cs b/src/NHibernate/Async/Id/Enhanced/TableGenerator.cs index 887a6064f32..be2da466fff 100644 --- a/src/NHibernate/Async/Id/Enhanced/TableGenerator.cs +++ b/src/NHibernate/Async/Id/Enhanced/TableGenerator.cs @@ -101,6 +101,7 @@ public override async Task DoWorkInCurrentTransactionAsync(ISessionImple result = Convert.ToInt64(selectedValue); } } + catch (OperationCanceledException) { throw; } catch (Exception ex) { log.Error(ex, "Unable to read or initialize hi value in {0}", TableName); @@ -124,6 +125,7 @@ public override async Task DoWorkInCurrentTransactionAsync(ISessionImple updatedRows = await (updateCmd.ExecuteNonQueryAsync(cancellationToken)).ConfigureAwait(false); } } + catch (OperationCanceledException) { throw; } catch (Exception ex) { log.Error(ex, "Unable to update hi value in {0}", TableName); diff --git a/src/NHibernate/Async/Id/Enhanced/TableStructure.cs b/src/NHibernate/Async/Id/Enhanced/TableStructure.cs index 7e109008d20..0ffa27d6c30 100644 --- a/src/NHibernate/Async/Id/Enhanced/TableStructure.cs +++ b/src/NHibernate/Async/Id/Enhanced/TableStructure.cs @@ -55,6 +55,7 @@ public override async Task DoWorkInCurrentTransactionAsync(ISessionImple } result = Convert.ToInt64(selectedValue); } + catch (OperationCanceledException) { throw; } catch (Exception sqle) { Log.Error(sqle, "could not read a hi value"); @@ -76,6 +77,7 @@ public override async Task DoWorkInCurrentTransactionAsync(ISessionImple updatedRows = await (updateCmd.ExecuteNonQueryAsync(cancellationToken)).ConfigureAwait(false); } } + catch (OperationCanceledException) { throw; } catch (Exception sqle) { Log.Error(sqle, "could not update hi value in: {0}", _tableName); diff --git a/src/NHibernate/Async/Id/IdentifierGeneratorFactory.cs b/src/NHibernate/Async/Id/IdentifierGeneratorFactory.cs index 4157080eea4..1d1acc07d6b 100644 --- a/src/NHibernate/Async/Id/IdentifierGeneratorFactory.cs +++ b/src/NHibernate/Async/Id/IdentifierGeneratorFactory.cs @@ -72,6 +72,7 @@ public static async Task GetAsync(DbDataReader rs, IType type, ISessionI { return await (type.NullSafeGetAsync(rs, rs.GetName(0), session, null, cancellationToken)).ConfigureAwait(false); } + catch (OperationCanceledException) { throw; } catch (Exception e) { throw new IdentifierGenerationException("could not retrieve identifier value", e); diff --git a/src/NHibernate/Async/Id/NativeGuidGenerator.cs b/src/NHibernate/Async/Id/NativeGuidGenerator.cs index 50484fcd52a..29e20e4ffbd 100644 --- a/src/NHibernate/Async/Id/NativeGuidGenerator.cs +++ b/src/NHibernate/Async/Id/NativeGuidGenerator.cs @@ -56,6 +56,7 @@ public async Task GenerateAsync(ISessionImplementor session, object obj, session.Batcher.CloseCommand(st, reader); } } + catch (OperationCanceledException) { throw; } catch (Exception sqle) { throw ADOExceptionHelper.Convert(session.Factory.SQLExceptionConverter, sqle, "could not retrieve GUID", sql); diff --git a/src/NHibernate/Async/Id/TableGenerator.cs b/src/NHibernate/Async/Id/TableGenerator.cs index 15707b36549..648806a5871 100644 --- a/src/NHibernate/Async/Id/TableGenerator.cs +++ b/src/NHibernate/Async/Id/TableGenerator.cs @@ -87,6 +87,7 @@ public override async Task DoWorkInCurrentTransactionAsync(ISessionImple } result = Convert.ToInt64(columnType.Get(rs, 0, session)); } + catch (OperationCanceledException) { throw; } catch (Exception e) { log.Error(e, "could not read a hi value"); @@ -114,6 +115,7 @@ public override async Task DoWorkInCurrentTransactionAsync(ISessionImple rows = await (ups.ExecuteNonQueryAsync(cancellationToken)).ConfigureAwait(false); } + catch (OperationCanceledException) { throw; } catch (Exception e) { log.Error(e, "could not update hi value in: {0}", tableName); diff --git a/src/NHibernate/Async/Impl/MultiCriteriaImpl.cs b/src/NHibernate/Async/Impl/MultiCriteriaImpl.cs index 47514f9cdf0..2d9f51ebe1a 100644 --- a/src/NHibernate/Async/Impl/MultiCriteriaImpl.cs +++ b/src/NHibernate/Async/Impl/MultiCriteriaImpl.cs @@ -205,6 +205,7 @@ private async Task GetResultsFromDatabaseAsync(IList results, CancellationToken } } } + catch (OperationCanceledException) { throw; } catch (Exception sqle) { log.Error(sqle, "Failed to execute multi criteria: [{0}]", resultSetsCommand.Sql); diff --git a/src/NHibernate/Async/Impl/MultiQueryImpl.cs b/src/NHibernate/Async/Impl/MultiQueryImpl.cs index fab607a0bf7..6f3519d2351 100644 --- a/src/NHibernate/Async/Impl/MultiQueryImpl.cs +++ b/src/NHibernate/Async/Impl/MultiQueryImpl.cs @@ -173,6 +173,7 @@ protected async Task> DoListAsync(CancellationToken cancellationTok } } } + catch (OperationCanceledException) { throw; } catch (Exception sqle) { log.Error(sqle, "Failed to execute multi query: [{0}]", resultSetsCommand.Sql); diff --git a/src/NHibernate/Async/Impl/SessionImpl.cs b/src/NHibernate/Async/Impl/SessionImpl.cs index 5ab05babfb5..dfe0886d1ca 100644 --- a/src/NHibernate/Async/Impl/SessionImpl.cs +++ b/src/NHibernate/Async/Impl/SessionImpl.cs @@ -268,6 +268,7 @@ private async Task ListAsync(IQueryExpression queryExpression, QueryParameters q await (plan.PerformListAsync(queryParameters, this, results, cancellationToken)).ConfigureAwait(false); success = true; } + catch (OperationCanceledException) { throw; } catch (HibernateException) { // Do not call Convert on HibernateExceptions @@ -1065,6 +1066,7 @@ private async Task FilterAsync(object collection, string filter, QueryParameters await (plan.PerformListAsync(queryParameters, this, results, cancellationToken)).ConfigureAwait(false); success = true; } + catch (OperationCanceledException) { throw; } catch (HibernateException) { // Do not call Convert on HibernateExceptions @@ -1155,6 +1157,7 @@ public override async Task ListAsync(CriteriaImpl criteria, IList results, Cance } success = true; } + catch (OperationCanceledException) { throw; } catch (HibernateException) { // Do not call Convert on HibernateExceptions diff --git a/src/NHibernate/Async/Impl/StatelessSessionImpl.cs b/src/NHibernate/Async/Impl/StatelessSessionImpl.cs index ce0fe896e0a..1b41790b99b 100644 --- a/src/NHibernate/Async/Impl/StatelessSessionImpl.cs +++ b/src/NHibernate/Async/Impl/StatelessSessionImpl.cs @@ -104,6 +104,7 @@ public override async Task ListAsync(IQueryExpression queryExpression, QueryPara await (plan.PerformListAsync(queryParameters, this, results, cancellationToken)).ConfigureAwait(false); success = true; } + catch (OperationCanceledException) { throw; } catch (HibernateException) { // Do not call Convert on HibernateExceptions @@ -145,6 +146,7 @@ public override async Task ListAsync(CriteriaImpl criteria, IList results, Cance } success = true; } + catch (OperationCanceledException) { throw; } catch (HibernateException) { // Do not call Convert on HibernateExceptions diff --git a/src/NHibernate/Async/Loader/Loader.cs b/src/NHibernate/Async/Loader/Loader.cs index 491e8153aa9..0167ee2ad08 100644 --- a/src/NHibernate/Async/Loader/Loader.cs +++ b/src/NHibernate/Async/Loader/Loader.cs @@ -116,6 +116,7 @@ protected async Task LoadSingleRowAsync(DbDataReader resultSet, ISession await (GetRowFromResultSetAsync(resultSet, session, queryParameters, GetLockModes(queryParameters.LockModes), null, hydratedObjects, new EntityKey[entitySpan], returnProxies, cancellationToken)).ConfigureAwait(false); } + catch (OperationCanceledException) { throw; } catch (HibernateException) { throw; // Don't call Convert on HibernateExceptions @@ -298,6 +299,7 @@ private async Task DoQueryAsync(ISessionImplementor session, QueryParamet Log.Debug("done processing result set ({0} rows)", count); } } + catch (OperationCanceledException) { throw; } catch (Exception e) { e.Data["actual-sql-query"] = st.CommandText; @@ -812,6 +814,7 @@ protected internal virtual async Task PrepareQueryCommandAsync(QueryP driver.RemoveUnusedCommandParameters(command, sqlString); driver.ExpandQueryParameters(command, sqlString, sqlCommand.ParameterTypes); } + catch (OperationCanceledException) { throw; } catch (HibernateException) { session.Batcher.CloseCommand(command, null); @@ -893,6 +896,7 @@ protected async Task GetResultSetAsync( } return rs; } + catch (OperationCanceledException) { throw; } catch (Exception sqle) { ADOExceptionReporter.LogExceptions(sqle); @@ -922,6 +926,7 @@ protected async Task LoadEntityAsync(ISessionImplementor session, object optionalIdentifier); result = await (DoQueryAndInitializeNonLazyCollectionsAsync(session, qp, false, cancellationToken)).ConfigureAwait(false); } + catch (OperationCanceledException) { throw; } catch (HibernateException) { throw; @@ -955,6 +960,7 @@ protected async Task LoadEntityAsync(ISessionImplementor session, object new QueryParameters(new IType[] { keyType, indexType }, new object[] { key, index }), false, cancellationToken)).ConfigureAwait(false); } + catch (OperationCanceledException) { throw; } catch (Exception sqle) { throw ADOExceptionHelper.Convert(_factory.SQLExceptionConverter, sqle, "could not collection element by index", @@ -989,6 +995,7 @@ protected internal async Task LoadEntityBatchAsync(ISessionImplementor se new QueryParameters(types, ids, optionalObject, optionalEntityName, optionalId), false, cancellationToken)).ConfigureAwait(false); } + catch (OperationCanceledException) { throw; } catch (HibernateException) { throw; @@ -1021,6 +1028,7 @@ public async Task LoadCollectionAsync(ISessionImplementor session, object id, IT { await (DoQueryAndInitializeNonLazyCollectionsAsync(session, new QueryParameters(new IType[] { type }, ids, ids), true, cancellationToken)).ConfigureAwait(false); } + catch (OperationCanceledException) { throw; } catch (HibernateException) { // Do not call Convert on HibernateExceptions @@ -1053,6 +1061,7 @@ public async Task LoadCollectionBatchAsync(ISessionImplementor session, object[] { await (DoQueryAndInitializeNonLazyCollectionsAsync(session, new QueryParameters(idTypes, ids, ids), true, cancellationToken)).ConfigureAwait(false); } + catch (OperationCanceledException) { throw; } catch (HibernateException) { // Do not call Convert on HibernateExceptions @@ -1082,6 +1091,7 @@ protected async Task LoadCollectionSubselectAsync(ISessionImplementor session, o new QueryParameters(parameterTypes, parameterValues, namedParameters, ids), true, cancellationToken)).ConfigureAwait(false); } + catch (OperationCanceledException) { throw; } catch (HibernateException) { // Do not call Convert on HibernateExceptions @@ -1283,6 +1293,7 @@ protected async Task DoListAsync(ISessionImplementor session, QueryParame { result = await (DoQueryAndInitializeNonLazyCollectionsAsync(session, queryParameters, true, forcedResultTransformer, cancellationToken)).ConfigureAwait(false); } + catch (OperationCanceledException) { throw; } catch (HibernateException) { // Do not call Convert on HibernateExceptions diff --git a/src/NHibernate/Async/Persister/Collection/AbstractCollectionPersister.cs b/src/NHibernate/Async/Persister/Collection/AbstractCollectionPersister.cs index eaee0545ee1..70d9fa4d8b0 100644 --- a/src/NHibernate/Async/Persister/Collection/AbstractCollectionPersister.cs +++ b/src/NHibernate/Async/Persister/Collection/AbstractCollectionPersister.cs @@ -217,6 +217,7 @@ public async Task RemoveAsync(object id, ISessionImplementor session, Cancellati expectation.VerifyOutcomeNonBatched(await (session.Batcher.ExecuteNonQueryAsync(st, cancellationToken)).ConfigureAwait(false), st); } } + catch (OperationCanceledException) { throw; } catch (Exception e) { if (useBatch) @@ -376,6 +377,7 @@ public async Task DeleteRowsAsync(IPersistentCollection collection, object id, I } count++; } + catch (OperationCanceledException) { throw; } catch (Exception e) { if (useBatch) @@ -517,6 +519,7 @@ protected async Task PerformInsertAsync(object ownerId, IPersistentColle expectation.VerifyOutcomeNonBatched(await (session.Batcher.ExecuteNonQueryAsync(st, cancellationToken)).ConfigureAwait(false), st); } } + catch (OperationCanceledException) { throw; } catch (Exception e) { if (useBatch) diff --git a/src/NHibernate/Async/Persister/Collection/BasicCollectionPersister.cs b/src/NHibernate/Async/Persister/Collection/BasicCollectionPersister.cs index 49a3a415ccd..067efbe8c78 100644 --- a/src/NHibernate/Async/Persister/Collection/BasicCollectionPersister.cs +++ b/src/NHibernate/Async/Persister/Collection/BasicCollectionPersister.cs @@ -98,6 +98,7 @@ protected override async Task DoUpdateRowsAsync(object id, IPersistentColle expectation.VerifyOutcomeNonBatched(await (session.Batcher.ExecuteNonQueryAsync(st, cancellationToken)).ConfigureAwait(false), st); } } + catch (OperationCanceledException) { throw; } catch (Exception e) { if (useBatch) diff --git a/src/NHibernate/Async/Persister/Collection/OneToManyPersister.cs b/src/NHibernate/Async/Persister/Collection/OneToManyPersister.cs index 4e431d4102e..165f9ca9756 100644 --- a/src/NHibernate/Async/Persister/Collection/OneToManyPersister.cs +++ b/src/NHibernate/Async/Persister/Collection/OneToManyPersister.cs @@ -81,6 +81,7 @@ protected override async Task DoUpdateRowsAsync(object id, IPersistentColle deleteExpectation.VerifyOutcomeNonBatched(await (session.Batcher.ExecuteNonQueryAsync(st, cancellationToken)).ConfigureAwait(false), st); } } + catch (OperationCanceledException) { throw; } catch (Exception e) { if (useBatch) @@ -146,6 +147,7 @@ protected override async Task DoUpdateRowsAsync(object id, IPersistentColle insertExpectation.VerifyOutcomeNonBatched(await (session.Batcher.ExecuteNonQueryAsync(st, cancellationToken)).ConfigureAwait(false), st); } } + catch (OperationCanceledException) { throw; } catch (Exception e) { if (useBatch) diff --git a/src/NHibernate/Async/Persister/Entity/AbstractEntityPersister.cs b/src/NHibernate/Async/Persister/Entity/AbstractEntityPersister.cs index 913844ddc20..4399180796f 100644 --- a/src/NHibernate/Async/Persister/Entity/AbstractEntityPersister.cs +++ b/src/NHibernate/Async/Persister/Entity/AbstractEntityPersister.cs @@ -288,6 +288,7 @@ protected async Task DehydrateAsync(object id, object[] fields, object rowI await (PropertyTypes[i].NullSafeSetAsync(statement, fields[i], index, includeColumns[i], session, cancellationToken)).ConfigureAwait(false); index += ArrayHelper.CountTrue(includeColumns[i]); //TODO: this is kinda slow... } + catch (OperationCanceledException) { throw; } catch (Exception ex) { throw new PropertyValueException("Error dehydrating property value for", EntityName, entityMetamodel.PropertyNames[i], ex); @@ -520,6 +521,7 @@ protected async Task InsertAsync(object id, object[] fields, bool[] notNull, int expectation.VerifyOutcomeNonBatched(await (session.Batcher.ExecuteNonQueryAsync(insertCmd, cancellationToken)).ConfigureAwait(false), insertCmd); } } + catch (OperationCanceledException) { throw; } catch (Exception e) { if (useBatch) @@ -658,6 +660,7 @@ protected async Task UpdateAsync(object id, object[] fields, object[] oldF return Check(await (session.Batcher.ExecuteNonQueryAsync(statement, cancellationToken)).ConfigureAwait(false), id, j, expectation, statement); } } + catch (OperationCanceledException) { throw; } catch (StaleStateException e) { if (useBatch) @@ -787,6 +790,7 @@ public async Task DeleteAsync(object id, object version, int j, object obj, SqlC Check(await (session.Batcher.ExecuteNonQueryAsync(statement, cancellationToken)).ConfigureAwait(false), tableId, j, expectation, statement); } } + catch (OperationCanceledException) { throw; } catch (Exception e) { if (useBatch) diff --git a/src/NHibernate/Async/Tool/hbm2ddl/SchemaExport.cs b/src/NHibernate/Async/Tool/hbm2ddl/SchemaExport.cs index f0fa0db18f3..041ccdbbef6 100644 --- a/src/NHibernate/Async/Tool/hbm2ddl/SchemaExport.cs +++ b/src/NHibernate/Async/Tool/hbm2ddl/SchemaExport.cs @@ -170,6 +170,7 @@ private async Task ExecuteInitializedAsync(Action scriptAction, bool exe await (ExecuteSqlAsync(statement, sql, cancellationToken)).ConfigureAwait(false); } } + catch (OperationCanceledException) { throw; } catch (Exception e) { log.Warn("Unsuccessful: {0}", sql); @@ -385,6 +386,7 @@ public async Task ExecuteAsync(Action scriptAction, bool execute, bool j await (ExecuteAsync(scriptAction, execute, justDrop, connection, fileOutput, cancellationToken)).ConfigureAwait(false); } + catch (OperationCanceledException) { throw; } catch (HibernateException) { // So that we don't wrap HibernateExceptions in HibernateExceptions diff --git a/src/NHibernate/Async/Tool/hbm2ddl/SchemaUpdate.cs b/src/NHibernate/Async/Tool/hbm2ddl/SchemaUpdate.cs index 29da96ca5f6..2ca280f4fb3 100644 --- a/src/NHibernate/Async/Tool/hbm2ddl/SchemaUpdate.cs +++ b/src/NHibernate/Async/Tool/hbm2ddl/SchemaUpdate.cs @@ -97,6 +97,7 @@ public partial class SchemaUpdate await (new SchemaUpdate(cfg).ExecuteAsync(script, doUpdate, cancellationToken)).ConfigureAwait(false); } + catch (OperationCanceledException) { throw; } catch (Exception e) { log.Error(e, "Error running schema update"); @@ -159,6 +160,7 @@ public partial class SchemaUpdate meta = new DatabaseMetadata(connection, dialect); stmt = connection.CreateCommand(); } + catch (OperationCanceledException) { throw; } catch (Exception sqle) { exceptions.Add(sqle); @@ -187,6 +189,7 @@ public partial class SchemaUpdate await (stmt.ExecuteNonQueryAsync(cancellationToken)).ConfigureAwait(false); } } + catch (OperationCanceledException) { throw; } catch (Exception e) { exceptions.Add(e); @@ -196,6 +199,7 @@ public partial class SchemaUpdate log.Info("schema update complete"); } + catch (OperationCanceledException) { throw; } catch (Exception e) { exceptions.Add(e); diff --git a/src/NHibernate/Async/Tool/hbm2ddl/SchemaValidator.cs b/src/NHibernate/Async/Tool/hbm2ddl/SchemaValidator.cs index adce3ee8e02..24cff14e886 100644 --- a/src/NHibernate/Async/Tool/hbm2ddl/SchemaValidator.cs +++ b/src/NHibernate/Async/Tool/hbm2ddl/SchemaValidator.cs @@ -66,6 +66,7 @@ public partial class SchemaValidator */ await (new SchemaValidator(cfg).ValidateAsync(cancellationToken)).ConfigureAwait(false); } + catch (OperationCanceledException) { throw; } catch (Exception e) { log.Error(e, "Error running schema update"); @@ -88,6 +89,7 @@ public partial class SchemaValidator var connection = connectionHelper.Connection; meta = new DatabaseMetadata(connection, dialect, false); } + catch (OperationCanceledException) { throw; } catch (Exception sqle) { log.Error(sqle, "could not get database metadata"); @@ -95,6 +97,7 @@ public partial class SchemaValidator } configuration.ValidateSchema(dialect, meta); } + catch (OperationCanceledException) { throw; } catch (Exception e) { log.Error(e, "could not complete schema validation"); diff --git a/src/NHibernate/Async/Transaction/AdoTransaction.cs b/src/NHibernate/Async/Transaction/AdoTransaction.cs index 6d39973d7ef..cba158099d8 100644 --- a/src/NHibernate/Async/Transaction/AdoTransaction.cs +++ b/src/NHibernate/Async/Transaction/AdoTransaction.cs @@ -70,6 +70,7 @@ private async Task AfterTransactionCompletionAsync(bool successful, Cancellation await (AfterTransactionCompletionAsync(true, cancellationToken)).ConfigureAwait(false); Dispose(); } + catch (OperationCanceledException) { throw; } catch (HibernateException e) { log.Error(e, "Commit failed"); diff --git a/src/NHibernate/Async/Type/EntityType.cs b/src/NHibernate/Async/Type/EntityType.cs index adef950ecdd..36180f6699f 100644 --- a/src/NHibernate/Async/Type/EntityType.cs +++ b/src/NHibernate/Async/Type/EntityType.cs @@ -243,6 +243,7 @@ public async Task LoadByUniqueKeyAsync(string entityName, string uniqueK } return result == null ? null : persistenceContext.ProxyFor(result); } + catch (OperationCanceledException) { throw; } catch (HibernateException) { // Do not call Convert on HibernateExceptions From b014259a5aaa2c020258711ad9d3f7c73e766a04 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20Delaporte?= Date: Tue, 8 May 2018 19:15:26 +0200 Subject: [PATCH 2/2] Update AsyncGenerator to 0.8.2.4 Of course, to be squashed --- Tools/packages.config | 2 +- .../MsSQL/SnapshotIsolationUpdateConflictTest.cs | 11 +++++------ 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/Tools/packages.config b/Tools/packages.config index 8ceaaa9274d..023ab631f6d 100644 --- a/Tools/packages.config +++ b/Tools/packages.config @@ -7,7 +7,7 @@ - + diff --git a/src/NHibernate.Test/Async/NHSpecificTest/NH1553/MsSQL/SnapshotIsolationUpdateConflictTest.cs b/src/NHibernate.Test/Async/NHSpecificTest/NH1553/MsSQL/SnapshotIsolationUpdateConflictTest.cs index b39fda2308a..2ce5e39ce00 100644 --- a/src/NHibernate.Test/Async/NHSpecificTest/NH1553/MsSQL/SnapshotIsolationUpdateConflictTest.cs +++ b/src/NHibernate.Test/Async/NHSpecificTest/NH1553/MsSQL/SnapshotIsolationUpdateConflictTest.cs @@ -77,17 +77,16 @@ private void SavePerson(Person p) /// Tests, that NHibernate detects the update conflict and returns a StaleObjectStateException as expected. /// This behaviour is part of the standard NHibernate feature set. /// - /// A cancellation token that can be used to cancel the work [Test] - public async Task UpdateConflictDetectedByNHAsync(CancellationToken cancellationToken = default(CancellationToken)) + public async Task UpdateConflictDetectedByNHAsync() { - Person p1 = await (LoadPersonAsync(cancellationToken)); - Person p2 = await (LoadPersonAsync(cancellationToken)); + Person p1 = await (LoadPersonAsync()); + Person p2 = await (LoadPersonAsync()); p1.IdentificationNumber++; p2.IdentificationNumber += 2; - await (SavePersonAsync(p1, cancellationToken)); + await (SavePersonAsync(p1)); Assert.That(p1.Version, Is.EqualTo(person.Version + 1)); var expectedException = Sfi.Settings.IsBatchVersionedDataEnabled @@ -96,7 +95,7 @@ private void SavePerson(Person p) .And.Property("EntityName").EqualTo(typeof(Person).FullName) .And.Property("Identifier").EqualTo(p2.Id); - Assert.That(() => SavePersonAsync(p2, cancellationToken), expectedException); + Assert.That(() => SavePersonAsync(p2), expectedException); } ///