ignite-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Vladimir Ozerov (JIRA)" <j...@apache.org>
Subject [jira] [Created] (IGNITE-2720) TcpDiscoveryMulticastIpFinder is not thread safe.
Date Thu, 25 Feb 2016 07:37:18 GMT
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)

Mime
View raw message