Features
Worker
* Workers now have a `--exit-when-idle` flag which kills the worker process if it is ever idle after checking in with the server. This is part of an ongoing effort to allow ephemeral/one-use workers in shared computation environments like Slurm-managed clusters.
Bug fixes
Worksheets web app
* Fixed a bug where consecutive Markdown blocks were not merged, leading to rendering issues
Worker
* Fixed worker dependency manager initialization so the worker can correctly pick up existing cached dependencies upon restart
* Fixed a bug in worker dependency manager state saving that prevented any dependency from getting cleaned up, eventually making the dependency manager hit the disk limit and hang all dependency downloads.
* Fixed a bug where if the Docker container for a run cannot be started, the worker would forever keep attempting instead of failing the bundle. The bundles are failed immediately now if their Docker containers cannot be started.
Bundle server
* Fixed a bug that failed worker check-ins if the check-in included any run that had since been deleted server-side. Now the deleted run is ignored.
Misc changes
* codalab-cli python code is now auto formatted with [Black](https://github.com/ambv/black) with the exception of string normalization and a more liberal 100 character line limit to reduce the amount of formatting changes
* The repo comes with a `pyproject.toml` file to configure Black with these settings and a `.pre-commit-config.yaml` file to run Black before each commit if you have pre-commit installed.
* This also means CodaLab code is now written in a Python3 compatible syntax, but no further work has been done for Python3 compatibility beyond fixing the syntax differences.
* Updated package dependency versions to newer versions as long as there were no breaking changes, mainly as the previous version of gunicorn used had security vulnerabilities.