Skip to content

@vito vito released this Aug 7, 2019

This release is about fixing some unintended consequences of switching to Zstandard compression in v5.4.0. More specifically, having our Go code depend on C libraries caused a few failure modes.

🔗 fix

  • When we first switched to using cgo to build fly (which was necessary in order to make use of Zstandard compression), unbeknownst to us, fly started to depend on a system library for DNS resolution. This meant that on systems that lacked this library (macOS in particular), fly would segfault. Furthermore, the system library has different features than the native Go version, so even on systems that had the library, fly would fail to resolve certain names. We fixed these problems by building fly in a way that would still use cgo but depend on the native Go DNS resolver concourse/ci#59.

🔗 fix

  • On the server side, it turns out we had been a bit lax in freeing resources associated with volume streams, but because we had been using pure Go streaming and compression code, the Go garbage collector had helped us out. In switching to a C-based compression library, failing to manually release memory via Go APIs meant that the underlying memory allocated by the C code was never freed, and several folks have observed server-side memory leaks when using v5.4.0. We plugged those holes #4182, #4199.
Assets 14
You can’t perform that action at this time.