SPRNET-1444 - change default tx isolation mode from ReadCommitted to Unspecified
This commit is contained in:
@@ -68,7 +68,7 @@ namespace Spring.Transaction.Support
|
||||
//TODO Refactoring to sync with Spring 2.0 for nt/enums for various default values.
|
||||
|
||||
private TransactionPropagation _transactionPropagation = TransactionPropagation.Required;
|
||||
private IsolationLevel _transactionIsolationLevel = IsolationLevel.ReadCommitted;
|
||||
private IsolationLevel _transactionIsolationLevel = IsolationLevel.Unspecified;
|
||||
private int _timeout = DefaultTransactionDefinition.TIMEOUT_DEFAULT;
|
||||
private bool _readOnly = false;
|
||||
private string _name = null;
|
||||
|
||||
@@ -45,6 +45,7 @@ namespace Spring.Data
|
||||
public class AdoPlatformTransactionManagerTests
|
||||
{
|
||||
private MockRepository mocks;
|
||||
private IsolationLevel _defaultIsolationLevel = IsolationLevel.Unspecified;
|
||||
|
||||
[SetUp]
|
||||
public void Setup()
|
||||
@@ -74,7 +75,7 @@ namespace Spring.Data
|
||||
Expect.Call(dbProvider.CreateConnection()).Return(connection);
|
||||
connection.Open();
|
||||
LastCall.On(connection).Repeat.Once();
|
||||
Expect.Call(connection.BeginTransaction(IsolationLevel.ReadCommitted)).Return(transaction);
|
||||
Expect.Call(connection.BeginTransaction(_defaultIsolationLevel)).Return(transaction);
|
||||
//standard tx timeout.
|
||||
transaction.Commit();
|
||||
LastCall.On(transaction).Repeat.Once();
|
||||
@@ -115,7 +116,7 @@ namespace Spring.Data
|
||||
Expect.Call(dbProvider.CreateConnection()).Return(connection);
|
||||
connection.Open();
|
||||
LastCall.On(connection).Repeat.Once();
|
||||
Expect.Call(connection.BeginTransaction(IsolationLevel.ReadCommitted)).Return(transaction);
|
||||
Expect.Call(connection.BeginTransaction(_defaultIsolationLevel)).Return(transaction);
|
||||
//standard tx timeout.
|
||||
transaction.Rollback();
|
||||
LastCall.On(transaction).Repeat.Once();
|
||||
@@ -165,7 +166,7 @@ namespace Spring.Data
|
||||
Expect.Call(dbProvider.CreateConnection()).Return(connection);
|
||||
connection.Open();
|
||||
LastCall.On(connection).Repeat.Once();
|
||||
Expect.Call(connection.BeginTransaction(IsolationLevel.ReadCommitted)).Return(transaction);
|
||||
Expect.Call(connection.BeginTransaction(_defaultIsolationLevel)).Return(transaction);
|
||||
//standard tx timeout.
|
||||
transaction.Rollback();
|
||||
LastCall.On(transaction).Repeat.Once();
|
||||
@@ -237,7 +238,7 @@ namespace Spring.Data
|
||||
Expect.Call(dbProvider.CreateConnection()).Return(connection).Repeat.Twice();
|
||||
connection.Open();
|
||||
LastCall.On(connection).Repeat.Twice();
|
||||
Expect.Call(connection.BeginTransaction(IsolationLevel.ReadCommitted)).Return(transaction).Repeat.Twice();
|
||||
Expect.Call(connection.BeginTransaction(_defaultIsolationLevel)).Return(transaction).Repeat.Twice();
|
||||
//standard tx timeout.
|
||||
transaction.Rollback();
|
||||
LastCall.On(transaction).Repeat.Once();
|
||||
@@ -279,7 +280,7 @@ namespace Spring.Data
|
||||
Expect.Call(dbProvider.CreateConnection()).Return(connection);
|
||||
connection.Open();
|
||||
LastCall.On(connection).Repeat.Once();
|
||||
Expect.Call(connection.BeginTransaction(IsolationLevel.ReadCommitted)).Return(transaction);
|
||||
Expect.Call(connection.BeginTransaction(_defaultIsolationLevel)).Return(transaction);
|
||||
transaction.Commit();
|
||||
LastCall.On(transaction).Repeat.Once();
|
||||
connection.Dispose();
|
||||
@@ -291,7 +292,7 @@ namespace Spring.Data
|
||||
Expect.Call(dbProvider2.CreateConnection()).Return(connection2);
|
||||
connection2.Open();
|
||||
LastCall.On(connection2).Repeat.Once();
|
||||
Expect.Call(connection2.BeginTransaction(IsolationLevel.ReadCommitted)).Return(transaction2);
|
||||
Expect.Call(connection2.BeginTransaction(_defaultIsolationLevel)).Return(transaction2);
|
||||
transaction2.Rollback();
|
||||
LastCall.On(transaction2).Repeat.Once();
|
||||
connection2.Dispose();
|
||||
@@ -334,7 +335,7 @@ namespace Spring.Data
|
||||
Expect.Call(dbProvider.CreateConnection()).Return(connection);
|
||||
connection.Open();
|
||||
LastCall.On(connection).Repeat.Once();
|
||||
Expect.Call(connection.BeginTransaction(IsolationLevel.ReadCommitted)).Return(transaction);
|
||||
Expect.Call(connection.BeginTransaction(_defaultIsolationLevel)).Return(transaction);
|
||||
transaction.Rollback();
|
||||
LastCall.On(transaction).Repeat.Once();
|
||||
connection.Dispose();
|
||||
@@ -394,7 +395,7 @@ namespace Spring.Data
|
||||
Expect.Call(dbProvider.CreateConnection()).Return(connection);
|
||||
connection.Open();
|
||||
LastCall.On(connection).Repeat.Once();
|
||||
Expect.Call(connection.BeginTransaction(IsolationLevel.ReadCommitted)).Return(transaction);
|
||||
Expect.Call(connection.BeginTransaction(_defaultIsolationLevel)).Return(transaction);
|
||||
//standard tx timeout.
|
||||
transaction.Commit();
|
||||
LastCall.On(transaction).Repeat.Once();
|
||||
@@ -430,7 +431,7 @@ namespace Spring.Data
|
||||
Expect.Call(dbProvider.CreateConnection()).Return(connection);
|
||||
connection.Open();
|
||||
LastCall.On(connection).Repeat.Once();
|
||||
Expect.Call(connection.BeginTransaction(IsolationLevel.ReadCommitted)).Return(transaction);
|
||||
Expect.Call(connection.BeginTransaction(_defaultIsolationLevel)).Return(transaction);
|
||||
//standard tx timeout.
|
||||
transaction.Rollback();
|
||||
LastCall.On(transaction).Repeat.Once();
|
||||
@@ -481,7 +482,7 @@ namespace Spring.Data
|
||||
Expect.Call(dbProvider.CreateConnection()).Return(connection2);
|
||||
connection2.Open();
|
||||
LastCall.On(connection2).Repeat.Once();
|
||||
Expect.Call(connection2.BeginTransaction(IsolationLevel.ReadCommitted)).Return(transaction2);
|
||||
Expect.Call(connection2.BeginTransaction(_defaultIsolationLevel)).Return(transaction2);
|
||||
transaction2.Commit();
|
||||
LastCall.On(transaction2).Repeat.Once();
|
||||
connection2.Dispose();
|
||||
@@ -572,7 +573,7 @@ namespace Spring.Data
|
||||
connection.Open();
|
||||
|
||||
LastCall.On(connection).Repeat.Once();
|
||||
Expect.Call(connection.BeginTransaction(IsolationLevel.ReadCommitted)).Return(transaction);
|
||||
Expect.Call(connection.BeginTransaction(_defaultIsolationLevel)).Return(transaction);
|
||||
Expect.Call(connection.CreateCommand()).Return(command);
|
||||
command.CommandText = "some SQL statement";
|
||||
LastCall.On(command).Repeat.Once();
|
||||
@@ -673,7 +674,7 @@ namespace Spring.Data
|
||||
Expect.Call(dbProvider.CreateConnection()).Return(connection);
|
||||
connection.Open();
|
||||
LastCall.On(connection).Repeat.Once();
|
||||
Expect.Call(connection.BeginTransaction(IsolationLevel.ReadCommitted)).Return(transaction);
|
||||
Expect.Call(connection.BeginTransaction(_defaultIsolationLevel)).Return(transaction);
|
||||
//standard tx timeout.
|
||||
transaction.Commit();
|
||||
LastCall.On(transaction).Throw(new TestSqlException("Cannot commit", "314"));
|
||||
@@ -716,7 +717,7 @@ namespace Spring.Data
|
||||
Expect.Call(dbProvider.CreateConnection()).Return(connection);
|
||||
connection.Open();
|
||||
LastCall.On(connection).Repeat.Once();
|
||||
Expect.Call(connection.BeginTransaction(IsolationLevel.ReadCommitted)).Return(transaction);
|
||||
Expect.Call(connection.BeginTransaction(_defaultIsolationLevel)).Return(transaction);
|
||||
transaction.Commit();
|
||||
LastCall.On(transaction).Throw(new TestSqlException("Cannot commit", "314"));
|
||||
|
||||
@@ -762,7 +763,7 @@ namespace Spring.Data
|
||||
Expect.Call(dbProvider.CreateConnection()).Return(connection);
|
||||
connection.Open();
|
||||
LastCall.On(connection).Repeat.Once();
|
||||
Expect.Call(connection.BeginTransaction(IsolationLevel.ReadCommitted)).Return(transaction);
|
||||
Expect.Call(connection.BeginTransaction(_defaultIsolationLevel)).Return(transaction);
|
||||
//standard tx timeout.
|
||||
transaction.Rollback();
|
||||
LastCall.On(transaction).Throw(new TestSqlException("Cannot commit", "314"));
|
||||
@@ -876,7 +877,7 @@ namespace Spring.Data
|
||||
Expect.Call(dbProvider.CreateConnection()).Return(connection);
|
||||
connection.Open();
|
||||
LastCall.On(connection).Repeat.Once();
|
||||
Expect.Call(connection.BeginTransaction(IsolationLevel.ReadCommitted)).Return(transaction);
|
||||
Expect.Call(connection.BeginTransaction(_defaultIsolationLevel)).Return(transaction);
|
||||
|
||||
transaction.Rollback();
|
||||
LastCall.On(transaction).Repeat.Once();
|
||||
@@ -922,7 +923,7 @@ namespace Spring.Data
|
||||
Expect.Call(dbProvider.CreateConnection()).Return(connection);
|
||||
connection.Open();
|
||||
LastCall.On(connection).Repeat.Once();
|
||||
Expect.Call(connection.BeginTransaction(IsolationLevel.ReadCommitted)).Return(transaction);
|
||||
Expect.Call(connection.BeginTransaction(_defaultIsolationLevel)).Return(transaction);
|
||||
//standard tx timeout.
|
||||
transaction.Commit();
|
||||
LastCall.On(transaction).Repeat.Once();
|
||||
@@ -970,7 +971,7 @@ namespace Spring.Data
|
||||
Expect.Call(dbProvider.CreateConnection()).Return(connection);
|
||||
connection.Open();
|
||||
LastCall.On(connection).Repeat.Once();
|
||||
Expect.Call(connection.BeginTransaction(IsolationLevel.ReadCommitted)).Return(transaction);
|
||||
Expect.Call(connection.BeginTransaction(_defaultIsolationLevel)).Return(transaction);
|
||||
transaction.Rollback();
|
||||
LastCall.On(transaction).Repeat.Once();
|
||||
connection.Dispose();
|
||||
|
||||
@@ -159,7 +159,7 @@ namespace Spring.Data.Core
|
||||
// inner tx
|
||||
ConfigureServiceConfig(serviceConfig, false);
|
||||
serviceConfig.TransactionOption = TransactionOption.RequiresNew;
|
||||
serviceConfig.IsolationLevel = TransactionIsolationLevel.ReadCommitted;
|
||||
serviceConfig.IsolationLevel = TransactionIsolationLevel.Any;
|
||||
txAdapter.Enter(serviceConfig);
|
||||
Expect.Call(txAdapter.IsInTransaction).Return(true);
|
||||
txAdapter.SetAbort();
|
||||
@@ -204,7 +204,7 @@ namespace Spring.Data.Core
|
||||
if (standardIsolationAndProp)
|
||||
{
|
||||
serviceConfig.TransactionOption = TransactionOption.Required;
|
||||
serviceConfig.IsolationLevel = TransactionIsolationLevel.ReadCommitted;
|
||||
serviceConfig.IsolationLevel = TransactionIsolationLevel.Any;
|
||||
}
|
||||
return serviceConfig;
|
||||
|
||||
|
||||
@@ -57,7 +57,7 @@ namespace Spring.Data.Core
|
||||
{
|
||||
Expect.Call(txAdapter.IsExistingTransaction).Return(false);
|
||||
TransactionOptions txOptions = new TransactionOptions();
|
||||
txOptions.IsolationLevel = IsolationLevel.ReadCommitted;
|
||||
txOptions.IsolationLevel = IsolationLevel.Unspecified;
|
||||
txAdapter.CreateTransactionScope(TransactionScopeOption.Required, txOptions, EnterpriseServicesInteropOption.None);
|
||||
|
||||
Expect.Call(txAdapter.RollbackOnly).Return(false);
|
||||
@@ -94,7 +94,7 @@ namespace Spring.Data.Core
|
||||
{
|
||||
Expect.Call(txAdapter.IsExistingTransaction).Return(false);
|
||||
TransactionOptions txOptions = new TransactionOptions();
|
||||
txOptions.IsolationLevel = IsolationLevel.ReadCommitted;
|
||||
txOptions.IsolationLevel = IsolationLevel.Unspecified;
|
||||
txAdapter.CreateTransactionScope(TransactionScopeOption.Required, txOptions, EnterpriseServicesInteropOption.None);
|
||||
txAdapter.Dispose();
|
||||
}
|
||||
@@ -141,7 +141,7 @@ namespace Spring.Data.Core
|
||||
{
|
||||
Expect.Call(txAdapter.IsExistingTransaction).Return(false);
|
||||
TransactionOptions txOptions = new TransactionOptions();
|
||||
txOptions.IsolationLevel = IsolationLevel.ReadCommitted;
|
||||
txOptions.IsolationLevel = IsolationLevel.Unspecified;
|
||||
txAdapter.CreateTransactionScope(TransactionScopeOption.RequiresNew, txOptions, EnterpriseServicesInteropOption.None);
|
||||
|
||||
//inner tx actions
|
||||
|
||||
@@ -18,7 +18,7 @@ namespace Spring.Transaction.Interceptor
|
||||
public void ToStringTests()
|
||||
{
|
||||
DefaultTransactionAttribute dta = new DefaultTransactionAttribute();
|
||||
Assert.AreEqual( "PROPAGATION_Required,ISOLATION_ReadCommitted,-System.Exception", dta.ToString());
|
||||
Assert.AreEqual( "PROPAGATION_Required,ISOLATION_Unspecified,-System.Exception", dta.ToString());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -34,7 +34,7 @@ namespace Spring.Transaction.Interceptor
|
||||
ITransactionAttribute ta = editor.Value;
|
||||
Assert.IsTrue( ta != null );
|
||||
Assert.IsTrue( ta.PropagationBehavior == TransactionPropagation.Required );
|
||||
Assert.IsTrue( ta.TransactionIsolationLevel == IsolationLevel.ReadCommitted );
|
||||
Assert.IsTrue( ta.TransactionIsolationLevel == IsolationLevel.Unspecified );
|
||||
Assert.IsFalse( ta.ReadOnly );
|
||||
}
|
||||
|
||||
|
||||
@@ -59,7 +59,7 @@ namespace Spring.Transaction.Interceptor
|
||||
{
|
||||
ITransactionAttribute ta = tas.ReturnTransactionAttribute( method, null );
|
||||
Assert.IsTrue( ta != null );
|
||||
Assert.IsTrue( ta.TransactionIsolationLevel == IsolationLevel.ReadCommitted );
|
||||
Assert.IsTrue( ta.TransactionIsolationLevel == IsolationLevel.Unspecified );
|
||||
Assert.IsTrue( ta.PropagationBehavior == transactionPropagation);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -23,12 +23,18 @@ namespace Spring.Transaction.Support
|
||||
Assert.IsTrue( true == def.ReadOnly );
|
||||
}
|
||||
[Test]
|
||||
public void IsolationLeveNonDefaultl()
|
||||
public void PropogationBehaviorDefault()
|
||||
{
|
||||
DefaultTransactionDefinition def = new DefaultTransactionDefinition();
|
||||
Assert.IsTrue( def.PropagationBehavior == TransactionPropagation.Required );
|
||||
}
|
||||
[Test]
|
||||
[Test]
|
||||
public void IsolationLevelDefault()
|
||||
{
|
||||
DefaultTransactionDefinition def = new DefaultTransactionDefinition();
|
||||
Assert.IsTrue(def.TransactionIsolationLevel == IsolationLevel.Unspecified);
|
||||
}
|
||||
[Test]
|
||||
[ExpectedException(typeof(ArgumentException))]
|
||||
public void InvalidTimeout()
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user