Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion Tools/packages.config
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
<package id="NUnit.Extension.NUnitV2ResultWriter" version="3.6.0" targetFramework="net461" />
<package id="NUnit.Extension.TeamCityEventListener" version="1.0.2" targetFramework="net461" />
<package id="NUnit.Extension.VSProjectLoader" version="3.6.0" targetFramework="net461" />
<package id="CSharpAsyncGenerator.CommandLine" version="0.8.2.9" targetFramework="net461" />
<package id="CSharpAsyncGenerator.CommandLine" version="0.13.1" targetFramework="net461" />
<package id="vswhere" version="2.1.4" targetFramework="net461" />
<package id="gitreleasemanager" version="0.7.0" targetFramework="net461" />
</packages>
22 changes: 4 additions & 18 deletions src/NHibernate.Test/Async/Linq/QueryTimeoutTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -114,15 +114,8 @@ public TimeoutCatchingNonBatchingBatcher(ConnectionManager connectionManager, II

public override Task<DbDataReader> ExecuteReaderAsync(DbCommand cmd, CancellationToken cancellationToken)
{
try
{
LastCommandTimeout = cmd.CommandTimeout;
return base.ExecuteReaderAsync(cmd, cancellationToken);
}
catch (System.Exception ex)
{
return Task.FromException<DbDataReader>(ex);
}
LastCommandTimeout = cmd.CommandTimeout;
return base.ExecuteReaderAsync(cmd, cancellationToken);
}

public override DbDataReader ExecuteReader(DbCommand cmd)
Expand Down Expand Up @@ -150,15 +143,8 @@ public partial class TimeoutCatchingNonBatchingBatcher : NonBatchingBatcher

public override Task<DbDataReader> ExecuteReaderAsync(DbCommand cmd, CancellationToken cancellationToken)
{
try
{
LastCommandTimeout = cmd.CommandTimeout;
return base.ExecuteReaderAsync(cmd, cancellationToken);
}
catch (System.Exception ex)
{
return Task.FromException<DbDataReader>(ex);
}
LastCommandTimeout = cmd.CommandTimeout;
return base.ExecuteReaderAsync(cmd, cancellationToken);
}
}
}
Expand Down
9 changes: 1 addition & 8 deletions src/NHibernate.Test/Async/NHSpecificTest/GH1547/Fixture.cs
Original file line number Diff line number Diff line change
Expand Up @@ -158,14 +158,7 @@ private partial class SubstituteDbCommand : DbCommand

protected override Task<DbDataReader> ExecuteDbDataReaderAsync(CommandBehavior behavior, CancellationToken cancellationToken)
{
try
{
return Task.FromResult<DbDataReader>(_substituteReader);
}
catch (Exception ex)
{
return Task.FromException<DbDataReader>(ex);
}
return Task.FromResult<DbDataReader>(_substituteReader);
}

public override Task<int> ExecuteNonQueryAsync(CancellationToken cancellationToken)
Expand Down
19 changes: 6 additions & 13 deletions src/NHibernate.Test/Async/NHSpecificTest/NH3848/Fixture.cs
Original file line number Diff line number Diff line change
Expand Up @@ -573,20 +573,13 @@ protected void ClearSecondLevelCacheFor(System.Type entity)

protected Task ClearCollectionCacheAsync<T>(Expression<Func<T, IEnumerable>> pathToCollection, CancellationToken cancellationToken = default(CancellationToken))
{
try
{
var rootEntityTypeFullPath = typeof(T).FullName;
var memberExpression = pathToCollection.Body as MemberExpression;
if (memberExpression == null)
return Task.FromException<object>(new ArgumentException("pathToCollection should be member expression"));
var rootEntityTypeFullPath = typeof(T).FullName;
var memberExpression = pathToCollection.Body as MemberExpression;
if (memberExpression == null)
return Task.FromException<object>(new ArgumentException("pathToCollection should be member expression"));

var role = $"{rootEntityTypeFullPath}.{memberExpression.Member.Name}";
return Sfi.EvictCollectionAsync(role, cancellationToken);
}
catch (Exception ex)
{
return Task.FromException<object>(ex);
}
var role = $"{rootEntityTypeFullPath}.{memberExpression.Member.Name}";
return Sfi.EvictCollectionAsync(role, cancellationToken);
}

