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
Agent does not support bidirectional comms between service dependencies #2095
Comments
This is currently working as designed, so I can't agree that it is a bug. But I do agree it should be addressed at some point in the near future, so I'll compromise and leave it as a bug but lowering it to p3. |
@dabooz - We may have address this different. It is a relatively urgent issue as it inhibits the case demonstrated with LF Edge itself as a deployable set of containers -- that is, we probably want to treat it with a higher priority than a P3 bug. It is constraining the work we're doing with Intel on their integration with IEAM. |
Philosophically it does seem odd to me that subordinate services can not communicate with their superior services on the network that is configured for the dependency between them. |
@linggao Working on it |
@sirotsinskuy Is there any update on this issue? This issue is blocking work on a project with one of our partners. |
I just tested putting a set of containers into a single Open-Horizon service. I discovered that when multiple containers are deployed together inside a single service:
|
@TheMosquito I proposed the possible solution to @dabooz and currently waiting for his decision/review of it. |
Once this fix is incorporated, here is what users can expect:
|
Finally have a PR for this issue. my testing covered various combinations of the following:
|
There is a problem with the way that we create Docker private virtual bridge networks between containers. In the situation where service A declares service B in its requiredServices array, but service B also needs to communicate with service A, it does not work. Declaration of a circular dependency graph for this is not allowed (i.e., we cannot declare that A requires B and B requires A) but it should be fine because A and B are on the same network, except for one thing . The agent fails to create an alias for service A on this network. That means that service B is unable to discover and connect with service A.
So currently, service B either needs to use the hex container ID, or the hard IP address of service A on this network to connect and it has no way to get either of these bits of information within the container context.
A workaround for this is to:
docker network disconnect NETWORK CONTAINER
docker network connect --alias ALIAS NETWORK CONTAINER
The services A and B have names defined in the services arrays in their definition JSON, and this is the name we set as an alias in the bridge networks we create, except that right now we only apply this alias on service B. This means service B cannot reach service A. To fix this problem we need to add the alias (like my work-around does) to enable service B to connect to service A.
Doc issue 772 is open to remove this limitation from the documentation.
The text was updated successfully, but these errors were encountered: