[ 
https://issues.apache.org/jira/browse/MESOS-7698?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16349554#comment-16349554
 ] 

Ilya Pronin edited comment on MESOS-7698 at 2/2/18 12:16 AM:
-------------------------------------------------------------

[~greggomann], libprocess looks up the host address its running on upon process 
startup and remembers that address for the lifetime of the process. If 
{{--advertise_ip}} flag is not provided, then this address is used as a return 
address in inter-libprocess communication ({{User-Agent: libprocess/*}} header 
field). When I encountered the described problem, the IP address of one of our 
hosts has changed due to network maintenance. The agent on that host tried to 
re-register with the master, telling him that he was located at addr1, while in 
reality he was at addr2. Because of that logic with return address, the master 
was sending his responses to a wrong host at addr1. I never tried to reproduce 
the problem, but I suppose it should be relatively easy reproduced by changing 
the IP address of the interface used by the agent for communicating with the 
master.

Maybe we could make the usage of return addresses in libprocess-libprocess 
communication more "relaxed". If the user doesn't want libprocess to advertise 
a specific address, sending libprocess can omit the address in the 
{{User-Agent}} field and the receiver will use return address from the 
connection?

I can work on a patch if somebody can shepherd this work.


was (Author: ipronin):
[~greggomann], libprocess looks up the host address its running on upon process 
startup and remembers that address for the lifetime of the process. If 
{{--advertise_ip}} flag is not provided, then this address is used as a return 
address in inter-libprocess communication ({{User-Agent: libprocess/*}} header 
field). When I encountered the described problem, the IP address of one of our 
hosts has changed due to network maintenance. The agent on that host tried to 
re-register with the master, telling him that he was located at addr1, while in 
reality he was at addr2. Because of that logic with return address, the master 
was sending his responses to a wrong host at addr1. I never tried to reproduce 
the problem, but I suppose it should be relatively easy reproduced by changing 
the IP address of the interface used by the agent for communicating with the 
master.

Maybe we could make the usage of return addresses in libprocess-libprocess 
communication more "relaxed". If the user doesn't want libprocess to advertise 
a specific address, sending libprocess can omit the address in the 
{{User-Agent}} field and the receiver will use return address from the 
connection?

> Libprocess doesn't handle IP changes
> ------------------------------------
>
>                 Key: MESOS-7698
>                 URL: https://issues.apache.org/jira/browse/MESOS-7698
>             Project: Mesos
>          Issue Type: Bug
>          Components: libprocess
>    Affects Versions: 1.2.0
>            Reporter: Ilya Pronin
>            Priority: Major
>
> If a host IP address changes libprocess will never learn about it and will 
> continue to send messages "from" the old IP.
> This will cause weird situations. E.g. an agent will indefinitely try to 
> reregister with a master pretending that it can be reached by an old IP. The 
> master will send {{SlaveReregisteredMessage}} to the wrong host (potentially 
> a different agent), using an IP from the {{User-Agent: libprocess/*}} header.



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

Reply via email to