m/pkg/supervisor: close connections when grpc server exits

When the Listener is closed, Serve will return with an error, but 
already established connections will continue to serve requests. Stop or 
GracefulStop must be called to close these connections.

This bug often caused the metropolis e2e test to fail on my machine with 
the same symptoms as in #276: Node commit always failed with "lost 
leadership". This happened because the nodes were sending requests on a 
connection that was established before the leader was re-elected and the 
grpc listener restarted, and still had the old leadership info.

Change-Id: I797ffa4a40914e5d45e7e4cd15fbb7655e930fa3
Reviewed-on: https://review.monogon.dev/c/monogon/+/2885
Reviewed-by: Serge Bazanski <serge@monogon.tech>
Tested-by: Jenkins CI
Vouch-Run-CI: Serge Bazanski <serge@monogon.tech>
1 file changed
tree: ccb6d1d153b513a3c0cda87c1c0d1db53c7ee7ca
  1. .github/
  2. build/
  3. cloud/
  4. go/
  5. intellij/
  6. metropolis/
  7. net/
  8. third_party/
  9. tools/
  10. version/
  11. .bazelignore
  12. .bazelproject
  13. .bazelrc
  14. .bazelrc.ci
  15. .bazelrc.sandboxroot
  16. .bazelversion
  17. .git-ignore-revs
  18. .gitignore
  19. BUILD.bazel
  20. CODING_STANDARDS.md
  21. go.mod
  22. go.sum
  23. LICENSE
  24. MODULE.bazel
  25. MODULE.bazel.lock
  26. README.md
  27. SETUP.md
  28. shell.nix
  29. WORKSPACE
README.md

Monogon Monorepo

This is the main repository containing the source code for the Monogon Platform.

This is pre-release software - take a look, and check back later!

Environment

Our build environment is self-contained and requires only minimal host dependencies:

  • A Linux machine or VM.
  • Bazelisk >= v1.15.0 (or a working Nix environment).
  • A reasonably recent kernel with user namespaces enabled.
  • Working KVM with access to /dev/kvm (if you want to run tests).

Our docs assume that Bazelisk is available as bazel on your PATH.

Refer to SETUP.md for detailed instructions.

Monogon OS

The source code lives in //metropolis (Metropolis is the codename of Monogon OS).

See the //metropolis/README.md for a developer quick start guide, or see the Monogon OS Handbook for user documentation.