IGNITE-3216 Need to deduplicate addresses registered in the IP finder
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/a4bbf0b7 Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/a4bbf0b7 Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/a4bbf0b7 Branch: refs/heads/ignite-3335 Commit: a4bbf0b70349fee39689b72c10e1c3dc26363c3f Parents: 5c3efa9 Author: Anton Vinogradov <a...@apache.org> Authored: Thu Jun 16 10:25:38 2016 +0300 Committer: Anton Vinogradov <a...@apache.org> Committed: Thu Jun 16 10:25:38 2016 +0300 ---------------------------------------------------------------------- .../ignite/internal/util/IgniteUtils.java | 8 +-- .../ignite/internal/util/lang/GridFunc.java | 64 -------------------- .../internal/util/IgniteUtilsSelfTest.java | 15 +++++ 3 files changed, 19 insertions(+), 68 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ignite/blob/a4bbf0b7/modules/core/src/main/java/org/apache/ignite/internal/util/IgniteUtils.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/util/IgniteUtils.java b/modules/core/src/main/java/org/apache/ignite/internal/util/IgniteUtils.java index c898909..faf026b 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/util/IgniteUtils.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/util/IgniteUtils.java @@ -8550,7 +8550,7 @@ public abstract class IgniteUtils { */ public static Collection<InetAddress> toInetAddresses(Collection<String> addrs, Collection<String> hostNames) throws IgniteCheckedException { - List<InetAddress> res = new ArrayList<>(addrs.size()); + Set<InetAddress> res = new HashSet<>(addrs.size()); Iterator<String> hostNamesIt = hostNames.iterator(); @@ -8583,7 +8583,7 @@ public abstract class IgniteUtils { throw new IgniteCheckedException("Addresses can not be resolved [addr=" + addrs + ", hostNames=" + hostNames + ']'); - return F.viewListReadOnly(res, F.<InetAddress>identity()); + return res; } /** @@ -8609,7 +8609,7 @@ public abstract class IgniteUtils { */ public static Collection<InetSocketAddress> toSocketAddresses(Collection<String> addrs, Collection<String> hostNames, int port) { - List<InetSocketAddress> res = new ArrayList<>(addrs.size()); + Set<InetSocketAddress> res = new HashSet<>(addrs.size()); Iterator<String> hostNamesIt = hostNames.iterator(); @@ -8630,7 +8630,7 @@ public abstract class IgniteUtils { res.add(new InetSocketAddress(addr, port)); } - return F.viewListReadOnly(res, F.<InetSocketAddress>identity()); + return res; } /** http://git-wip-us.apache.org/repos/asf/ignite/blob/a4bbf0b7/modules/core/src/main/java/org/apache/ignite/internal/util/lang/GridFunc.java ---------------------------------------------------------------------- diff --git a/modules/core/src/main/java/org/apache/ignite/internal/util/lang/GridFunc.java b/modules/core/src/main/java/org/apache/ignite/internal/util/lang/GridFunc.java index 8eeca6b..20e31c6 100644 --- a/modules/core/src/main/java/org/apache/ignite/internal/util/lang/GridFunc.java +++ b/modules/core/src/main/java/org/apache/ignite/internal/util/lang/GridFunc.java @@ -1695,70 +1695,6 @@ public class GridFunc { } /** - * Creates read-only light-weight view on given list with provided transformation. - * Resulting list will only "have" {@code transformed} elements. Note that only wrapping - * list will be created and no duplication of data will occur. - * - * @param c Input list that serves as a base for the view. - * @param trans Transformation closure. - * @param <T1> Type of the list. - * @return Light-weight view on given list with provided transformation. - */ - @SuppressWarnings("RedundantTypeArguments") - public static <T1, T2> List<T2> viewListReadOnly(@Nullable final List<? extends T1> c, - final IgniteClosure<? super T1, T2> trans) { - A.notNull(trans, "trans"); - - if (isEmpty(c)) - return Collections.emptyList(); - - assert c != null; - - return new GridSerializableList<T2>() { - /** */ - private static final long serialVersionUID = 3126625219739967068L; - - @Override public T2 get(int idx) { - return trans.apply(c.get(idx)); - } - - @NotNull - @Override public Iterator<T2> iterator() { - return F.<T1, T2>iterator(c, trans, true); - } - - @Override public int size() { - return c.size(); - } - - @Override public boolean isEmpty() { - return c.isEmpty(); - } - }; - } - - /** - * Creates a view on given list with provided transformer and predicates. - * Resulting list will only "have" elements for which all provided predicates, if any, - * evaluate to {@code true}. Note that a new collection will be created and data will - * be copied. - * - * @param c Input list that serves as a base for the view. - * @param trans Transforming closure from T1 to T2. - * @param p Optional predicates. If predicates are not provided - all elements will be in the view. - * @return View on given list with provided predicate. - */ - public static <T1, T2> List<T2> transformList(Collection<? extends T1> c, - IgniteClosure<? super T1, T2> trans, @Nullable IgnitePredicate<? super T1>... p) { - A.notNull(c, "c", trans, "trans"); - - if (isAlwaysFalse(p)) - return Collections.emptyList(); - - return new ArrayList<>(transform(retain(c, true, p), trans)); - } - - /** * Creates light-weight view on given map with provided predicates. Resulting map will * only "have" keys for which all provided predicates, if any, evaluates to {@code true}. * Note that only wrapping map will be created and no duplication of data will occur. http://git-wip-us.apache.org/repos/asf/ignite/blob/a4bbf0b7/modules/core/src/test/java/org/apache/ignite/internal/util/IgniteUtilsSelfTest.java ---------------------------------------------------------------------- diff --git a/modules/core/src/test/java/org/apache/ignite/internal/util/IgniteUtilsSelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/util/IgniteUtilsSelfTest.java index 520fa76..d774065 100644 --- a/modules/core/src/test/java/org/apache/ignite/internal/util/IgniteUtilsSelfTest.java +++ b/modules/core/src/test/java/org/apache/ignite/internal/util/IgniteUtilsSelfTest.java @@ -742,6 +742,21 @@ public class IgniteUtilsSelfTest extends GridCommonAbstractTest { } /** + * + */ + public void testToSocketAddressesNoDuplicates() { + Collection<String> addrs = new ArrayList<>(); + + addrs.add("127.0.0.1"); + addrs.add("localhost"); + + Collection<String> hostNames = new ArrayList<>(); + int port = 1234; + + assertEquals(1, U.toSocketAddresses(addrs, hostNames, port).size()); + } + + /** * Test enum. */ private enum TestEnum {