protected void ClearCollectionCache<T>(Expression<Func<T, IEnumerable>> pathToCollection)
Expand Down
45 changes: 0 additions & 45 deletions src/NHibernate.Test/Async/SessionBuilder/Fixture.cs
Original file line number Diff line number Diff line change
Expand Up @@ -189,51 +189,6 @@ private void CanSetFlushMode<T>(T sb) where T : ISessionBuilder<T>
FlushMode.Always, FlushMode.Auto, FlushMode.Commit, FlushMode.Manual);
}

[Test]
public async Task CanSetInterceptorAsync()
{
var sb = Sfi.WithOptions();
await (CanSetInterceptorAsync(sb));
using (var s = sb.OpenSession())
{
await (CanSetInterceptorAsync(s.SessionWithOptions()));
}
}

private Task CanSetInterceptorAsync<T>(T sb) where T : ISessionBuilder<T>
{
try
{
var sbType = sb.GetType().Name;
// Do not use .Instance here, we want another instance.
var interceptor = new EmptyInterceptor();
var options = DebugSessionFactory.GetCreationOptions(sb);

Assert.AreEqual(Sfi.Interceptor, options.SessionInterceptor, $"{sbType}: Initial value");
var fsb = sb.Interceptor(interceptor);
Assert.AreEqual(interceptor, options.SessionInterceptor, $"{sbType}: After call with an interceptor");
Assert.AreEqual(sb, fsb, $"{sbType}: Unexpected fluent return after call with an interceptor");

if (sb is ISharedSessionBuilder ssb)
{
var fssb = ssb.Interceptor();
Assert.AreEqual(EmptyInterceptor.Instance, options.SessionInterceptor, $"{sbType}: After call with shared interceptor");
Assert.AreEqual(sb, fssb, $"{sbType}: Unexpected fluent return on shared");
}

Assert.Throws<ArgumentNullException>(() => sb.Interceptor(null), $"{sbType}: After call with null");

fsb = sb.NoInterceptor();
Assert.AreEqual(EmptyInterceptor.Instance, options.SessionInterceptor, $"{sbType}: After no call");
Assert.AreEqual(sb, fsb, $"{sbType}: Unexpected fluent return after no call");
return Task.CompletedTask;
}
catch (Exception ex)
{
return Task.FromException<object>(ex);
}
}

private void CanSet<T, V>(T sb, Func<V, T> setter, Func<V> getter, Func<ISharedSessionBuilder> shared, V initialValue,
params V[] values) where T : ISessionBuilder<T>
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -690,16 +690,9 @@ public async Task EnforceConnectionUsageRulesOnTransactionCompletionAsync()

private Task DodgeTransactionCompletionDelayIfRequiredAsync(CancellationToken cancellationToken = default(CancellationToken))
{
try
{
if (Sfi.ConnectionProvider.Driver.HasDelayedDistributedTransactionCompletion)
return Task.Delay(500, cancellationToken);
return Task.CompletedTask;
}
catch (Exception ex)
{
return Task.FromException<object>(ex);
}
if (Sfi.ConnectionProvider.Driver.HasDelayedDistributedTransactionCompletion)
return Task.Delay(500, cancellationToken);
return Task.CompletedTask;
}

private void DodgeTransactionCompletionDelayIfRequired()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -132,28 +132,14 @@ public partial class Synchronization : ITransactionCompletionSynchronization

public Task ExecuteBeforeTransactionCompletionAsync(CancellationToken cancellationToken)
{
try
{
BeforeExecutions += 1;
return Task.CompletedTask;
}
catch (Exception ex)
{
return Task.FromException<object>(ex);
}
BeforeExecutions += 1;
return Task.CompletedTask;
}

public Task ExecuteAfterTransactionCompletionAsync(bool success, CancellationToken cancellationToken)
{
try
{
AfterExecutions += 1;
return Task.CompletedTask;
}
catch (Exception ex)
{
return Task.FromException<object>(ex);
}
AfterExecutions += 1;
return Task.CompletedTask;
}
}

