-
Notifications
You must be signed in to change notification settings - Fork 8
Comparing changes
Open a pull request
base repository: chrisguidry/docket
base: 0.17.7
head repository: chrisguidry/docket
compare: 0.17.8
- 6 commits
- 31 files changed
- 2 contributors
Commits on Feb 14, 2026
-
Clear
knownfrom runs hash on cancel so add() can reschedule (#336)When a scheduled task gets cancelled via `docket.cancel()`, the cancel Lua script removes it from the stream/queue but leaves the `known` field in the runs hash. Later, when `_schedule_all_automatic_perpetual_tasks` (or any `docket.add()`) tries to reschedule the same key, the schedule script sees `known` and returns EXISTS. The task stays silently unscheduled until `execution_ttl` expires (default 15 min). The fix adds an `HDEL runs_key 'known' 'stream_id'` to the cancel script, clearing the dedup markers while keeping `state=cancelled` and `completed_at` for observability. The schedule script's existing fallback (`state == 'running'` → EXISTS) already handles cancelled tasks correctly once `known` is gone. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Configuration menu - View commit details
-
Copy full SHA for 61bc093 - Browse repository at this point
Copy the full SHA 61bc093View commit details -
Handle AlreadyExists race in cluster image build (#337)
`build_cluster_image` does a check-then-build that can race when parallel test sessions try to build the same image. The `images.get()` check passes for both, then one build succeeds and the other gets a `BuildError` with `AlreadyExists`. This showed up as every test failing in a CI cluster job: https://github.com/chrisguidry/docket/actions/runs/22020705636/job/63639829973 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Configuration menu - View commit details
-
Copy full SHA for aace0e1 - Browse repository at this point
Copy the full SHA aace0e1View commit details
Commits on Feb 15, 2026
-
Serialize cluster image builds and split CLI tests into separate CI j…
…ob (#338) Two changes to improve CI reliability: **Serialize cluster image builds with file lock** The `AlreadyExists` fix in #337 handled one symptom of parallel xdist workers racing to build the same cluster image, but there's a second failure mode showing up in CI: https://github.com/chrisguidry/docket/actions/runs/22025132964/job/63640478732 When concurrent builds target the same tag, the Docker SDK's `build()` completes successfully in the daemon, then tries to inspect the resulting image by its short ID. If another worker's build re-tagged the image in the meantime, the first image ID gets orphaned and the inspect 404s. This knocked out 485 of 686 tests in the cluster job. Rather than catching yet another exception type, this serializes the builds with `fcntl.flock` so only one worker builds at a time. The others wait and find it already built. Eliminates both the `AlreadyExists` and `ImageNotFound` races structurally. **Split CLI tests into separate CI job** Cluster CI jobs consistently run right at the 4-minute timeout, and when any test runs slightly slow the whole job gets cancelled. This has been showing up in roughly a third of recent CI runs: https://github.com/chrisguidry/docket/actions/runs/22025359927/job/63641245074 The 91 CLI tests are subprocess-based and don't exercise backend-specific behavior — they spawn `python -m docket ...` processes and check output. Running them against every Python x Backend combination (30 matrix entries) is wasted effort. This moves CLI tests to their own job that varies by Python version but uses a single Redis backend (8.0). The main test matrix now passes `--ignore=tests/cli` so cluster/valkey/memory jobs only run the tests that actually care about the backend. Local `pytest` runs are unaffected. --------- Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Configuration menu - View commit details
-
Copy full SHA for f410dfb - Browse repository at this point
Copy the full SHA f410dfbView commit details
Commits on Feb 17, 2026
-
Fix high CPU on Windows memory:// backend and add Windows CI (#340)
Docket's worker loops rely on Redis blocking behavior that fakeredis doesn't implement — `get_message()` and `xread()` return immediately instead of blocking, turning the loops into CPU spinners. The `xreadgroup` loop already had a workaround; this applies the same pattern to the cancellation listener and strike monitor. Also fixes a few things that prevent running on Windows at all: signal handler registration (raises `NotImplementedError` on Windows instead of working), `fcntl` import (doesn't exist on Windows — swapped for cross-platform locking with `msvcrt`), and Docker SDK imports in conftest that fail when Docker isn't installed. Adds a Windows CI job (memory:// only, 3 Python versions) and a regression test that directly measures idle CPU usage. Closes #339 🤖 Generated with [Claude Code](https://claude.com/claude-code) --------- Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Configuration menu - View commit details
-
Copy full SHA for 1191537 - Browse repository at this point
Copy the full SHA 1191537View commit details -
Support redis-py 7.2.0 and bump CI to Redis 8.6 (#342)
redis-py 7.2.0 deprecated `lib_name`/`lib_version` on `Connection.__init__` in favor of `DriverInfo`, but their own `RedisCluster` still passes `lib_name="redis-py"` internally, which triggers a `DeprecationWarning`. Our `filterwarnings = ["error"]` promotes that to an exception, breaking cluster tests. We pinned `<7.2` in #340 as a stopgap. This adds a targeted warning filter for that specific deprecation so we can run with redis-py 7.2.0 unpinned. Also bumps the Redis version in CI from 8.0 to 8.6 to track the latest release. Closes #341 🤖 Generated with [Claude Code](https://claude.com/claude-code) --------- Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Configuration menu - View commit details
-
Copy full SHA for 5969e1e - Browse repository at this point
Copy the full SHA 5969e1eView commit details -
Migrate docs from mkdocs-material to Zensical (#343)
mkdocs-material has entered maintenance mode in favor of Zensical, which is built by the same team and reads mkdocs.yml directly. This swaps the docs dependencies and build command accordingly. Also removes a stale top-level sitecustomize.py that snuck in with #170, adds site/ to .gitignore, and updates the README with current Redis/Valkey test versions and a note on working with docs locally. Closes #273 🤖 Generated with [Claude Code](https://claude.com/claude-code) --------- Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Configuration menu - View commit details
-
Copy full SHA for a63b5f3 - Browse repository at this point
Copy the full SHA a63b5f3View commit details
This comparison is taking too long to generate.
Unfortunately it looks like we can’t render this comparison for you right now. It might be too big, or there might be something weird with your repository.
You can try running this command locally to see the comparison on your machine:
git diff 0.17.7...0.17.8