-
Notifications
You must be signed in to change notification settings - Fork 712
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
connections inside a container shown as going between containers #1733
Comments
Would you mind attaching the report ("</>" button in bottom right corner) for this? |
Thanks. I've managed to reproduce this with
Both of these run a separate epmd process inside the container, and the main erlang beam process should connect to that. Based on my quick investigation I reckon the connection from the riak beam is mis-attributed as going to the rabbitmq epmd instead of the riak epmd. And I've just reproduced the same kind of mis-attribution with two alpine containers that each run
Thanks for reporting this. |
@paulbellamy's and my theory here is that connection endpoints in containers are generally just identified by IP and port. That is fine (and indeed required) for overlay networks, but clearly wrong for localhost connections inside a container. So a (hopefully) quick fix would be to include the container id in the identity of localhost connection endpoints. |
We also use PIDs for persistent connections (like this ones). proc-based tracking (which provides PIDs) and conntrack-based tracking run in parallel, and it could be that we don't correctly prioritize proc-tracked connections. Also, even if the proc-tracked connections were used, we would probably be able to reproduce this with short-lived (conntrack-based) connections, so we need to handle the loopback interface specially. |
Actually, host-scoping aside, the problem adheres to the theory from @rade and @paulbellamy After reproducing the problem in the way suggested by @rade :
I inspected the Endpoint topology and found:
This causes a key-clash between the processes listening on Two possible solutions are:
Also, in case it's not done already, we should make sure that loopback interface IPs are discarded when tracking short-live connections since they cannot be uniquely attributed to a container (related #1260) |
@rade pointed out offline that we can only do it for loopback connections (since the PID/namespace scope won't match for connections across hosts) |
The container view shows an incorrect link between Rabbit and Riak.
Both services do use Erlang but they are independent containers that are otherwise unaware of each other.
The text was updated successfully, but these errors were encountered: