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 2016/11/14 10:38:41 UTC

ignite git commit: IGNITE-4216 .NET: Fix PlatformAffinityFunction to inject resource into baseFunc

Repository: ignite
Updated Branches:
  refs/heads/master ad2831e78 -> 3aae5cb1d


IGNITE-4216 .NET: Fix PlatformAffinityFunction to inject resource into baseFunc


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

Branch: refs/heads/master
Commit: 3aae5cb1d9d547f1d36783f902fdab3e9d5da570
Parents: ad2831e
Author: Pavel Tupitsyn <pt...@apache.org>
Authored: Mon Nov 14 13:38:33 2016 +0300
Committer: Pavel Tupitsyn <pt...@apache.org>
Committed: Mon Nov 14 13:38:33 2016 +0300

----------------------------------------------------------------------
 .../affinity/PlatformAffinityFunction.java      |  7 ++++-
 .../dotnet/PlatformDotNetAffinityFunction.java  |  9 ++----
 .../Cache/Affinity/AffinityFunctionTest.cs      | 33 ++++++++++++++++++--
 .../Apache.Ignite.Core.Tests/TestUtils.cs       |  3 +-
 4 files changed, 41 insertions(+), 11 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ignite/blob/3aae5cb1/modules/core/src/main/java/org/apache/ignite/internal/processors/platform/cache/affinity/PlatformAffinityFunction.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/platform/cache/affinity/PlatformAffinityFunction.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/platform/cache/affinity/PlatformAffinityFunction.java
index 1e844e7..8076a19 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/platform/cache/affinity/PlatformAffinityFunction.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/platform/cache/affinity/PlatformAffinityFunction.java
@@ -18,10 +18,12 @@
 package org.apache.ignite.internal.processors.platform.cache.affinity;
 
 import org.apache.ignite.Ignite;
+import org.apache.ignite.IgniteCheckedException;
 import org.apache.ignite.IgniteException;
 import org.apache.ignite.cache.affinity.AffinityFunction;
 import org.apache.ignite.cache.affinity.AffinityFunctionContext;
 import org.apache.ignite.cluster.ClusterNode;
+import org.apache.ignite.internal.IgniteEx;
 import org.apache.ignite.internal.binary.BinaryRawWriterEx;
 import org.apache.ignite.internal.processors.platform.PlatformContext;
 import org.apache.ignite.internal.processors.platform.memory.PlatformMemory;
@@ -298,7 +300,10 @@ public class PlatformAffinityFunction implements AffinityFunction, Externalizabl
      */
     @SuppressWarnings("unused")
     @IgniteInstanceResource
