Vladimir Ozerov created IGNITE-2720: ---------------------------------------
Summary: TcpDiscoveryMulticastIpFinder is not thread safe. Key: IGNITE-2720 URL: https://issues.apache.org/jira/browse/IGNITE-2720 Project: Ignite Issue Type: Bug Components: general Affects Versions: 1.5.0.final Reporter: Vladimir Ozerov Priority: Critical Fix For: 1.6 *Problem* TcpDiscoveryMulticastIpFinder contains several non-thread-safe collections. E.g. {{reqItfs}} which is a {{HashSet}}. And these collections could be accessed from different thread concurrently. E.g., mentioned collection can be accessed from the following methods: 1) {{initializeLocalAddresses}} (invoked from {{spiStart}}) - this is already a problem for shared IP finder in case two nodes start in the same JVM. 2) {{getRegisteredAddresses}} - accessed from billion places including client reconnect routine. As a result we could receive things like that: {code} java.util.ConcurrentModificationException at java.util.HashMap$HashIterator.nextNode(HashMap.java:1429) at java.util.HashMap$KeyIterator.next(HashMap.java:1453) at org.apache.ignite.spi.discovery.tcp.ipfinder.multicast.TcpDiscoveryMulticastIpFinder.requestAddresses(TcpDiscoveryMulticastIpFinder.java:475) at org.apache.ignite.spi.discovery.tcp.ipfinder.multicast.TcpDiscoveryMulticastIpFinder.getRegisteredAddresses(TcpDiscoveryMulticastIpFinder.java:431) at org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi.registeredAddresses(TcpDiscoverySpi.java:1603) at org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi.resolvedAddresses(TcpDiscoverySpi.java:1552) at org.apache.ignite.spi.discovery.tcp.ClientImpl.joinTopology(ClientImpl.java:475) at org.apache.ignite.spi.discovery.tcp.ClientImpl.access$900(ClientImpl.java:118) at org.apache.ignite.spi.discovery.tcp.ClientImpl$MessageWorker.tryJoin(ClientImpl.java:1509) at org.apache.ignite.spi.discovery.tcp.ClientImpl$MessageWorker.body(ClientImpl.java:1328) at org.apache.ignite.spi.IgniteSpiThread.run(IgniteSpiThread.java:62) {code} *Solution* Investigate access patterns and make multicast IP finder thread-safe. Porbably we have similar problems in other IP finders - need to check that. -- This message was sent by Atlassian JIRA (v6.3.4#6332)