Skip to content

Commit e425013

Browse files
IGNITE-26580 Fix tests
1 parent 988de1a commit e425013

File tree

4 files changed

+58
-5
lines changed

4 files changed

+58
-5
lines changed

modules/core/src/main/java/org/apache/ignite/cache/affinity/rendezvous/ClusterNodeAttributeAffinityBackupFilter.java

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717

1818
package org.apache.ignite.cache.affinity.rendezvous;
1919

20+
import java.util.Arrays;
2021
import java.util.List;
2122
import java.util.Objects;
2223
import org.apache.ignite.cluster.ClusterNode;
@@ -136,4 +137,22 @@ public ClusterNodeAttributeAffinityBackupFilter(String... attrNames) {
136137
public String[] getAttributeNames() {
137138
return attrNames.clone();
138139
}
140+
141+
/** {@inheritDoc} */
142+
@Override public boolean equals(Object o) {
143+
if (o == this)
144+
return true;
145+
146+
if (o == null || getClass() != o.getClass())
147+
return false;
148+
149+
ClusterNodeAttributeAffinityBackupFilter other = (ClusterNodeAttributeAffinityBackupFilter)o;
150+
151+
return Arrays.equals(attrNames, other.attrNames);
152+
}
153+
154+
/** {@inheritDoc} */
155+
@Override public int hashCode() {
156+
return Arrays.hashCode(attrNames);
157+
}
139158
}

modules/core/src/main/java/org/apache/ignite/cache/affinity/rendezvous/ClusterNodeAttributeColocatedBackupFilter.java

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -122,4 +122,22 @@ public ClusterNodeAttributeColocatedBackupFilter(String attrName) {
122122

123123
return primaryAttrVal.equals(candidateAttrVal);
124124
}
125+
126+
/** {@inheritDoc} */
127+
@Override public boolean equals(Object o) {
128+
if (o == this)
129+
return true;
130+
131+
if (o == null || getClass() != o.getClass())
132+
return false;
133+
134+
ClusterNodeAttributeColocatedBackupFilter other = (ClusterNodeAttributeColocatedBackupFilter)o;
135+
136+
return attrName.equals(other.attrName);
137+
}
138+
139+
/** {@inheritDoc} */
140+
@Override public int hashCode() {
141+
return attrName.hashCode();
142+
}
125143
}

modules/core/src/main/java/org/apache/ignite/internal/processors/cache/ClusterCachesInfo.java

Lines changed: 16 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -434,11 +434,22 @@ private void checkCache(CacheJoinNodeDiscoveryData.CacheInfo locInfo, CacheData
434434
"Affinity partitions count", locAttr.affinityPartitionsCount(),
435435
rmtAttr.affinityPartitionsCount(), true);
436436

437-
CU.checkAttributeMismatch(log, rmtAttr.cacheName(), rmt, "affinityBackupFilterClass", "Affinity backup filter class",
438-
locAttr.affinityBackupFilterClass(), rmtAttr.affinityBackupFilterClass(), true);
439-
440-
CU.checkAttributeMismatch(log, rmtAttr.cacheName(), rmt, "affinityBackupFilter", "Affinity backup filter",
441-
locAttr.affinityBackupFilter(), rmtAttr.affinityBackupFilter(), true);
437+
if (locAttr.affinityBackupFilterClass() != null && rmtAttr.affinityBackupFilterClass() != null) {
438+
// We should not check backups if filters are lambdas both on local and remote nodes as lambdas cannot be compared with equals.
439+
if (U.lambdaEnclosingClassName(locAttr.affinityBackupFilterClass()) == null ||
440+
U.lambdaEnclosingClassName(rmtAttr.affinityBackupFilterClass()) == null
441+
) {
442+
CU.checkAttributeMismatch(log, rmtAttr.cacheName(), rmt, "affinityBackupFilterClass", "Affinity backup filter class",
443+
locAttr.affinityBackupFilterClass(), rmtAttr.affinityBackupFilterClass(), true);
444+
445+
CU.checkAttributeMismatch(log, rmtAttr.cacheName(), rmt, "affinityBackupFilter", "Affinity backup filter",
446+
locAttr.affinityBackupFilter(), rmtAttr.affinityBackupFilter(), true);
447+
}
448+
} else {
449+
// If both filter classes are null, this check won't fail.
450+
CU.checkAttributeMismatch(log, rmtAttr.cacheName(), rmt, "affinityBackupFilterClass", "Affinity backup filter class",
451+
locAttr.affinityBackupFilterClass(), rmtAttr.affinityBackupFilterClass(), true);
452+
}
442453

443454
CU.validateKeyConfigiration(rmtAttr.groupName(), rmtAttr.cacheName(), rmt, rmtAttr.configuration().getKeyConfiguration(),
444455
locAttr.configuration().getKeyConfiguration(), log, true);

modules/core/src/test/java/org/apache/ignite/cache/affinity/AffinityFunctionBackupFilterAbstractSelfTest.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,11 @@ public abstract class AffinityFunctionBackupFilterAbstractSelfTest extends GridC
8282

8383
return backupAssignedAttr.get(nodeAttrVal).equals(0);
8484
}
85+
86+
/** {@inheritDoc} */
87+
@Override public boolean equals(Object obj) {
88+
return true;
89+
}
8590
};
8691

8792
/**

0 commit comments

Comments
 (0)