concourse v6.3.0 Release Notes
Release Date: 2020-06-11 // almost 4 years ago-
🍱 🔗 feature
🚀 After switching the default resource checking component to be
lidar
during the v6.0.0 release, users have noticed the resource checking rate has been very spiky. This spiky behaviour is caused by the fact thatlidar
runs all the checks that have been queued up at once, causing the spikes of checks to happen all at the same time when the checker runs on its interval.We added a rate limit to resource checking in order to help spread out the rate of checks. Before, without the rate limit resource checking was like .|.|.|.| and now it's like ~~~~~~~.
0️⃣ This rate limit is defaulted to be determined by calculating the number of checkables (resources and resource types) that need to be checked per second in order to check everything within the default checking interval. This means that if there are 600 checkables and the default checking interval is 60 seconds, we would need to run 10 checks per second in order to check everything in 60 seconds. This rate limit of checks can be modified through the
max-checks-per-second
flag to be a static number and also turned off by setting it to-1
.0️⃣ On top of adding a rate limit, we also changed the default for the
lidar-scanner-interval
to be10 seconds
rather than the previous default of1 minute
. This will also help spread out the number of checks to happen on more intervals of the checker. #5676🚀 When we upgraded our large deployment to v6.3.0 with the default rate limiter on resource checking, we saw that the number of checks started became much more spread out when compared to before. This first metric shows the number of resource checks started per minute before v6.3.0.
The following metric shows the number of checks started per minute after adding the rate limiting.
🍱 🔗 feature
- ⏱ When distributed tracing is configured, Concourse will now emit spans for several of its backend operations, including resource scanning, check execution, and job scheduling. These spans will be appropriately linked when viewed in a tracing tool like Jaeger, allowing operators to better observe the events that occur between resource checking and build execution. #5659
🍱 🔗 feature
🔧 When distributed tracing is configured, all check, get, put, and task containers will be run with the
TRACEPARENT
environment variable set, which contains information about the parent span following the w3c trace context format:TRACEPARENT=version-trace_id-parent_id-trace_flags
👍 Using this information, your tasks and custom
resource_types
can emit spans to a tracing backend, and these spans will be appropriately linked to the step in which they ran. This can be particularly useful when integrating with downstream services that also support tracing. #5653🍱 🔗 feature
- 🔧 The
set_pipeline
step now supports vars within its plan configuration (thefile:
,vars:
, andvar_files:
fields), thanks to @evanchaoli! #5277
🍱 🔗 feature
- ⏱ When the scheduler tries to start a build with a version that does not exist, it will print an error message to the pending preparation build page. This should help give visibility into why a build is stuck pending. #5477
🍱 🔗 feature
- ⏱ When the scheduler starts a build, it will send a notification to the build tracker to run it. Without this notification from the scheduler to the build tracker, it can take up to approximately 10 seconds before your build gets run after being in a started state. #5631
🍱 🔗 feature
- 👍 Proxy support for NewRelic emitter
🍱 🔗 feature
- ➕ Add tracing to allow users and developers to observe volume streaming from source to destination volumes. #5579
🍱 🔗 feature
- @evanchaoli added spans for the
load_var
andset_pipeline
steps when distributed tracing is enabled. #5706
🍱 🔗 fix
- 🛠 Fixed a bug introduced in v6.1.0 that caused admin users to no longer be able to login to any team. #5741
🍱 🔗 fix
- ⏱ The algorithm within the job scheduler component will now take into account whether or not a version exists in the database while determining a set of input versions for the next build of a job. Previously, when you had an input with passed constraints, it could pick a version that did not exist in the database because it picked versions purely based on if they have passed the upstream passed constraint jobs, regardless if that version did not exist anymore. This fix makes the algorithm skip over versions that do not exist. #5724
🍱 🔗 fix
- 🛠 Fixed a bug where task caches were getting garbage collected everytime you set the pipeline. #5497
🍱 🔗 fix
- 🛠 Fixed a bug "invalid memory address or nil pointer dereference" in NewRelic emitter. #5697