[ 
https://issues.apache.org/jira/browse/IGNITE-11222?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Anatolii Botov updated IGNITE-11222:
------------------------------------
    Description: 
I've created cluster from 2 nodes.

I've configured them as follow:

 
{code:java}
val config = new IgniteConfiguration()
val discoverySpi = new TcpDiscoverySpi
discoverySpi.setLocalAddress(discoveryAddress.getHostString)
discoverySpi.setLocalPort(discoveryAddress.getPort)
val ipFinder = new TcpDiscoveryVmIpFinder()
ipFinder.setAddresses(ipAddresses.asJava)
discoverySpi.setIpFinder(ipFinder)
config.setDiscoverySpi(discoverySpi)
val commSpi = new TcpCommunicationSpi()
commSpi.setLocalAddress(communicationAddress.getHostString)
commSpi.setLocalPort(communicationAddress.getPort)
commSpi.setSlowClientQueueLimit(igniteConf.getInt("slow-client-queue-limit").getOrElse(1000))
commSpi.setMessageQueueLimit(
  
igniteConf.getInt("message-queue-limit").getOrElse(TcpCommunicationSpi.DFLT_MSG_QUEUE_LIMIT)
)
config.setCommunicationSpi(commSpi)
config.setSegmentationPolicy(SegmentationPolicy.NOOP)
{code}
 

 
 * For first node(10.84.0.120) values are:

{code:java}
val discoveryAddress = 0.0.0.0:47500
val communicationAddress = 0.0.0.0:47600
val ipAddresses = Seq("127.0.0.1"){code}

 * For second node(10.84.13.131) values are:

{code:java}
val discoveryAddress = 0.0.0.0:47500
val communicationAddress = 0.0.0.0:47600
val ipAddresses = Seq("10.84.0.120:47500"){code}

 

After i start first node and the second second connects to first and everything 
is OK. Then i block traffic from first node to second:
{code:java}
iptables -A OUTPUT -d 10.84.0.120 -j DROP{code}
Unblocking:
{code:java}
iptables -D OUTPUT -d 10.84.0.120 -j DROP{code}
 

There is 2 cases:
 # if traffic is blocked more than default timeout in ignite config, everything 
works as expected: split brain.
 # But if i remove blocking before timeout is almost expired. Then first node 
closes socket on port 47500 and becomes unreachable for further reconnection 
attempts from first node.

 

  was:
I've created cluster from 2 nodes.

I've configured them as follow:

{color:#000080}val {color}config = {color:#000080}new 
{color}IgniteConfiguration()

{color:#000080}val {color}discoverySpi = {color:#000080}new 
{color}TcpDiscoverySpi
 discoverySpi.setLocalAddress(discoveryAddress.getHostString)
 discoverySpi.setLocalPort(discoveryAddress.getPort)

{color:#000080}val {color}ipFinder = {color:#000080}new 
{color}TcpDiscoveryVmIpFinder()
 ipFinder.setAddresses(ipAddresses.asJava)

discoverySpi.setIpFinder(ipFinder)
 config.setDiscoverySpi(discoverySpi)

{color:#000080}val {color}commSpi = {color:#000080}new 
{color}TcpCommunicationSpi()
 commSpi.setLocalAddress(communicationAddress.getHostString)
 commSpi.setLocalPort(communicationAddress.getPort)
 
commSpi.setSlowClientQueueLimit(igniteConf.getInt({color:#008000}"slow-client-queue-limit"{color}).getOrElse({color:#0000ff}1000{color}))
 commSpi.setMessageQueueLimit(
 
igniteConf.getInt({color:#008000}"message-queue-limit"{color}).getOrElse(TcpCommunicationSpi.{color:#660e7a}DFLT_MSG_QUEUE_LIMIT{color})
 )
 config.setCommunicationSpi(commSpi)

config.setSegmentationPolicy(SegmentationPolicy.{color:#660e7a}NOOP{color})

 
 * For first node(10.84.0.120) values are:
 {color:#000080}val {color}discoveryAddress = 0.0.0.0:47500
 {color:#000080}val {color}communicationAddress = 0.0.0.0:47600
 {color:#000080}val {color}ipAddresses = 
{color:#660e7a}Seq{color}({color:#008000}"127.0.0.1"{color})

 * For second node(10.84.13.131) values are:
 {color:#000080}val {color}discoveryAddress = 0.0.0.0:47500
 {color:#000080}val {color}communicationAddress = 0.0.0.0:47600
 {color:#000080}val {color}ipAddresses = 
{color:#660e7a}Seq{color}({color:#008000}"10.84.0.120:47500"{color})

 

After i start first node and the second second connects to first and everything 
is OK. Then i block traffic from first node to second:

iptables -A OUTPUT -d 10.84.0.120 -j DROP

Unblocking:

iptables -D OUTPUT -d 10.84.0.120 -j DROP

 

There is 2 cases:
 # if traffic is blocked more than default timeout in ignite config, everything 
works as expected: split brain.
 # But if i remove blocking before timeout is almost expired. Then first node 
closes socket on port 47500 and becomes unreachable for further reconnection 
attempts from first node.

 


> TcpDiscoverySpi stops listen port on network timeout
> ----------------------------------------------------
>
>                 Key: IGNITE-11222
>                 URL: https://issues.apache.org/jira/browse/IGNITE-11222
>             Project: Ignite
>          Issue Type: Bug
>    Affects Versions: 2.7
>         Environment: OS: Ubuntu 18.04, Centos 7
> Ignite runs as part of application through Ignition.start()
>  
>  
>            Reporter: Anatolii Botov
>            Priority: Major
>         Attachments: ignite_logs.zip
>
>
> I've created cluster from 2 nodes.
> I've configured them as follow:
>  
> {code:java}
> val config = new IgniteConfiguration()
> val discoverySpi = new TcpDiscoverySpi
> discoverySpi.setLocalAddress(discoveryAddress.getHostString)
> discoverySpi.setLocalPort(discoveryAddress.getPort)
> val ipFinder = new TcpDiscoveryVmIpFinder()
> ipFinder.setAddresses(ipAddresses.asJava)
> discoverySpi.setIpFinder(ipFinder)
> config.setDiscoverySpi(discoverySpi)
> val commSpi = new TcpCommunicationSpi()
> commSpi.setLocalAddress(communicationAddress.getHostString)
> commSpi.setLocalPort(communicationAddress.getPort)
> commSpi.setSlowClientQueueLimit(igniteConf.getInt("slow-client-queue-limit").getOrElse(1000))
> commSpi.setMessageQueueLimit(
>   
> igniteConf.getInt("message-queue-limit").getOrElse(TcpCommunicationSpi.DFLT_MSG_QUEUE_LIMIT)
> )
> config.setCommunicationSpi(commSpi)
> config.setSegmentationPolicy(SegmentationPolicy.NOOP)
> {code}
>  
>  
>  * For first node(10.84.0.120) values are:
> {code:java}
> val discoveryAddress = 0.0.0.0:47500
> val communicationAddress = 0.0.0.0:47600
> val ipAddresses = Seq("127.0.0.1"){code}
>  * For second node(10.84.13.131) values are:
> {code:java}
> val discoveryAddress = 0.0.0.0:47500
> val communicationAddress = 0.0.0.0:47600
> val ipAddresses = Seq("10.84.0.120:47500"){code}
>  
> After i start first node and the second second connects to first and 
> everything is OK. Then i block traffic from first node to second:
> {code:java}
> iptables -A OUTPUT -d 10.84.0.120 -j DROP{code}
> Unblocking:
> {code:java}
> iptables -D OUTPUT -d 10.84.0.120 -j DROP{code}
>  
> There is 2 cases:
>  # if traffic is blocked more than default timeout in ignite config, 
> everything works as expected: split brain.
>  # But if i remove blocking before timeout is almost expired. Then first node 
> closes socket on port 47500 and becomes unreachable for further reconnection 
> attempts from first node.
>  



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to