You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by dm...@apache.org on 2016/08/16 23:23:37 UTC
ignite git commit: IGNITE-3263: Affinity function must check for null
keys. Reviewed and merged by Denis Magda (dmagda@gridgain.com)
Repository: ignite
Updated Branches:
refs/heads/master e4eda7cf3 -> 4199ff41f
IGNITE-3263: Affinity function must check for null keys.
Reviewed and merged by Denis Magda (dmagda@gridgain.com)
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/4199ff41
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/4199ff41
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/4199ff41
Branch: refs/heads/master
Commit: 4199ff41f034272730029d7a1a9146a808ab7bf2
Parents: e4eda7c
Author: Saikat Maitra <sa...@gmail.com>
Authored: Tue Aug 16 16:23:32 2016 -0700
Committer: Denis Magda <dm...@gridgain.com>
Committed: Tue Aug 16 16:23:32 2016 -0700
----------------------------------------------------------------------
.../cache/affinity/fair/FairAffinityFunction.java | 6 +++++-
.../rendezvous/RendezvousAffinityFunction.java | 4 ++++
.../AbstractAffinityFunctionSelfTest.java | 18 +++++++++++++++++-
3 files changed, 26 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/4199ff41/modules/core/src/main/java/org/apache/ignite/cache/affinity/fair/FairAffinityFunction.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/cache/affinity/fair/FairAffinityFunction.java b/modules/core/src/main/java/org/apache/ignite/cache/affinity/fair/FairAffinityFunction.java
index 105efab..c624df4 100644
--- a/modules/core/src/main/java/org/apache/ignite/cache/affinity/fair/FairAffinityFunction.java
+++ b/modules/core/src/main/java/org/apache/ignite/cache/affinity/fair/FairAffinityFunction.java
@@ -354,6 +354,10 @@ public class FairAffinityFunction implements AffinityFunction {
/** {@inheritDoc} */
@Override public int partition(Object key) {
+ if (key == null)
+ throw new IllegalArgumentException("Null key is passed for a partition calculation. " +
+ "Make sure that an affinity key that is used is initialized properly.");
+
return U.safeAbs(hash(key.hashCode())) % parts;
}
@@ -1137,4 +1141,4 @@ public class FairAffinityFunction implements AffinityFunction {
return "PartSet [nodeId=" + node.id() + ", size=" + parts.size() + ", parts=" + parts + ']';
}
}
-}
\ No newline at end of file
+}
http://git-wip-us.apache.org/repos/asf/ignite/blob/4199ff41/modules/core/src/main/java/org/apache/ignite/cache/affinity/rendezvous/RendezvousAffinityFunction.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/cache/affinity/rendezvous/RendezvousAffinityFunction.java b/modules/core/src/main/java/org/apache/ignite/cache/affinity/rendezvous/RendezvousAffinityFunction.java
index aa8680c..e876fb5 100644
--- a/modules/core/src/main/java/org/apache/ignite/cache/affinity/rendezvous/RendezvousAffinityFunction.java
+++ b/modules/core/src/main/java/org/apache/ignite/cache/affinity/rendezvous/RendezvousAffinityFunction.java
@@ -464,6 +464,10 @@ public class RendezvousAffinityFunction implements AffinityFunction, Externaliza
/** {@inheritDoc} */
@Override public int partition(Object key) {
+ if (key == null)
+ throw new IllegalArgumentException("Null key is passed for a partition calculation. " +
+ "Make sure that an affinity key that is used is initialized properly.");
+
return U.safeAbs(key.hashCode() % parts);
}
http://git-wip-us.apache.org/repos/asf/ignite/blob/4199ff41/modules/core/src/test/java/org/apache/ignite/cache/affinity/AbstractAffinityFunctionSelfTest.java
----------------------------------------------------------------------
diff --git a/modules/core/src/test/java/org/apache/ignite/cache/affinity/AbstractAffinityFunctionSelfTest.java b/modules/core/src/test/java/org/apache/ignite/cache/affinity/AbstractAffinityFunctionSelfTest.java
index 878d7d1..ee5b65c 100644
--- a/modules/core/src/test/java/org/apache/ignite/cache/affinity/AbstractAffinityFunctionSelfTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/cache/affinity/AbstractAffinityFunctionSelfTest.java
@@ -106,6 +106,22 @@ public abstract class AbstractAffinityFunctionSelfTest extends GridCommonAbstrac
/**
* @throws Exception If failed.
*/
+ public void testNullKeyForPartitionCalculation() throws Exception {
+ AffinityFunction aff = affinityFunction();
+
+ try {
+ aff.partition(null);
+
+ fail("Should throw IllegalArgumentException due to NULL affinity key.");
+ } catch (IllegalArgumentException e) {
+ e.getMessage().contains("Null key is passed for a partition calculation. " +
+ "Make sure that an affinity key that is used is initialized properly.");
+ }
+ }
+
+ /**
+ * @throws Exception If failed.
+ */
protected void checkNodeRemoved(int backups) throws Exception {
checkNodeRemoved(backups, 1, 1);
}
@@ -290,4 +306,4 @@ public abstract class AbstractAffinityFunctionSelfTest extends GridCommonAbstrac
private static int deviation(int val, int ideal) {
return Math.round(Math.abs(((float)val - ideal) / ideal * 100));
}
-}
\ No newline at end of file
+}