Skip to content

Commit 86749f2

Browse files
authored
docs(changelog): document the two public APIs this cycle shipped undocumented (#252)
Deadline(TimeSpan) (whole-run wall-clock bound) and RetryOptions.Timeout(TimeSpan) (per-attempt read timeout) both landed in this Unreleased cycle but never got an Added entry — the changelog only referenced 'configured Deadline' in passing, from the exception added later, so a reader had no way to learn either feature exists.
1 parent f87a4fc commit 86749f2

1 file changed

Lines changed: 7 additions & 0 deletions

File tree

CHANGELOG.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,13 @@ The `NeoReports.Abstractions` contract follows SemVer strictly.
3636
dropped column auto-fit. (`AdjustToContents` can't stream.)
3737
- **Opt-in `AddNeoReportsStartupValidation()`** compiles config-driven reports at host startup so a
3838
malformed document fails fast at boot rather than on the first request.
39+
- **`ReportBuilder<T>.Deadline(TimeSpan)`** — an opt-in wall-clock bound on the *whole* run. On expiry
40+
the run is cooperatively cancelled and surfaces as a cancelled run, so a report wedged against a
41+
slow source can no longer occupy the single worker indefinitely. Off by default.
42+
- **`RetryOptions.Timeout(TimeSpan)`** — an opt-in *per-attempt* read timeout, so one hung read is
43+
abandoned and retried instead of stalling the run. Cooperative: it interrupts a read that honours
44+
cancellation (the async ADO/HTTP/Mongo reads do). Complements `Deadline`, which bounds the whole
45+
run rather than a single attempt.
3946
- **`ReportDeadlineExceededException`** (in `NeoReports.Core.Pipeline`), thrown when a run exceeds its
4047
configured `Deadline`. It derives from `OperationCanceledException`, so every existing catch site is
4148
unaffected and a deadline still surfaces as a cancelled run — the distinct type exists because the

0 commit comments

Comments
 (0)