kino 0.2.0 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +32 -0
- data/Cargo.lock +142 -139
- data/README.md +84 -3
- data/ext/kino/Cargo.toml +3 -3
- data/ext/kino/src/control.rs +718 -0
- data/ext/kino/src/lib.rs +12 -0
- data/ext/kino/src/mono.rs +26 -0
- data/ext/kino/src/queue.rs +7 -0
- data/ext/kino/src/registry.rs +155 -0
- data/ext/kino/src/request.rs +4 -0
- data/ext/kino/src/server.rs +116 -6
- data/lib/kino/cli.rb +5 -2
- data/lib/kino/configuration.rb +57 -0
- data/lib/kino/hook_fire.rb +23 -0
- data/lib/kino/quarantine_monitor.rb +70 -0
- data/lib/kino/ractor_supervisor.rb +59 -14
- data/lib/kino/server.rb +143 -21
- data/lib/kino/templates/kino.rb.tt +51 -0
- data/lib/kino/version.rb +1 -1
- data/lib/kino/worker.rb +36 -19
- data/lib/kino/worker_hooks.rb +11 -0
- data/lib/kino.rb +3 -0
- data/sig/kino.rbs +9 -0
- metadata +7 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 129f2e9c0c20ba89c1f2f1e854d32f2b746858546b0c6fdb1a88a3fcb14e05cf
|
|
4
|
+
data.tar.gz: 66b465f2e5989e621487752d0b4dac48a9da0857b5290effaac9af803bd315e2
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: ac6656c0cd168c5c43dd5d1585b639b93f2489b5e017cbdd297c383c19d083c391cd7ac60034dbcd825bc525b42d7a966f884aa9d03eb0185e7bf8b5539a7781
|
|
7
|
+
data.tar.gz: 4392ca122bb8d865eec08393a6f339343bb2f5fac209b82e845ec6319d04f71a7a309a70d5d6518a70d70fc701c50dbd482646250b4d46f3e0d313e497bf4e3d
|
data/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,35 @@
|
|
|
1
|
+
## [0.3.0] - 2026-08-13
|
|
2
|
+
|
|
3
|
+
- Queue-time histogram: `/metrics` exposes `kino_request_queue_seconds`, a
|
|
4
|
+
histogram of how long each request waited for a free worker (the
|
|
5
|
+
saturation signal), and `server.stats`/`/stats` gain `queue_time`
|
|
6
|
+
(count and summed seconds). Measured internally with a monotonic clock,
|
|
7
|
+
so it needs no proxy header and is immune to clock skew.
|
|
8
|
+
- Lifecycle hooks: `after_boot`, `after_worker_boot`,
|
|
9
|
+
`after_request_complete`, and `on_worker_exit` join `on_error`, so apps
|
|
10
|
+
can wire their own metrics, readiness, and error tracking. The
|
|
11
|
+
worker-context hooks must be Ractor-shareable in `:ractor` mode; a raising
|
|
12
|
+
hook is logged and never kills a worker.
|
|
13
|
+
- Stuck-worker quarantine: past `quarantine_timeout`, a wedged dispatch
|
|
14
|
+
slot is quarantined and a replacement worker is spawned to restore
|
|
15
|
+
capacity (capped by `quarantine_max`), surfaced via `/stats`, `/metrics`,
|
|
16
|
+
and `server.stats`. The wedged worker is never force-killed.
|
|
17
|
+
- Control plane: a read-only monitoring listener (`control_bind`,
|
|
18
|
+
optional `control_token`) serving live stats as JSON at `/stats`,
|
|
19
|
+
Prometheus metrics at `/metrics`, and `/ready`/`/live` probes, answered
|
|
20
|
+
from the native layer on a dedicated thread so it stays responsive
|
|
21
|
+
while workers are busy, stuck, or draining.
|
|
22
|
+
- Per-worker stats: `/stats`, `/metrics`, and `server.stats` now break the
|
|
23
|
+
counters down per dispatch slot (served, in-flight, and `busy_ms`, the
|
|
24
|
+
age of the slot's current request), so a stuck slot is visible
|
|
25
|
+
individually.
|
|
26
|
+
- Update Rust and Ruby dependencies.
|
|
27
|
+
|
|
28
|
+
## [0.2.1] - 2026-07-27
|
|
29
|
+
|
|
30
|
+
- Update Rust dependencies for Kino.
|
|
31
|
+
- Update: puma 8 in benchmarks.
|
|
32
|
+
|
|
1
33
|
## [0.2.0] - 2026-07-13
|
|
2
34
|
|
|
3
35
|
- Strip debug info from release builds.
|