From e95454c7deb309edd5dfb15ef15ea147502432b4 Mon Sep 17 00:00:00 2001 From: Anna Khaperskaia Date: Fri, 26 Jul 2019 18:05:38 +0300 Subject: [PATCH 1/2] Add test to illustrate bug: calling 'GetCurrentRevision' in the middle of uncommited transaction leads to unexpected flush --- .../NHibernate.Envers.Tests.csproj | 1 + .../TransactionUnexpectedFlush/Entity.cs | 13 ++++++ .../Mapping.hbm.xml | 11 +++++ .../TransactionUnexpectedFlushTest.cs | 45 +++++++++++++++++++ 4 files changed, 70 insertions(+) create mode 100644 Src/NHibernate.Envers.Tests/NetSpecific/Integration/TransactionUnexpectedFlush/Entity.cs create mode 100644 Src/NHibernate.Envers.Tests/NetSpecific/Integration/TransactionUnexpectedFlush/Mapping.hbm.xml create mode 100644 Src/NHibernate.Envers.Tests/NetSpecific/Integration/TransactionUnexpectedFlush/TransactionUnexpectedFlushTest.cs diff --git a/Src/NHibernate.Envers.Tests/NHibernate.Envers.Tests.csproj b/Src/NHibernate.Envers.Tests/NHibernate.Envers.Tests.csproj index e4d5fa18..8005c880 100644 --- a/Src/NHibernate.Envers.Tests/NHibernate.Envers.Tests.csproj +++ b/Src/NHibernate.Envers.Tests/NHibernate.Envers.Tests.csproj @@ -7,6 +7,7 @@ + Always Designer diff --git a/Src/NHibernate.Envers.Tests/NetSpecific/Integration/TransactionUnexpectedFlush/Entity.cs b/Src/NHibernate.Envers.Tests/NetSpecific/Integration/TransactionUnexpectedFlush/Entity.cs new file mode 100644 index 00000000..32c0f034 --- /dev/null +++ b/Src/NHibernate.Envers.Tests/NetSpecific/Integration/TransactionUnexpectedFlush/Entity.cs @@ -0,0 +1,13 @@ +using System; +using NHibernate.Envers.Configuration.Attributes; + +namespace NHibernate.Envers.Tests.NetSpecific.Integration.TransactionUnexpectedFlush +{ + [Audited] + public class Entity + { + public virtual Guid Id { get; set; } + + public virtual string Name { get; set; } + } +} diff --git a/Src/NHibernate.Envers.Tests/NetSpecific/Integration/TransactionUnexpectedFlush/Mapping.hbm.xml b/Src/NHibernate.Envers.Tests/NetSpecific/Integration/TransactionUnexpectedFlush/Mapping.hbm.xml new file mode 100644 index 00000000..77071e5f --- /dev/null +++ b/Src/NHibernate.Envers.Tests/NetSpecific/Integration/TransactionUnexpectedFlush/Mapping.hbm.xml @@ -0,0 +1,11 @@ + + + + + + + + + diff --git a/Src/NHibernate.Envers.Tests/NetSpecific/Integration/TransactionUnexpectedFlush/TransactionUnexpectedFlushTest.cs b/Src/NHibernate.Envers.Tests/NetSpecific/Integration/TransactionUnexpectedFlush/TransactionUnexpectedFlushTest.cs new file mode 100644 index 00000000..420bf81e --- /dev/null +++ b/Src/NHibernate.Envers.Tests/NetSpecific/Integration/TransactionUnexpectedFlush/TransactionUnexpectedFlushTest.cs @@ -0,0 +1,45 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using NUnit.Framework; + +namespace NHibernate.Envers.Tests.NetSpecific.Integration.TransactionUnexpectedFlush +{ + public class TransactionUnexpectedFlushTest : TestBase + { + public TransactionUnexpectedFlushTest(AuditStrategyForTest strategyType) + : base(strategyType) + { + } + + protected override IEnumerable Mappings => new[] {"NetSpecific.Integration.TransactionUnexpectedFlush.Mapping.hbm.xml"}; + + protected override void Initialize() + { + } + + [Test] + public void GetCurrentRevision_PersistIsTrue_ShouldNotFlushUncommitedChanges() + { + // Arrange + var entity = new Entity { Id = Guid.NewGuid(), Name = "entity name" }; + + int notCommitedTransactionEntitiesCount = 0; + + // Act + using (var tx = Session.BeginTransaction()) + { + Session.Save(entity); + + AuditReader().GetCurrentRevision(true); + + notCommitedTransactionEntitiesCount = Session.Query().Count(); + + tx.Commit(); + } + + // Assert + Assert.Zero(notCommitedTransactionEntitiesCount); + } + } +} From e43b8f505c5c8535e4f89264562bd460a74c821a Mon Sep 17 00:00:00 2001 From: Anna Khaperskaia Date: Fri, 26 Jul 2019 18:25:25 +0300 Subject: [PATCH 2/2] rollback extra xml mapping include --- Src/NHibernate.Envers.Tests/NHibernate.Envers.Tests.csproj | 1 - 1 file changed, 1 deletion(-) diff --git a/Src/NHibernate.Envers.Tests/NHibernate.Envers.Tests.csproj b/Src/NHibernate.Envers.Tests/NHibernate.Envers.Tests.csproj index 8005c880..e4d5fa18 100644 --- a/Src/NHibernate.Envers.Tests/NHibernate.Envers.Tests.csproj +++ b/Src/NHibernate.Envers.Tests/NHibernate.Envers.Tests.csproj @@ -7,7 +7,6 @@ - Always Designer