We modify the critbitgo library to skip creating a route object we don't use.
The weaveworks-local modification can be removed if
https://github.com/k-sone/critbitgo/pull/7 is merged.
The Ubuntu Xenial update to kernel 4.4.0-119.143 from 4.4.0-116.140 did
include a regression in the eBPF code. A basic `bpf_map_lookup_elem`
call as found in the tcptracer-bpf library used by Scope leads to a
kernel panic. As a result, Scope / the system crashes during startup
when the tcptracer is initialized. The Scope bug report can be found
here:
https://github.com/weaveworks/scope/issues/3131
To avoid crashes and gently fallback to procfs (as Scope already does
for systems not supporting eBPF), update `isKernelSupported()` and
explicitly check for Ubuntu Kernel versions with the problem.
Once the bug is fixed and an update published, the `abiNumber` check in
`isKernelSupported()` can and should be updated with an upper limit.
The Ubuntu bug report can be found here:
https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1763454
@dglaubman found that recent versions of Docker for Mac (Docker version
18.03.0-ce, build 0520e24) don't write out
${HOME}/Library/Containers/com.docker.docker/Data/database any more.
@foot confirmed this. A fresh installation of Docker for Mac (Version
18.03.0-ce-mac60 (23751), Channel: stable) did not create the file.
The result was that installations which had this leftover file could start
scope, whereas newer couldn't. The fix simply changes this check to a path
which actually exists.
Thanks @dglaubman and @foot for the analysis and confirmation.
Fixes#3064
Limiting env vars, docker&k8s labels, and weave net connection entries
to 20 is problematic because
- the truncation is arbitrary - there is a good chance that if you
care about a specific entry it won't be there
- the truncation is not consistent - different entries get truncated
at different times
- some of the rendering logic depends on specific labels, for example
namespace filtering of containers depends on the
`io.kubernetes.pod.namespace` label.
In practice, there should never be a huge number of labels, or Weave
Net connection entries. So there is no need to truncate them.
That leaves env vars. These are of limited use, so we now omit them by
default. If they are included they are included in full, so they are
actually useful.
Fixes#3127
joinResults grew out of a special case of Map.Render(), so now we
merge the two lines back together and have just one way to accumulate
results and remap adjacencies.