You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by sh...@apache.org on 2016/11/01 02:37:58 UTC

[39/50] [abbrv] ignite git commit: IGNITE-2996 .NET: Added IgniteConfiguration.isLateAffinityAssignment method.

IGNITE-2996 .NET: Added IgniteConfiguration.isLateAffinityAssignment method.


Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/03b776fa
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/03b776fa
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/03b776fa

Branch: refs/heads/ignite-2788
Commit: 03b776fac8d3334074a9916fa8b67d1c376d3d97
Parents: f8bf93a
Author: Pavel Tupitsyn <pt...@gridgain.com>
Authored: Thu Apr 28 10:25:11 2016 +0300
Committer: shtykh_roman <rs...@yahoo.com>
Committed: Fri May 13 16:11:16 2016 +0900

----------------------------------------------------------------------
 .../utils/PlatformConfigurationUtils.java       |  2 ++
 .../IgniteConfigurationSerializerTest.cs        |  3 +-
 .../IgniteConfigurationTest.cs                  |  2 ++
 .../Apache.Ignite.Core/IgniteConfiguration.cs   | 34 ++++++++++++++++++++
 4 files changed, 40 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ignite/blob/03b776fa/modules/core/src/main/java/org/apache/ignite/internal/processors/platform/utils/PlatformConfigurationUtils.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/platform/utils/PlatformConfigurationUtils.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/platform/utils/PlatformConfigurationUtils.java