Expand Down
6 changes: 6 additions & 0 deletions src/NHibernate.sln.DotSettings
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,9 @@
<s:Boolean x:Key="/Default/CodeStyle/CodeFormatting/CSharpFormat/EXPLICIT_INTERNAL_MODIFIER/@EntryValue">True</s:Boolean>
<s:Boolean x:Key="/Default/CodeStyle/CodeFormatting/CSharpFormat/EXPLICIT_PRIVATE_MODIFIER/@EntryValue">True</s:Boolean>
<s:Boolean x:Key="/Default/CodeStyle/CodeFormatting/CSharpFormat/LINE_FEED_AT_FILE_END/@EntryValue">True</s:Boolean>
<s:String x:Key="/Default/CodeStyle/CodeFormatting/CSharpFormat/PLACE_ACCESSOR_ATTRIBUTE_ON_SAME_LINE_EX/@EntryValue">NEVER</s:String>
<s:Boolean x:Key="/Default/CodeStyle/CodeFormatting/CSharpFormat/PLACE_FIELD_ATTRIBUTE_ON_SAME_LINE/@EntryValue">False</s:Boolean>
<s:String x:Key="/Default/CodeStyle/CodeFormatting/CSharpFormat/PLACE_FIELD_ATTRIBUTE_ON_SAME_LINE_EX/@EntryValue">NEVER</s:String>
<s:Boolean x:Key="/Default/CodeStyle/CodeFormatting/CSharpFormat/PLACE_SIMPLE_ACCESSOR_ATTRIBUTE_ON_SAME_LINE/@EntryValue">False</s:Boolean>
<s:Boolean x:Key="/Default/CodeStyle/CodeFormatting/CSharpFormat/WRAP_AFTER_DECLARATION_LPAR/@EntryValue">True</s:Boolean>
<s:Boolean x:Key="/Default/CodeStyle/CodeFormatting/CSharpFormat/WRAP_AFTER_INVOCATION_LPAR/@EntryValue">True</s:Boolean>
Expand All @@ -20,9 +22,13 @@
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/PredefinedNamingRules/=PrivateInstanceFields/@EntryIndexedValue">&lt;Policy Inspect="True" Prefix="_" Suffix="" Style="aaBb" /&gt;</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/PredefinedNamingRules/=PrivateStaticReadonly/@EntryIndexedValue">&lt;Policy Inspect="True" Prefix="" Suffix="" Style="AaBb" /&gt;</s:String>
<s:Boolean x:Key="/Default/Environment/SettingsMigration/IsMigratorApplied/=JetBrains_002EReSharper_002EPsi_002ECSharp_002ECodeStyle_002ECSharpAttributeForSingleLineMethodUpgrade/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/Environment/SettingsMigration/IsMigratorApplied/=JetBrains_002EReSharper_002EPsi_002ECSharp_002ECodeStyle_002ECSharpKeepExistingMigration/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/Environment/SettingsMigration/IsMigratorApplied/=JetBrains_002EReSharper_002EPsi_002ECSharp_002ECodeStyle_002ECSharpPlaceEmbeddedOnSameLineMigration/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/Environment/SettingsMigration/IsMigratorApplied/=JetBrains_002EReSharper_002EPsi_002ECSharp_002ECodeStyle_002ESettingsUpgrade_002EAddAccessorOwnerDeclarationBracesMigration/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/Environment/SettingsMigration/IsMigratorApplied/=JetBrains_002EReSharper_002EPsi_002ECSharp_002ECodeStyle_002ESettingsUpgrade_002ECSharpPlaceAttributeOnSameLineMigration/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/Environment/SettingsMigration/IsMigratorApplied/=JetBrains_002EReSharper_002EPsi_002ECSharp_002ECodeStyle_002ESettingsUpgrade_002EMigrateBlankLinesAroundFieldToBlankLinesAroundProperty/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/Environment/SettingsMigration/IsMigratorApplied/=JetBrains_002EReSharper_002EPsi_002ECSharp_002ECodeStyle_002ESettingsUpgrade_002EMigrateThisQualifierSettings/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/Environment/SettingsMigration/IsMigratorApplied/=JetBrains_002EReSharper_002EPsi_002EFormat_002ESettingsUpgrade_002EAlignmentTabFillStyleMigration/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/Environment/UnitTesting/SeparateAppDomainPerAssembly/@EntryValue">True</s:Boolean>
<s:Boolean x:Key="/Default/PatternsAndTemplates/StructuralSearch/Pattern/=0BE95D01E0F2244E97F5FEFAD1EB1A63/@KeyIndexDefined">True</s:Boolean>
<s:String x:Key="/Default/PatternsAndTemplates/StructuralSearch/Pattern/=0BE95D01E0F2244E97F5FEFAD1EB1A63/Comment/@EntryValue">NUnit Assert.NotNull</s:String>
Expand Down
11 changes: 2 additions & 9 deletions src/NHibernate/Async/Action/CollectionAction.cs
Original file line number Diff line number Diff line change
Expand Up @@ -55,15 +55,8 @@ public virtual Task ExecuteAfterTransactionCompletionAsync(bool success, Cancell
{
return Task.FromCanceled<object>(cancellationToken);
}
try
{
var ck = new CacheKey(key, persister.KeyType, persister.Role, Session.Factory);
return persister.Cache.ReleaseAsync(ck, softLock, cancellationToken);
}
catch (Exception ex)
{
return Task.FromException<object>(ex);
}
var ck = new CacheKey(key, persister.KeyType, persister.Role, Session.Factory);
return persister.Cache.ReleaseAsync(ck, softLock, cancellationToken);
}

