Skip to content

Commit f7c141a

Browse files
authored
IGNITE-27384 Throw when CacheConfiguration#extraStoragePaths contains duplicates (#12588)
1 parent 911c54c commit f7c141a

File tree

2 files changed

+20
-0
lines changed

2 files changed

+20
-0
lines changed

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

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
import java.util.Arrays;
2222
import java.util.Collection;
2323
import java.util.Collections;
24+
import java.util.HashSet;
2425
import java.util.List;
2526
import java.util.Map;
2627
import java.util.Objects;
@@ -397,6 +398,11 @@ else if (cc.getRebalanceMode() == SYNC) {
397398
if (!F.isEmpty(cc.getStoragePaths())) {
398399
List<String> csp = Arrays.asList(cc.getStoragePaths());
399400

401+
if (csp.size() != new HashSet<>(csp).size()) {
402+
throw new IgniteCheckedException("CacheConfiguration contains duplicates " +
403+
"[storagePaths=" + Arrays.toString(cc.getStoragePaths()) + ']');
404+
}
405+
400406
Set<String> nodeStorages = nodeStorages(c.getDataStorageConfiguration());
401407

402408
if (!nodeStorages.containsAll(csp)) {

modules/core/src/test/java/org/apache/ignite/internal/processors/cache/persistence/filename/CustomCacheStorageConfigurationSelfTest.java

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
import java.util.Set;
2323
import java.util.function.Consumer;
2424
import java.util.stream.IntStream;
25+
import javax.cache.CacheException;
2526
import org.apache.ignite.IgniteCache;
2627
import org.apache.ignite.IgniteCheckedException;
2728
import org.apache.ignite.Ignition;
@@ -226,6 +227,19 @@ public void testDifferentStoragePathForGroupThrows() throws Exception {
226227
.setIndexPath(myPath.getAbsolutePath())),
227228
IgniteCheckedException.class
228229
);
230+
231+
assertThrowsWithCause(
232+
() -> srv.createCache(new CacheConfiguration<>("my-cache4")
233+
.setStoragePaths(myPath2.getAbsolutePath(), myPath3.getAbsolutePath(), myPath2.getAbsolutePath())),
234+
CacheException.class
235+
);
236+
237+
assertThrowsWithCause(
238+
() -> srv.createCache(new CacheConfiguration<>("my-cache4")
239+
.setGroupName("grp-4")
240+
.setStoragePaths(myPath2.getAbsolutePath(), myPath3.getAbsolutePath(), myPath2.getAbsolutePath())),
241+
IgniteCheckedException.class
242+
);
229243
};
230244

231245
try (IgniteEx srv = startGrid(new IgniteConfiguration().setDataStorageConfiguration(new DataStorageConfiguration()

0 commit comments

Comments
 (0)