Details
Description
IP address is detection picks up "169.254.x.x" addresses when there are interfaces with actual addresses configured down the list. The detection code incorrectly stops scanning when it encounters a link local address. It should instead of continuing to scan other interfaces for a "better" address.
It's quite normal to assign link local 169.254.x.x addresses to links that do not otherwise have a network address. Our code should skip addresses in this (169.254.0.0 - 169.254.255.255) range and move on to other interfaces. I ran into this on Windows but it probably can happen on any other platforms just as well.
Couchbase server ultimately fails to startup with the detected 169.254.x.x address.
1> inet:getifaddrs().
{ok,[{"\\DEVICE
TCPIP_
",
[
,
{addr,{169,254,206,55}},
{netmask,{255,255,255,255}},
{broadaddr,{169,254,206,55}},
]},
{"\\DEVICE
TCPIP_
",
[
,
{addr,{192,168,4,208}},
{netmask,{255,255,255,0}},
]},
{"\\DEVICE
TCPIP_
",
[
,
{addr,{0,0,0,0,0,0,0,1}},
{netmask,{65535,65535,65535,65535,65535,65535,65535,65535}},
{addr,{127,0,0,1}},
{netmask,{255,0,0,0}}]}]}
2> addr_util:get_my_address().
"169.254.206.55"
Attachments
For Gerrit Dashboard: MB-7417 | ||||||
---|---|---|---|---|---|---|
# | Subject | Branch | Project | Status | CR | V |
23453,3 | MB-7417: Do not pick up link local addresses | 2.0.1 | ns_server | Status: MERGED | +2 | +1 |
23512,1 | MB-7417: Use ipconfig to get correct ip address | 2.0.1 | voltron | Status: ABANDONED | +2 | +1 |
23557,1 | Merge remote-tracking branch 'couchbase/2.0.1' into next | master | ns_server | Status: MERGED | +2 | +1 |