Avoid default gateway collisions
Default gateways truncate the endpoint name to 12 characters. This can make network endpoints ambiguous especially for load-balancing sandboxes for networks with lenghty names (such as with our prefixes). Address this by detecting an overflow in the sanbox name length and instead opting to name the gateway endpoint "gateway_<id>" which should never collide. Signed-off-by: Chris Telfer <ctelfer@docker.com>
This commit is contained in:
parent
04bfc61497
commit
1449e88f7a
1 changed files with 6 additions and 4 deletions
|
@ -49,9 +49,11 @@ func (sb *sandbox) setupDefaultGW() error {
|
|||
|
||||
createOptions := []EndpointOption{CreateOptionAnonymous()}
|
||||
|
||||
eplen := gwEPlen
|
||||
if len(sb.containerID) < gwEPlen {
|
||||
eplen = len(sb.containerID)
|
||||
var gwName string
|
||||
if len(sb.containerID) <= gwEPlen {
|
||||
gwName = "gateway_" + sb.containerID
|
||||
} else {
|
||||
gwName = "gateway_" + sb.id[:gwEPlen]
|
||||
}
|
||||
|
||||
sbLabels := sb.Labels()
|
||||
|
@ -69,7 +71,7 @@ func (sb *sandbox) setupDefaultGW() error {
|
|||
createOptions = append(createOptions, epOption)
|
||||
}
|
||||
|
||||
newEp, err := n.CreateEndpoint("gateway_"+sb.containerID[0:eplen], createOptions...)
|
||||
newEp, err := n.CreateEndpoint(gwName, createOptions...)
|
||||
if err != nil {
|
||||
return fmt.Errorf("container %s: endpoint create on GW Network failed: %v", sb.containerID, err)
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue