Skip to content

docs: stream replay caps + get_transaction profiling (Hyperion 4.1.0) - #11

Merged
igorls merged 1 commit into
masterfrom
docs/stream-replay-caps
Aug 7, 2026
Merged

docs: stream replay caps + get_transaction profiling (Hyperion 4.1.0)#11
igorls merged 1 commit into
masterfrom
docs/stream-replay-caps

Conversation

@igorls

@igorls igorls commented Aug 7, 2026

Copy link
Copy Markdown
Member

Documents the remaining Hyperion v4.1.0 config options not yet covered:

  • api.stream_scroll_limit — now defaults to 50000 per history replay when unset (previously unlimited); -1 keeps unlimited with a warning past 100k docs (hyperion-history-api #178).
  • api.stream_max_concurrent_replays — per-process concurrency cap (default 4) with "server busy, retry" rejection (#178).
  • api.hot_first_transaction_profiling — opt-in [gtx-profile] diagnostic for sizing hot_first_window from measured parts_back distribution (#181).

Also adds a client-facing note in the stream client docs: start_from replays are subject to these server-side limits; retry with backoff on "server busy", and prefer bounded REST pagination for deep history reads.

With this, all operator-facing v4.1.0 options are documented (hot-first #7/#8, delta deletions #9, asc bounds #10 already merged).

Copilot AI lite review requested due to automatic review settings August 7, 2026 07:25
@chatgpt-codex-connector

Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.
To continue using code reviews, you can upgrade your account or add credits to your account and enable them for code reviews in your settings.

@igorls
igorls merged commit 3f67596 into master Aug 7, 2026
@igorls
igorls deleted the docs/stream-replay-caps branch August 7, 2026 07:25

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Documents remaining Hyperion v4.1.0 operator/client behaviors around stream history replays and get_transaction profiling, extending the existing chain configuration reference and the stream client guide.

Changes:

  • Adds new API config reference entries for hot_first_transaction_profiling, stream_scroll_limit, and stream_max_concurrent_replays, including defaults and operational rationale.
  • Updates the example config.json snippet to include the new options.
  • Adds a stream client warning that start_from history replays are subject to server-side document and concurrency limits, with client retry guidance.

Reviewed changes

Copilot reviewed 2 out of 2 changed files in this pull request and generated 1 comment.

File Description
docs/providers/setup/chain.md Documents new v4.1.0 API config options and adds them to the config example.
docs/dev/stream_client.md Adds a client-facing warning about server-side replay limits and suggested client behavior.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

- `"hot_first_transaction": false` ⇒ When enabled, a `get_transaction` lookup **without** a `block_hint` searches the most recent action partition(s) first and widens to the full index set **only** on a miss. Without it, a `trx_id` lookup has no block range to prune on and fans out across every action partition — including cold/old shards. Because all of a transaction's documents share one block (one partition), a hot-window hit is always complete, so the common case (recent transactions) never touches the older tiers. Reuses `hot_first_window`. Default off; safe to enable without reindexing. *(Tip: clients that already know the block can pass `?block_hint=<block_num>` to target the single partition directly.)*
- `"hot_first_transaction_profiling": false` ⇒ Diagnostic for sizing `hot_first_window` from real traffic *(Hyperion ≥ 4.1.0)*. When enabled, every `get_transaction` served **without** a `block_hint` logs one `[gtx-profile]` line: which phase answered it (`hot` or `full`), per-phase Elasticsearch timings, and `parts_back` — how many partitions older than head the transaction was found in (a window of `parts_back + 1` would have served it from the hot path; `-1` = not found). Aggregate `parts_back` over a sample to see the age distribution of lookups. One log line **per request** — enable briefly to sample, then disable.
- `"stream_scroll_limit": 50000` ⇒ Maximum documents a single streaming **history replay** (a subscription with `start_from` in the past) may scroll *(Hyperion ≥ 4.1.0; previously unlimited when unset)*. A replay walks every index partition — including cold-tier shards on tiered clusters — so an unbounded deep replay can saturate old storage. Set `-1` for unlimited (a warning is logged past 100k documents per replay).
- `"stream_max_concurrent_replays": 4` ⇒ Maximum streaming history replays running concurrently per API process *(Hyperion ≥ 4.1.0)*. Additional replay requests are rejected with a "server busy, please retry" message instead of piling scroll load onto the cluster (e.g. during client reconnect storms). Applies regardless of `stream_scroll_limit`.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants