Weekly status #227


Weekly status for the week of the 29th November to 5th of December.

Introduction

Last week LXD saw a lot of clean up and fixes done on its instance exec command for both containers and VMs, as well improvements to the built-in authoritative DNS server. The go-dqlite package also saw its v1.10.2 release.

LXD

Improvements:

  • The built-in authoritative DNS server gained the ability to control whether or not to include DNS record entries for NAT enabled networks. This is controlled via the network.nat configuration option on a DNS zone, and defaults to true if not specified.
  • The DB generator has seen some improvements to remove the reference table views and various other clean ups.
  • LXD will now log whether it has support in the kernel for idmapped mounts on start up.

Bug fixes:

  • There was a raft of improvements, clean ups and fixes for the instance exec command, primarily focused on properly cleaning up sockets and file descriptors when an exec session finishes and improving the detection of disconnected clients in non-interactive sessions so that we don’t leave resources around if the client abruptly disconnects. The two main bugs fixed were:
    • For non-interactive container exec sessions, if the client disconnected the program remained running (potentially indefinitely). This has been fixed, whilst still allowing the client to close stdin before the program exits, but also reading from the stdout channel (which should never receive any data from the client, except a notification that the client has disconnected). If this occurs the program running inside the container is terminated.
    • For VM websocket based exec sessions there was a pseudoterminal (PTY) being created on the LXD server and inside the VM guest (via the lxd-agent). Because the data channels between LXD and lxd-agent are websockets over vsock, some of the PTY based polling logic to detect closed channels wasn’t working on the LXD server, and so LXD was leaking PTY devices on the host. This has been fixed by removing the PTY being used on the LXD server and just relaying the data between the client and the lxd-agent’s PTY.
  • For OVN NICs, the host OVS port is now deleted earlier during the instance shutdown process to avoid the situation where another failure can cause the OVS port to be left behind on the host. This can cause issues if the instance is then migrated to a different host in the same OVN network after being shutdown, as when it next starts there will be OVN conflicts as the multiple OVS ports exist for the same logical OVN port.

LXC

Bug fixes:

  • When saving the config file to somewhere that’s not the container directory, we don’t need to create the container directory (and so don’t need the parent directory to exit).
  • Fixed some compiler warnings.
  • Use 2 sysfs instances for sys:mixed.

Distrobuilder

  • Dropped support for Sabayon as the project has merged with Funtoo.

Dqlite (Go bindings)

  • Improvements to the test suite when running with only loopback interface.

LXD Charm

  • Remove unneeded passenv from tox.ini

Youtube channel

We’ve started a Youtube channel with live streams covering LXD releases and its use in the wider ecosystem.

You may want to give it a watch and/or subscribe for more content in the coming weeks.

Contribute to LXD

Ever wanted to contribute to LXD but not sure where to start?
We’ve recently gone through some effort to properly tag issues suitable for new contributors on Github: Easy issues for new contributors

Upcoming events

  • Nothing to report this week

Ongoing projects

The list below is feature or refactoring work which will span several weeks/months and can’t be tied directly to a single Github issue or pull request.

  • Distrobuilder Windows support
  • Virtual networks in LXD
  • Various kernel work
  • Stable release work for LXC, LXCFS and LXD

Upstream changes

The items listed below are highlights of the work which happened upstream over the past week and which will be included in the next release.

LXD

LXC

LXCFS

  • Nothing to report this week

Distrobuilder

Dqlite (RAFT library)

  • Nothing to report this week

Dqlite (database)

  • Nothing to report this week

Dqlite (Go bindings)

LXD Charm

Distribution work

This section is used to track the work done in downstream Linux distributions to ship the latest LXC, LXD and LXCFS as well as work to get various software to work properly inside containers.

Ubuntu

  • Nothing to report this week

Snap

  • Nothing to report this week