railwatch 0.9.0 → 0.9.1
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 +9 -0
- data/docs/configuration.md +3 -1
- data/lib/railwatch/version.rb +1 -1
- data/lib/railwatch.rb +9 -2
- metadata +1 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 5e6d353ab28ad688da0cd8f6cce5795101736d0e4ff9ca754aac49ba307a6614
|
|
4
|
+
data.tar.gz: 51558d4fa45d0f53a33c426e844ab4312704d2a82a6438070c1ad8bdcb5bfc6a
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 498984621aca78d24b668d15d8d77366b826335d7143b9e9e1ececfb8feab881a287dadb3ddae809c87597940cac05a34e1728ffdb9ecce073d4e4ffdabdcd46
|
|
7
|
+
data.tar.gz: 0e03f832ba5fc1d5a52168136252d5d789837d4a29f675a824f7d0577a5eb1f66cc35cc7d1f86f470d6afc7ebfc4d97978b3542b974de71a542ac92079e273d6
|
data/CHANGELOG.md
CHANGED
|
@@ -6,6 +6,15 @@
|
|
|
6
6
|
filled in by the release commit, which is also the only commit that
|
|
7
7
|
touches lib/railwatch/version.rb and Gemfile.lock. See CONTRIBUTING.md. -->
|
|
8
8
|
|
|
9
|
+
## 0.9.1 (2026-10-10)
|
|
10
|
+
|
|
11
|
+
- Sampling (or reporter backpressure, which divides every rate by up to 8)
|
|
12
|
+
no longer drops a scheduled task's `scheduled_task` record: a sampled-out
|
|
13
|
+
run still queues it, alone, and only its child records are dropped. The
|
|
14
|
+
record is the run's check-in, and a sampled-out run read as "missed its
|
|
15
|
+
run" for a task that ran on time. Once queued it is subject to the same
|
|
16
|
+
reporter-buffer and delivery limits as any other record.
|
|
17
|
+
|
|
9
18
|
## 0.9.0 (2026-10-08)
|
|
10
19
|
|
|
11
20
|
- An `outgoing_request` now says whether it was made inside a database
|
data/docs/configuration.md
CHANGED
|
@@ -50,7 +50,9 @@ proxy with `Forwarded` or `X-Forwarded-*` headers.
|
|
|
50
50
|
is decided once per execution, not per record, by
|
|
51
51
|
`Railwatch::Sampler.decide` in `lib/railwatch/sampler.rb`. A sampled-in
|
|
52
52
|
execution ships every child record it buffered. A sampled-out one ships
|
|
53
|
-
nothing except an unhandled exception.
|
|
53
|
+
nothing except an unhandled exception. A sampled-out scheduled task also
|
|
54
|
+
ships its `scheduled_task` record alone: that record is the run's check-in,
|
|
55
|
+
and without it the missed-run check would flag a task that ran. That exception is governed by its
|
|
54
56
|
own `exceptions` rate, decided once and memoized per execution. See
|
|
55
57
|
`docs/records.md`'s `exception` section.
|
|
56
58
|
|
data/lib/railwatch/version.rb
CHANGED
data/lib/railwatch.rb
CHANGED
|
@@ -161,6 +161,12 @@ module Railwatch
|
|
|
161
161
|
# unless the tail decision (tail_keep?) rescues the whole tree, which is
|
|
162
162
|
# also how a failure-context ring is promoted.
|
|
163
163
|
#
|
|
164
|
+
# A scheduled_task parent ships whatever the sampling decision, alone
|
|
165
|
+
# when sampled out: it is the run's check-in, and the missed-run detector
|
|
166
|
+
# reads its absence as "the scheduler did not run this". Sampling it out
|
|
167
|
+
# (backpressure divides the rate by up to 8) raised "missed its run" for
|
|
168
|
+
# tasks that ran on time. One small record per run is the price.
|
|
169
|
+
#
|
|
164
170
|
# The parent's fields may be given as a block instead of keywords. It is
|
|
165
171
|
# called only when a parent is actually going to ship, so a caller whose
|
|
166
172
|
# fields are expensive to assemble (the request middleware: an
|
|
@@ -178,7 +184,7 @@ module Railwatch
|
|
|
178
184
|
# either way: a profiler left running would outlive the execution.
|
|
179
185
|
profiled = exe.profiler_handle && ship_profile(exe, shipping)
|
|
180
186
|
parent = nil
|
|
181
|
-
if parent_type && (shipping || exe.exception_sampled)
|
|
187
|
+
if parent_type && (shipping || exe.exception_sampled || parent_type == :scheduled_task)
|
|
182
188
|
fields.merge!(yield) if block_given?
|
|
183
189
|
group ||= fields.delete(:group)
|
|
184
190
|
fields[:tail_sampled] = true if tail
|
|
@@ -197,7 +203,8 @@ module Railwatch
|
|
|
197
203
|
reporter.write(parent) if parent
|
|
198
204
|
elsif parent
|
|
199
205
|
# Head-sampled out, but an unhandled exception rolled the exceptions
|
|
200
|
-
# sample in
|
|
206
|
+
# sample in (the exception needs its parent, and only its parent), or
|
|
207
|
+
# it is a scheduled task's check-in, which always ships.
|
|
201
208
|
reporter.write(parent)
|
|
202
209
|
end
|
|
203
210
|
parent
|