Repository navigation
Release v1.3.68
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.68xhh1128/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:8008One-click migration to a new host:
PASSWORD="$OLD_ADMIN_PW" \
sudo -E ./scripts/migrate.sh --from https://old.example.com