Skip to content

Release v1.3.68

Choose a tag to compare

@github-actions github-actions released this 06 Nov 01:59
· 11 commits to main since this release

Release v1.3.68

v1.3.68 is a server update. Agents whose clocks are off by seconds or minutes no longer misplace their TCPing points: the server estimates each agent's clock offset and corrects its samples by a steady amount. Agents (1.3.67) and the web app are the same as v1.3.67.

Highlights

  • Many hosts run without NTP. On xhh.li, 22 of 128 agents were 6 s to 100 s off, some early, some late.
  • The server used to judge each batch of probes on its own. It moved a batch onto the time it arrived only when its newest sample looked over 2 minutes old or 30 s ahead:
    • inside those lines, an agent kept its error: one 100 s slow drew every point 100 s early;
    • near a line, an agent's points jumped back and forth by two minutes, a doubled point in one minute and none in the next (about 110 a day on one server).
  • The server now estimates each agent's clock offset from its pushes:
    • an observation is the arrival time less the newest sample's stamp, taken only when the push follows the previous one within 10 s and brings a sample newer than any seen;
    • the estimate is the smallest of the last five;
    • an agent between 2 s ahead and 6 s behind keeps its own stamps;
    • any other agent is corrected by its estimate, and the correction stays the same until the estimate moves by more than 2 s.
  • A correction that stays the same maps a re-sent sample onto its first record, so it is not stored twice. An agent re-sends a push whose reply was lost; with batches moved one by one, those could show as doubled points.
  • A clock that is set right is followed within one round (three rounds for steps under 20 s).
  • After a short restart, the server uses each server's last report to treat the first push as fresh, so even that push is placed by an estimate. A new agent, or one back after more than half an hour away, is placed batch by batch as before for its first round.

Compatibility

  • Server only. Agents stay on 1.3.67 and need no update; every agent version works.
  • An agent whose clock is right is unaffected: its samples keep their own stamps.
  • The server change is shared with Pulse-Hotaru.

Verified

  • Go, with the race detector:
    • a simulated day for each of 29 agent clocks, from 6 h behind to 3 h ahead, with lost replies, 5 s and 10 min intervals, a 10 min outage and a 2 s restart: no doubled or missing points and nothing stored twice;
    • every sample lands within 3.3 s of the probe's real start, or keeps its own error (at most 5 s) for agents in sync;
    • the old rule, run on the same days, shows the flips;
    • pushes through the handler for fast, slow and synced clocks, re-sends, and an agent on the old 2-minute line.
  • End to end:
    • nine agents, with clocks from 125 s behind to 31 s ahead, pushed to the built server for 5 minutes, with a restart halfway;
    • the same run against v1.3.67, for comparison;
    • the 1.3.67 agent in sync keeps its own stamps to the millisecond.

📦 Docker Images

  • xhh1128/pulse:1.3.68
  • xhh1128/pulse:latest

📥 Downloads

Client binaries

Platform File
Linux amd64 probe-client
Linux arm64 probe-client-arm64
macOS Intel (amd64) probe-client-darwin-amd64
macOS Apple Silicon (arm64) probe-client-darwin-arm64
Windows amd64 probe-client.exe
Install Script (Linux + macOS) install.sh

Server standalone binaries (uploaded by the standalone workflow)

Platform File
Linux amd64 pulse-server-standalone-linux-amd64
Linux arm64 pulse-server-standalone-linux-arm64

Quick Install (Linux & macOS):

curl -sSL https://raw.githubusercontent.com/xhhcn/Pulse/main/client/install.sh | sudo bash -s -- --id YOUR_ID --server http://YOUR_SERVER:8008

One-click migration to a new host:

PASSWORD="$OLD_ADMIN_PW" \
  sudo -E ./scripts/migrate.sh --from https://old.example.com