index 898bcf9..5ee19c1 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/platform/utils/PlatformConfigurationUtils.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/platform/utils/PlatformConfigurationUtils.java
@@ -345,6 +345,7 @@ public class PlatformConfigurationUtils {
         cfg.setWorkDirectory(in.readString());
         cfg.setLocalHost(in.readString());
         cfg.setDaemon(in.readBoolean());
+        cfg.setLateAffinityAssignment(in.readBoolean());
 
         readCacheConfigurations(in, cfg);
         readDiscoveryConfiguration(in, cfg);
@@ -671,6 +672,7 @@ public class PlatformConfigurationUtils {
         w.writeString(cfg.getWorkDirectory());
         w.writeString(cfg.getLocalHost());
         w.writeBoolean(cfg.isDaemon());
+        w.writeBoolean(cfg.isLateAffinityAssignment());
 
         CacheConfiguration[] cacheCfg = cfg.getCacheConfiguration();
 

http://git-wip-us.apache.org/repos/asf/ignite/blob/03b776fa/modules/platforms/dotnet/Apache.Ignite.Core.Tests/IgniteConfigurationSerializerTest.cs
----------------------------------------------------------------------
diff --git a/modules/platforms/dotnet/Apache.Ignite.Core.Tests/IgniteConfigurationSerializerTest.cs b/modules/platforms/dotnet/Apache.Ignite.Core.Tests/IgniteConfigurationSerializerTest.cs
index ae48e71..36bda2e 100644
--- a/modules/platforms/dotnet/Apache.Ignite.Core.Tests/IgniteConfigurationSerializerTest.cs
+++ b/modules/platforms/dotnet/Apache.Ignite.Core.Tests/IgniteConfigurationSerializerTest.cs
@@ -54,7 +54,7 @@ namespace Apache.Ignite.Core.Tests
         [Test]
         public void TestPredefinedXml()
         {
-            var xml = @"<igniteConfig workDirectory='c:' JvmMaxMemoryMb='1024' MetricsLogFrequency='0:0:10' isDaemon='true'>
+            var xml = @"<igniteConfig workDirectory='c:' JvmMaxMemoryMb='1024' MetricsLogFrequency='0:0:10' isDaemon='true' isLateAffinityAssignment='false'>
                             <localhost>127.1.1.1</localhost>
                             <binaryConfiguration compactFooter='false'>
                                 <defaultNameMapper type='Apache.Ignite.Core.Tests.IgniteConfigurationSerializerTest+NameMapper, Apache.Ignite.Core.Tests' bar='testBar' />
@@ -107,6 +107,7 @@ namespace Apache.Ignite.Core.Tests
             Assert.AreEqual("c:", cfg.WorkDirectory);
             Assert.AreEqual("127.1.1.1", cfg.Localhost);
             Assert.IsTrue(cfg.IsDaemon);
+            Assert.IsFalse(cfg.IsLateAffinityAssignment);
             Assert.AreEqual(1024, cfg.JvmMaxMemoryMb);
             Assert.AreEqual(TimeSpan.FromSeconds(10), cfg.MetricsLogFrequency);
             Assert.AreEqual(TimeSpan.FromMinutes(1), ((TcpDiscoverySpi)cfg.DiscoverySpi).JoinTimeout);

http://git-wip-us.apache.org/repos/asf/ignite/blob/03b776fa/modules/platforms/dotnet/Apache.Ignite.Core.Tests/IgniteConfigurationTest.cs
----------------------------------------------------------------------
diff --git a/modules/platforms/dotnet/Apache.Ignite.Core.Tests/IgniteConfigurationTest.cs b/modules/platforms/dotnet/Apache.Ignite.Core.Tests/IgniteConfigurationTest.cs
index c6a1cab..45b9a05 100644
--- a/modules/platforms/dotnet/Apache.Ignite.Core.Tests/IgniteConfigurationTest.cs
+++ b/modules/platforms/dotnet/Apache.Ignite.Core.Tests/IgniteConfigurationTest.cs
@@ -111,6 +111,7 @@ namespace Apache.Ignite.Core.Tests
                 Assert.IsTrue(File.Exists(resCfg.JvmDllPath));
                 Assert.AreEqual(cfg.Localhost, resCfg.Localhost);
                 Assert.AreEqual(cfg.IsDaemon, resCfg.IsDaemon);
+                Assert.AreEqual(cfg.IsLateAffinityAssignment, resCfg.IsLateAffinityAssignment);
                 Assert.AreEqual(cfg.UserAttributes, resCfg.UserAttributes);
 
                 var atm = cfg.AtomicConfiguration;
@@ -369,6 +370,7 @@ namespace Apache.Ignite.Core.Tests
                 JvmClasspath = TestUtils.CreateTestClasspath(),
                 Localhost = "127.0.0.1",
                 IsDaemon = true,
+                IsLateAffinityAssignment = false,
                 UserAttributes = Enumerable.Range(1, 10).ToDictionary(x => x.ToString(), x => (object) x),
                 AtomicConfiguration = new AtomicConfiguration
                 {

http://git-wip-us.apache.org/repos/asf/ignite/blob/03b776fa/modules/platforms/dotnet/Apache.Ignite.Core/IgniteConfiguration.cs
----------------------------------------------------------------------
diff --git a/modules/platforms/dotnet/Apache.Ignite.Core/IgniteConfiguration.cs b/modules/platforms/dotnet/Apache.Ignite.Core/IgniteConfiguration.cs
index e5f6a83..e14c15b 100644
--- a/modules/platforms/dotnet/Apache.Ignite.Core/IgniteConfiguration.cs
+++ b/modules/platforms/dotnet/Apache.Ignite.Core/IgniteConfiguration.cs
@@ -26,6 +26,7 @@
     using System.IO;
     using System.Linq;
     using Apache.Ignite.Core.Binary;
+    using Apache.Ignite.Core.Cache;
     using Apache.Ignite.Core.Cache.Configuration;
     using Apache.Ignite.Core.Cluster;
     using Apache.Ignite.Core.DataStructures.Configuration;
@@ -91,6 +92,11 @@
         public const int DefaultNetworkSendRetryCount = 3;
 
         /// <summary>
+        /// Default late affinity assignment mode.
+        /// </summary>
+        public const bool DefaultIsLateAffinityAssignment = true;
+
+        /// <summary>
         /// Initializes a new instance of the <see cref="IgniteConfiguration"/> class.
         /// </summary>
         public IgniteConfiguration()
@@ -105,6 +111,7 @@
             NetworkTimeout = DefaultNetworkTimeout;
             NetworkSendRetryCount = DefaultNetworkSendRetryCount;
             NetworkSendRetryDelay = DefaultNetworkSendRetryDelay;
+            IsLateAffinityAssignment = DefaultIsLateAffinityAssignment;
         }
 
         /// <summary>
@@ -181,6 +188,7 @@
             writer.WriteString(WorkDirectory);
             writer.WriteString(Localhost);
             writer.WriteBoolean(IsDaemon);
+            writer.WriteBoolean(IsLateAffinityAssignment);
 
             // Cache config
             var caches = CacheConfiguration;
@@ -283,6 +291,7 @@
             WorkDirectory = r.ReadString();
             Localhost = r.ReadString();
             IsDaemon = r.ReadBoolean();
+            IsLateAffinityAssignment = r.ReadBoolean();
 
             // Cache config
             var cacheCfgCount = r.ReadInt();
@@ -573,5 +582,30 @@
         /// Gets or sets the transaction configuration.
         /// </summary>
         public TransactionConfiguration TransactionConfiguration { get; set; }
+
+        /// <summary>
+        /// Gets or sets a value indicating whether late affinity assignment mode should be used.
+        /// <para />
+        /// On each topology change, for each started cache, partition-to-node mapping is
+        /// calculated using AffinityFunction for cache. When late
+        /// affinity assignment mode is disabled then new affinity mapping is applied immediately.
+        /// <para />
+        /// With late affinity assignment mode, if primary node was changed for some partition, but data for this
+        /// partition is not rebalanced yet on this node, then current primary is not changed and new primary 
+        /// is temporary assigned as backup. This nodes becomes primary only when rebalancing for all assigned primary 
+        /// partitions is finished. This mode can show better performance for cache operations, since when cache 
+        /// primary node executes some operation and data is not rebalanced yet, then it sends additional message 
+        /// to force rebalancing from other nodes.
+        /// <para />
+        /// Note, that <see cref="ICacheAffinity"/> interface provides assignment information taking late assignment
+        /// into account, so while rebalancing for new primary nodes is not finished it can return assignment 
+        /// which differs from assignment calculated by AffinityFunction.
+        /// <para />
+        /// This property should have the same value for all nodes in cluster.
+        /// <para />
+        /// If not provided, default value is <see cref="DefaultIsLateAffinityAssignment"/>.
+        /// </summary>
+        [DefaultValue(DefaultIsLateAffinityAssignment)]
+        public bool IsLateAffinityAssignment { get; set; }
     }
 }