You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by pt...@apache.org on 2019/02/03 17:19:33 UTC
[ignite] branch master updated: IGNITE-11168 .NET: Fix
TxTimeoutOnPartitionMapExchange propagation
This is an automated email from the ASF dual-hosted git repository.
ptupitsyn pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/ignite.git
The following commit(s) were added to refs/heads/master by this push:
new 1fc82730 IGNITE-11168 .NET: Fix TxTimeoutOnPartitionMapExchange propagation
1fc82730 is described below
commit 1fc82730f6b9bb1a2bb1c26a185323d64263bb40
Author: Ivan Daschinskiy <iv...@gmail.com>
AuthorDate: Sun Feb 3 20:19:06 2019 +0300
IGNITE-11168 .NET: Fix TxTimeoutOnPartitionMapExchange propagation
This closes #6003
---
.../transactions/PlatformTransactions.java | 2 +
.../Cache/CacheTimeoutOnPmeTransactionalTest.cs | 108 +++++++++++++--------
.../Apache.Ignite.Core/IgniteConfiguration.cs | 2 +-
.../dotnet/Apache.Ignite.Core/Impl/Ignite.cs | 2 +-
.../Impl/Transactions/Transaction.cs | 6 ++
.../Impl/Transactions/TransactionImpl.cs | 15 ++-
.../Impl/Transactions/TransactionsImpl.cs | 14 ++-
.../Transactions/ITransaction.cs | 8 ++
8 files changed, 112 insertions(+), 45 deletions(-)
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/platform/transactions/PlatformTransactions.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/platform/transactions/PlatformTransactions.java
index f557ff5..76b9d5f 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/platform/transactions/PlatformTransactions.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/platform/transactions/PlatformTransactions.java
@@ -305,6 +305,8 @@ public class PlatformTransactions extends PlatformAbstractTarget {
writer.writeInt(tx.isolation().ordinal());
writer.writeLong(tx.timeout());
+
+ writer.writeString(tx.label());
}
});
diff --git a/modules/platforms/dotnet/Apache.Ignite.Core.Tests/Cache/CacheTimeoutOnPmeTransactionalTest.cs b/modules/platforms/dotnet/Apache.Ignite.Core.Tests/Cache/CacheTimeoutOnPmeTransactionalTest.cs
index c0bade0..2acaea3 100644
--- a/modules/platforms/dotnet/Apache.Ignite.Core.Tests/Cache/CacheTimeoutOnPmeTransactionalTest.cs
+++ b/modules/platforms/dotnet/Apache.Ignite.Core.Tests/Cache/CacheTimeoutOnPmeTransactionalTest.cs
@@ -18,24 +18,74 @@
namespace Apache.Ignite.Core.Tests.Cache
{
using System;
+ using System.Collections.Generic;
using System.Linq;
+ using Apache.Ignite.Core.Cache.Configuration;
using Apache.Ignite.Core.Transactions;
using NUnit.Framework;
- [Category(TestUtils.CategoryIntensive)]
- public class CacheTimeoutOnPmeTransactionalTest : CacheAbstractTransactionalTest
+ /// <summary>
+ /// Tests setting transactions timeout on partition map exchange.
+ /// </summary>
+ public class CacheTimeoutOnPmeTransactionalTest
{
+ /** */
+ private static readonly TimeSpan TxPartitionMapExchangeTimeout = TimeSpan.FromSeconds(5);
+
+ /** */
+ private const string DefaultCacheName = "default";
+
+ /** */
+ private const string TxLabel = "tx-label";
+
+ /** */
+ private IIgnite _grid;
+
+ /// <summary>
+ /// Fixture setup.
+ /// </summary>
+ [TestFixtureSetUp]
+ public void StartGrids()
+ {
+ IgniteConfiguration cfg = new IgniteConfiguration(TestUtils.GetTestConfiguration())
+ {
+ TransactionConfiguration = new TransactionConfiguration()
+ {
+ DefaultTimeoutOnPartitionMapExchange = TxPartitionMapExchangeTimeout
+ },
+ CacheConfiguration = new List<CacheConfiguration>()
+ {
+ new CacheConfiguration(new CacheConfiguration(DefaultCacheName))
+ }
+ };
+
+ _grid = Ignition.Start(cfg);
+ }
+
+ /// <summary>
+ /// Fixture teardown.
+ /// </summary>
+ [TestFixtureTearDown]
+ public void StopGrids()
+ {
+ Ignition.StopAll(true);
+ }
+
/// <summary>
- /// Tests that setting transaction PME timeout works and changes are propagated to Transactions.
+ /// Tests that setting transaction PME timeout works and changes are propagated to Transactions,
+ /// also tests that passing timeout from <see cref="IgniteConfiguration"/> also works.
/// </summary>
[Test]
public void TestSettingPartitionMapExchangeTimeout()
{
- IIgnite ignite = GetIgnite(0);
+ var txTimeoutFromConfig =
+ _grid.GetConfiguration().TransactionConfiguration.DefaultTimeoutOnPartitionMapExchange;
- ignite.GetCluster().SetTxTimeoutOnPartitionMapExchange(TimeSpan.FromSeconds(12));
+ Assert.AreEqual(TxPartitionMapExchangeTimeout, txTimeoutFromConfig);
+
+ _grid.GetCluster().SetTxTimeoutOnPartitionMapExchange(TimeSpan.FromSeconds(12));
- Assert.AreEqual(ignite.GetTransactions().DefaultTimeoutOnPartitionMapExchange, TimeSpan.FromSeconds(12));
+ Assert.AreEqual(_grid.GetTransactions().DefaultTimeoutOnPartitionMapExchange, TimeSpan.FromSeconds(12));
}
/// <summary>
@@ -44,11 +94,9 @@ namespace Apache.Ignite.Core.Tests.Cache
[Test]
public void TestLocalActiveTransactions()
{
- IIgnite ignite = GetIgnite(0);
-
- using (var tx = ignite.GetTransactions().TxStart(TransactionConcurrency.Optimistic,
+ using (var tx = _grid.GetTransactions().WithLabel(TxLabel).TxStart(TransactionConcurrency.Optimistic,
TransactionIsolation.ReadCommitted, TimeSpan.FromSeconds(20), 1))
- using (var activeTxCollection = ignite.GetTransactions().GetLocalActiveTransactions())
+ using (var activeTxCollection = _grid.GetTransactions().GetLocalActiveTransactions())
{
Assert.IsNotEmpty(activeTxCollection);
@@ -59,50 +107,32 @@ namespace Apache.Ignite.Core.Tests.Cache
Assert.AreEqual(testTx.Isolation, tx.Isolation);
Assert.AreEqual(testTx.Timeout, tx.Timeout);
+
+ Assert.AreEqual(testTx.Label, tx.Label);
+
+ Assert.AreEqual(testTx.Label, TxLabel);
tx.Commit();
- Assert.AreEqual(testTx.State, TransactionState.Committed);
-
+ Assert.AreEqual(testTx.State, TransactionState.Committed);
}
- using (var tx = ignite.GetTransactions().TxStart(TransactionConcurrency.Optimistic,
+ using (var tx = _grid.GetTransactions().TxStart(TransactionConcurrency.Optimistic,
TransactionIsolation.ReadCommitted, TimeSpan.FromSeconds(20), 1))
- using (var activeTxCollection = ignite.GetTransactions().GetLocalActiveTransactions())
+ using (var activeTxCollection = _grid.GetTransactions().GetLocalActiveTransactions())
{
Assert.IsNotEmpty(activeTxCollection);
var testTx = activeTxCollection.ElementAt(0);
testTx.Rollback();
+
+ Assert.AreEqual(tx.Label, null);
+
+ Assert.AreEqual(testTx.Label, null);
Assert.AreEqual(tx.State, TransactionState.RolledBack);
}
}
-
- protected override ITransactions Transactions
- {
- get { return GetIgnite(0).GetTransactions().WithLabel("test-tx"); }
- }
-
- protected override int GridCount()
- {
- return 3;
- }
-
- protected override string CacheName()
- {
- return "partitioned";
- }
-
- protected override bool NearEnabled()
- {
- return false;
- }
-
- protected override int Backups()
- {
- return 1;
- }
}
}
diff --git a/modules/platforms/dotnet/Apache.Ignite.Core/IgniteConfiguration.cs b/modules/platforms/dotnet/Apache.Ignite.Core/IgniteConfiguration.cs
index 523ca65..425a232 100644
--- a/modules/platforms/dotnet/Apache.Ignite.Core/IgniteConfiguration.cs
+++ b/modules/platforms/dotnet/Apache.Ignite.Core/IgniteConfiguration.cs
@@ -514,7 +514,7 @@ namespace Apache.Ignite.Core
writer.WriteInt((int) TransactionConfiguration.DefaultTransactionIsolation);
writer.WriteLong((long) TransactionConfiguration.DefaultTimeout.TotalMilliseconds);
writer.WriteInt((int) TransactionConfiguration.PessimisticTransactionLogLinger.TotalMilliseconds);
- writer.WriteLong((long) TransactionConfiguration.DefaultDefaultTimeoutOnPartitionMapExchange.TotalMilliseconds);
+ writer.WriteLong((long) TransactionConfiguration.DefaultTimeoutOnPartitionMapExchange.TotalMilliseconds);
writer.WriteLong((long) TransactionConfiguration.DeadlockTimeout.TotalMilliseconds);
}
else
diff --git a/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Ignite.cs b/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Ignite.cs
index ecec768..bff92fc 100644
--- a/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Ignite.cs
+++ b/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Ignite.cs
@@ -963,7 +963,7 @@ namespace Apache.Ignite.Core.Impl
w.WriteString(label);
});
- return new TransactionsImpl(this, platformTargetInternal, GetLocalNode().Id);
+ return new TransactionsImpl(this, platformTargetInternal, GetLocalNode().Id, label);
}
/// <summary>
diff --git a/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Transactions/Transaction.cs b/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Transactions/Transaction.cs
index f700bfd..7f20339 100644
--- a/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Transactions/Transaction.cs
+++ b/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Transactions/Transaction.cs
@@ -90,6 +90,12 @@ namespace Apache.Ignite.Core.Impl.Transactions
}
/** <inheritDoc /> */
+ public string Label
+ {
+ get { return _tx.Label; }
+ }
+
+ /** <inheritDoc /> */
public bool IsRollbackOnly
{
get { return _tx.IsRollbackOnly; }
diff --git a/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Transactions/TransactionImpl.cs b/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Transactions/TransactionImpl.cs
index 396171c..df90fd7 100644
--- a/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Transactions/TransactionImpl.cs
+++ b/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Transactions/TransactionImpl.cs
@@ -47,6 +47,9 @@ namespace Apache.Ignite.Core.Impl.Transactions
/** Timeout. */
private readonly TimeSpan _timeout;
+ /** TX label. */
+ private readonly string _label;
+
/** Start time. */
private readonly DateTime _startTime;
@@ -72,15 +75,17 @@ namespace Apache.Ignite.Core.Impl.Transactions
/// <param name="concurrency">TX concurrency.</param>
/// <param name="isolation">TX isolation.</param>
/// <param name="timeout">Timeout.</param>
+ /// <param name="label">TX label.</param>
/// <param name="nodeId">The originating node identifier.</param>
/// <param name="bindToThread">Bind transaction to current thread or not.</param>
public TransactionImpl(long id, TransactionsImpl txs, TransactionConcurrency concurrency,
- TransactionIsolation isolation, TimeSpan timeout, Guid nodeId, bool bindToThread = true) {
+ TransactionIsolation isolation, TimeSpan timeout, string label, Guid nodeId, bool bindToThread = true) {
_id = id;
_txs = txs;
_concurrency = concurrency;
_isolation = isolation;
_timeout = timeout;
+ _label = label;
_nodeId = nodeId;
_startTime = DateTime.Now;
@@ -223,6 +228,14 @@ namespace Apache.Ignite.Core.Impl.Transactions
}
/// <summary>
+ /// Label of current transaction.
+ /// </summary>
+ public string Label
+ {
+ get { return _label; }
+ }
+
+ /// <summary>
/// Gets the start time.
/// </summary>
public DateTime StartTime
diff --git a/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Transactions/TransactionsImpl.cs b/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Transactions/TransactionsImpl.cs
index 99cb837..cdf5641 100644
--- a/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Transactions/TransactionsImpl.cs
+++ b/modules/platforms/dotnet/Apache.Ignite.Core/Impl/Transactions/TransactionsImpl.cs
@@ -89,13 +89,18 @@ namespace Apache.Ignite.Core.Impl.Transactions
/** */
private readonly Ignite _ignite;
+ /** */
+ private readonly string _label;
+
/// <summary>
/// Initializes a new instance of the <see cref="TransactionsImpl" /> class.
/// </summary>
/// <param name="ignite">Parent target, actually <see cref="Ignite"/> (used for withLabel)</param>
/// <param name="target">Target.</param>
/// <param name="localNodeId">Local node id.</param>
- public TransactionsImpl(Ignite ignite, IPlatformTargetInternal target, Guid localNodeId) : base(target)
+ /// <param name="label">TX label. </param>
+ public TransactionsImpl(Ignite ignite, IPlatformTargetInternal target, Guid localNodeId, string label = null)
+ : base(target)
{
_localNodeId = localNodeId;
@@ -111,6 +116,7 @@ namespace Apache.Ignite.Core.Impl.Transactions
_dfltTimeout = res.Item3;
_dfltTimeoutOnPartitionMapExchange = res.Item4;
_ignite = ignite;
+ _label = label;
}
/** <inheritDoc /> */
@@ -138,7 +144,7 @@ namespace Apache.Ignite.Core.Impl.Transactions
w.WriteInt(txSize);
}, s => s.ReadLong());
- var innerTx = new TransactionImpl(id, this, concurrency, isolation, timeout, _localNodeId);
+ var innerTx = new TransactionImpl(id, this, concurrency, isolation, timeout, _label, _localNodeId);
return new Transaction(innerTx);
}
@@ -195,8 +201,10 @@ namespace Apache.Ignite.Core.Impl.Transactions
var timeout = reader.ReadLongAsTimespan();
+ var label = reader.ReadString();
+
var innerTx = new TransactionImpl(id, this, (TransactionConcurrency) concurrency,
- (TransactionIsolation) isolation, timeout, _localNodeId, false);
+ (TransactionIsolation) isolation, timeout, label, _localNodeId, false);
result.Add(new Transaction(innerTx));
}
diff --git a/modules/platforms/dotnet/Apache.Ignite.Core/Transactions/ITransaction.cs b/modules/platforms/dotnet/Apache.Ignite.Core/Transactions/ITransaction.cs
index 488b85f..31c2b1a 100644
--- a/modules/platforms/dotnet/Apache.Ignite.Core/Transactions/ITransaction.cs
+++ b/modules/platforms/dotnet/Apache.Ignite.Core/Transactions/ITransaction.cs
@@ -176,6 +176,14 @@ namespace Apache.Ignite.Core.Transactions
}
/// <summary>
+ /// Label of current transaction.
+ /// </summary>
+ string Label
+ {
+ get;
+ }
+
+ /// <summary>
/// Gets a value indicating whether this transaction was marked as rollback-only.
/// </summary>
bool IsRollbackOnly