Weekly status #260


Weekly status for the week of the 1st August to the 7th August.

Introduction

This past week has seen several improvements and bug fixes for LXD and go-dqlite, as we continue on our larger roadmap items.

@stgraber has continued his series of videos on LXD storage and this week explores the ZFS storage driver:

LXD

Improvements:

  • Continued series of improvements around making our database querying more efficient. Particularly reducing the amount of repeated queries when loading information about instances and their snapshots when generating lists of instances or snapshots. This ultimately lead to the removal of the inefficient InstanceToArgs function.
  • Switched to using losetup command for loop device management for storage pool disk images. This was to resolve an intermittent issue we saw in our test environment where we would often get Invalid argument errors when trying to mount a BTRFS filesystem that was on a loop device.
  • In addition to the BTRFS change above there were also some smaller changes to improve the reliability of our automated test suite, including; making the devlxd tests work on go-tip, tweaking proxy device test ordering to give the the test process more time to start up to avoid spurious connection errors, and adding retries to DHCP allocation request tests.
  • Added support for updating network forwarder and load balancer config properties when using the PATCH API method.
  • Added a restriction to storage pool and network list and show API endpoints that prevents non-admin users from seeing the config of these entities. This is because there can be sensitive config info stored there.
  • Set atime=off and relatime=on settings on new ZFS storage pools for improved performance/reduced wear on disks. This aligns with existing defaults for other filesystem types.
  • Improve errors returned from GetIOStats function.
  • Added context support to RunCommand* family of functions.

Bug fixes:

  • Handle PATCH requests in devlxd API to allow instance to set ‘ready’ status.
  • Fixed a panic in the lxc client command when showing expanded config for a snapshot, e.g. lxc config show <instance>/<snapshot> --expanded.
  • Fixed lxc file mount command to remote servers over TLS which was a regression since LXD 5.3 that was caused by our switch to using http.DialContext.
  • Fixed an unreleased regression in network load balancer listing query.
  • Fixed a regression in LXD shutdown procedure that was preventing the unmounting of shared mounts (due to incorrectly detecting there were instances running when there were not).
  • Fixed API version shown in UsedBy URLs for project info. Was incorrectly showing LXD version rather than API version.
  • Fixed incorrect escaping in some UsedBy storage volume URLs.

Dqlite (Go bindings)

Bug fixes:

  • Fixed an issue that was identified as part of the work done in LXD to improve the query performance that meant sometimes queries that had >255 query bindings were being used. This would overflow the internal argument counter in Dqlite rather than generate an error. This has now been fixed in go-dqlite so that if >255 query bindings are used the query will fail immediately. The actual limitation will also be fixed in future versions of dqlite.

YouTube videos

The LXD team is running a YouTube channel with live streams covering LXD releases and weekly videos on different aspects of LXD. 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 planned currently.

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.

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

  • Nothing to report this week

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
1 Like