-    public void setIgnite(Ignite ignite) {
+    public void setIgnite(Ignite ignite) throws IgniteCheckedException {
         this.ignite = ignite;
+
+        if (baseFunc != null && ignite != null)
+            ((IgniteEx)ignite).context().resource().injectGeneric(baseFunc);
     }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/ignite/blob/3aae5cb1/modules/core/src/main/java/org/apache/ignite/platform/dotnet/PlatformDotNetAffinityFunction.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/platform/dotnet/PlatformDotNetAffinityFunction.java b/modules/core/src/main/java/org/apache/ignite/platform/dotnet/PlatformDotNetAffinityFunction.java
index 483fd22..f9f457d 100644
--- a/modules/core/src/main/java/org/apache/ignite/platform/dotnet/PlatformDotNetAffinityFunction.java
+++ b/modules/core/src/main/java/org/apache/ignite/platform/dotnet/PlatformDotNetAffinityFunction.java
@@ -18,17 +18,12 @@
 package org.apache.ignite.platform.dotnet;
 
 import org.apache.ignite.Ignite;
+import org.apache.ignite.IgniteCheckedException;
 import org.apache.ignite.IgniteException;
-import org.apache.ignite.binary.BinaryRawWriter;
 import org.apache.ignite.cache.affinity.AffinityFunction;
 import org.apache.ignite.cache.affinity.AffinityFunctionContext;
 import org.apache.ignite.cluster.ClusterNode;
-import org.apache.ignite.internal.binary.BinaryRawWriterEx;
-import org.apache.ignite.internal.processors.platform.PlatformContext;
 import org.apache.ignite.internal.processors.platform.cache.affinity.PlatformAffinityFunction;
-import org.apache.ignite.internal.processors.platform.memory.PlatformMemory;
-import org.apache.ignite.internal.processors.platform.memory.PlatformOutputStream;
-import org.apache.ignite.internal.processors.platform.utils.PlatformUtils;
 import org.apache.ignite.lifecycle.LifecycleAware;
 import org.apache.ignite.resources.IgniteInstanceResource;
 
@@ -178,7 +173,7 @@ public class PlatformDotNetAffinityFunction implements AffinityFunction, Externa
      */
     @SuppressWarnings("unused")
     @IgniteInstanceResource
-    private void setIgnite(Ignite ignite) {
+    private void setIgnite(Ignite ignite) throws IgniteCheckedException {
         assert func != null;
 
         func.setIgnite(ignite);

http://git-wip-us.apache.org/repos/asf/ignite/blob/3aae5cb1/modules/platforms/dotnet/Apache.Ignite.Core.Tests/Cache/Affinity/AffinityFunctionTest.cs
----------------------------------------------------------------------
diff --git a/modules/platforms/dotnet/Apache.Ignite.Core.Tests/Cache/Affinity/AffinityFunctionTest.cs b/modules/platforms/dotnet/Apache.Ignite.Core.Tests/Cache/Affinity/AffinityFunctionTest.cs
index f38cb3e..d4b6680 100644
--- a/modules/platforms/dotnet/Apache.Ignite.Core.Tests/Cache/Affinity/AffinityFunctionTest.cs
+++ b/modules/platforms/dotnet/Apache.Ignite.Core.Tests/Cache/Affinity/AffinityFunctionTest.cs
@@ -100,8 +100,8 @@ namespace Apache.Ignite.Core.Tests.Cache.Affinity
         public void FixtureTearDown()
         {
             // Check that affinity handles are present
-            TestUtils.AssertHandleRegistryHasItems(_ignite, _ignite.GetCacheNames().Count - 1, 0);
-            TestUtils.AssertHandleRegistryHasItems(_ignite2, _ignite.GetCacheNames().Count - 1, 0);
+            TestUtils.AssertHandleRegistryHasItems(_ignite, _ignite.GetCacheNames().Count - 3, 0);
+            TestUtils.AssertHandleRegistryHasItems(_ignite2, _ignite.GetCacheNames().Count - 3, 0);
 
             // Destroy all caches
             _ignite.GetCacheNames().ToList().ForEach(_ignite.DestroyCache);
@@ -165,6 +165,34 @@ namespace Apache.Ignite.Core.Tests.Cache.Affinity
         }
 
         /// <summary>
+        /// Tests the dynamic cache with predefined functions.
+        /// </summary>
+        [Test]
+        public void TestDynamicCachePredefined()
+        {
+            var caches = new[]
+            {
+                new CacheConfiguration("rendezvousPredefined")
+                {
+                    AffinityFunction = new RendezvousAffinityFunction {Partitions = 1234}
+                },
+                new CacheConfiguration("fairPredefined")
+                {
+                    AffinityFunction = new FairAffinityFunction {Partitions = 1234}
+                },
+            }.Select(_ignite.CreateCache<int, int>);
+
+            foreach (var cache in caches)
+            {
+                Assert.AreEqual(1234, cache.GetConfiguration().AffinityFunction.Partitions);
+
+                cache[1] = 2;
+
+                Assert.AreEqual(2, cache[1]);
+            }
+        }
+
+        /// <summary>
         /// Verifies the cache affinity.
         /// </summary>
         private static void VerifyCacheAffinity(ICache<int, int> cache)
@@ -231,6 +259,7 @@ namespace Apache.Ignite.Core.Tests.Cache.Affinity
             });
 
             var ex = Assert.Throws<CacheException>(() => cache.Put(1, 2));
+            Assert.IsNotNull(ex.InnerException);
             Assert.AreEqual("User error", ex.InnerException.Message);
         }
 

http://git-wip-us.apache.org/repos/asf/ignite/blob/3aae5cb1/modules/platforms/dotnet/Apache.Ignite.Core.Tests/TestUtils.cs
----------------------------------------------------------------------
diff --git a/modules/platforms/dotnet/Apache.Ignite.Core.Tests/TestUtils.cs b/modules/platforms/dotnet/Apache.Ignite.Core.Tests/TestUtils.cs
index 5a9c824..7d483bb 100644
--- a/modules/platforms/dotnet/Apache.Ignite.Core.Tests/TestUtils.cs
+++ b/modules/platforms/dotnet/Apache.Ignite.Core.Tests/TestUtils.cs
@@ -287,7 +287,8 @@ namespace Apache.Ignite.Core.Tests
             var items = handleRegistry.GetItems().Where(x => !(x.Value is LifecycleBeanHolder)).ToList();
 
             if (items.Any())
-                Assert.Fail("HandleRegistry is not empty in grid '{0}':\n '{1}'", grid.Name,
+                Assert.Fail("HandleRegistry is not empty in grid '{0}' (expected {1}, actual {2}):\n '{3}'", 
+                    grid.Name, expectedCount, handleRegistry.Count,
                     items.Select(x => x.ToString()).Aggregate((x, y) => x + "\n" + y));
         }