#endregion
Expand Down
19 changes: 6 additions & 13 deletions src/NHibernate/Async/Action/EntityIdentityInsertAction.cs
Original file line number Diff line number Diff line change
Expand Up @@ -121,24 +121,17 @@ protected override Task AfterTransactionCompletionProcessImplAsync(bool success,
{
return Task.FromCanceled<object>(cancellationToken);
}
try
{
//TODO Make 100% certain that this is called before any subsequent ScheduledUpdate.afterTransactionCompletion()!!
//TODO from H3.2: reenable if we also fix the above todo
/*EntityPersister persister = getEntityPersister();
//TODO Make 100% certain that this is called before any subsequent ScheduledUpdate.afterTransactionCompletion()!!
//TODO from H3.2: reenable if we also fix the above todo
/*EntityPersister persister = getEntityPersister();
if ( success && persister.hasCache() && !persister.isCacheInvalidationRequired() ) {
persister.getCache().afterInsert( getGeneratedId(), cacheEntry );
}*/
if (success)
{
return PostCommitInsertAsync(cancellationToken);
}
return Task.CompletedTask;
}
catch (Exception ex)
if (success)
{
return Task.FromException<object>(ex);
return PostCommitInsertAsync(cancellationToken);
}
return Task.CompletedTask;
}
}
}
33 changes: 13 additions & 20 deletions src/NHibernate/Async/Collection/AbstractPersistentCollection.cs
Original file line number Diff line number Diff line change
Expand Up @@ -73,30 +73,23 @@ public virtual Task ForceInitializationAsync(CancellationToken cancellationToken
{
return Task.FromCanceled<object>(cancellationToken);
}
try
if (!initialized)
{
if (!initialized)
if (initializing)
{
if (initializing)
{
return Task.FromException<object>(new AssertionFailure("force initialize loading collection"));
}
if (session == null)
{
return Task.FromException<object>(new HibernateException("collection is not associated with any session"));
}
if (!session.IsConnected)
{
return Task.FromException<object>(new HibernateException("disconnected session"));
}
return session.InitializeCollectionAsync(this, false, cancellationToken);
return Task.FromException<object>(new AssertionFailure("force initialize loading collection"));
}
return Task.CompletedTask;
}
catch (Exception ex)
{
return Task.FromException<object>(ex);
if (session == null)
{
return Task.FromException<object>(new HibernateException("collection is not associated with any session"));
}
if (!session.IsConnected)
{
return Task.FromException<object>(new HibernateException("disconnected session"));
}
return session.InitializeCollectionAsync(this, false, cancellationToken);
}
return Task.CompletedTask;
}

public Task<ICollection> GetQueuedOrphansAsync(string entityName, CancellationToken cancellationToken)
Expand Down
13 changes: 3 additions & 10 deletions src/NHibernate/Async/Engine/ActionQueue.cs
Original file line number Diff line number Diff line change
Expand Up @@ -46,18 +46,11 @@ private Task PreInvalidateCachesAsync(CancellationToken cancellationToken)
{
return Task.FromCanceled<object>(cancellationToken);
}
try
{
if (session.Factory.Settings.IsQueryCacheEnabled)
{
return session.Factory.UpdateTimestampsCache.PreInvalidateAsync(executedSpaces, cancellationToken);
}
return Task.CompletedTask;
}
catch (Exception ex)
if (session.Factory.Settings.IsQueryCacheEnabled)
{
return Task.FromException<object>(ex);
return session.Factory.UpdateTimestampsCache.PreInvalidateAsync(executedSpaces, cancellationToken);
}
return Task.CompletedTask;
}

public async Task ExecuteAsync(IExecutable executable, CancellationToken cancellationToken)
Expand Down
Loading