Repository navigation
ThinkWatch Core 0.83.2
This release fixes core using a full CPU core while idle after a configuration change, and makes the control plane pause instead of spinning when it cannot accept connections.
Upgrade notes
- The control-plane protocol version stays at 54; ThinkWatch Lite releases that include 0.83.0 or 0.83.1 connect to 0.83.2 and the other way round.
- The request store's schema and the configuration are unchanged; nothing is cleared.
- No new message codes.
No more busy loop after a configuration change. Since 0.78.0, any local configuration change (renaming a client, adding an upstream, editing the file) scheduled a sync round 10 seconds later. When sync was off, could not be set up from its settings, or was paused in safe mode, that round ended without consuming the scheduled time, so the sync scheduler woke immediately again and kept one CPU core busy until core restarted. The scheduled time is now consumed at the start of every round. Periodic checks and retries are unchanged.
The control plane pauses after an accept error. When the local control socket or the remote control port could not accept a connection for a reason other than the connection itself going away (for example when core has run out of file descriptors), it retried at once, used a full CPU core and wrote a warning on every attempt. It now waits one second before accepting again, as the gateway ports already do.
Downloads
| Platform | Binary | Archive for server installation |
|---|---|---|
| Linux, x86_64 | twcore-x86_64-unknown-linux-gnu |
twcore-x86_64-unknown-linux-gnu.tar.gz |
| Linux, aarch64 | twcore-aarch64-unknown-linux-gnu |
twcore-aarch64-unknown-linux-gnu.tar.gz |
| macOS, Apple silicon | twcore-aarch64-apple-darwin |
— |
| Windows, x64 | twcore-x86_64-pc-windows-msvc.exe |
— |
| Windows, ARM64 | twcore-aarch64-pc-windows-msvc.exe |
— |
Each file is published with a .sha256 file beside it. A Linux archive contains twcore, the systemd unit twcore.service and LICENSE. ThinkWatch Lite includes its own copy of twcore; the files here are for running core separately, such as on a server.
Server installation
On Linux (x86_64 or aarch64), the install script sets up twcore as a systemd service. This installs 0.83.2:
curl -fsSL https://raw.githubusercontent.com/ThinkWatchProject/ThinkWatch-Core/main/scripts/install.sh | sudo sh -s -- --version 0.83.2An installation made with the script switches to 0.83.2 with:
sudo twcore upgrade --version 0.83.2 --restartConfiguration, the remote control port and connecting ThinkWatch Lite are described in docs/server.md.
Verifying a download
A .sha256 file holds the SHA-256 of the file followed by its name. With both files in the current directory, on Linux:
sha256sum -c twcore-x86_64-unknown-linux-gnu.tar.gz.sha256On macOS:
shasum -a 256 -c twcore-aarch64-apple-darwin.sha256On Windows, in PowerShell, the following prints True when the binary matches:
(Get-FileHash .\twcore-x86_64-pc-windows-msvc.exe).Hash -eq (Get-Content .\twcore-x86_64-pc-windows-msvc.exe.sha256).Split()[0]The install script and twcore upgrade check the SHA-256 themselves.
What's Changed
- fix(sync): stop idle CPU spin after local configuration changes by @sunnysab in #372
- 0.83.2: control-plane accept loops pause after accept errors by @fylorn in #377
New Contributors
Full Changelog: v0.83.1...v0.83.2