Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
16 commits
Select commit Hold shift + click to select a range
ecb215e
feat: non-blocking event delivery
benjamin-stacks Jan 6, 2026
72437b2
fix: add a way to block until all events are delivered, to fix a test
benjamin-stacks Jan 7, 2026
f368e56
fix: ensure `process_pending_payloads` is really only called at startup
benjamin-stacks Jan 8, 2026
d5fa2fc
fix all the integration test issues with asynchronous event dispatching
benjamin-stacks Jan 8, 2026
1b4d5f4
use the same event dispatcher for neon and nakamoto
benjamin-stacks Jan 9, 2026
16d9387
give event dispatcher threads distinct names, and at some debug logging
benjamin-stacks Jan 9, 2026
b856441
Merge branch 'refactor/event-dispatcher-tweaks' into feat/non-blockin…
benjamin-stacks Jan 9, 2026
2a26166
Merge branch 'refactor/event-dispatcher-tweaks' into feat/non-blockin…
benjamin-stacks Jan 14, 2026
c4897da
refactor: remove error boilerplate by using `thiserror`
benjamin-stacks Jan 14, 2026
02dfa1a
remove unused import
benjamin-stacks Jan 14, 2026
a9e21f1
Merge branch 'refactor/event-dispatcher-tweaks' into feat/non-blockin…
benjamin-stacks Jan 15, 2026
5322cfa
feat: allow specifying the queue size for the event dispatcher
benjamin-stacks Jan 15, 2026
05cd02c
allow configuring event dispatcher blocking behavior in `config.toml`
benjamin-stacks Jan 16, 2026
94984ab
chore: update changelog
benjamin-stacks Jan 16, 2026
ff7d455
chore: add/bump copyright note in all files that this PR touches
benjamin-stacks Jan 16, 2026
c6a01da
Merge branch 'develop' into feat/non-blocking-event-delivery
benjamin-stacks Jan 20, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ and this project adheres to the versioning scheme outlined in the [README.md](RE

- In the `/v3/transaction/{txid}` RPC endpoint, added `block_height` and `is_canonical` to the response.
- Improved block validation in `stacks-inspect`.
- Allow non-blocking event dispatching. This is off by default, but can be enabled in the node configuration.

### Changed

Expand Down
14 changes: 14 additions & 0 deletions docs/event-dispatcher.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,20 @@ disable_retries = false # Optional: If true, failed deliveries w

The `stacks-node` will then execute HTTP POST requests with JSON payloads to the configured `endpoint` for the subscribed events.

By default, when sending a payload the event dispatcher will block node operation until it has received a successful response from your observer. Your event observer should therefore be quick to respond, and offload any expensive computation to an asynchronous background task. Alternatively, you can configure the events to be delivered in a non-blocking fashion like this:

```toml
[node]
...
event_dispatcher_blocking = false
# By default, up to 1,000 requests can be held in a queue before the event dispatcher will start blocking
# again. If you expect bigger bursts than that, you can further tweak this value.
#
# event_dispatcher_queue_size = 1_000
```

Note that this is only meant to deal with bursts of events. If your event observer is continuously slower than the stream of incoming events, it will fall behind more and more, and the dispatcher will eventually start blocking again to catch up.

## Important Notes

* **`/new_microblocks` Endpoint Limitation:** Event delivery via the `/new_microblocks` endpoint (and by extension, events sourced from microblocks delivered to `/new_block`) is **only supported until epoch 2.5**. After this epoch, observers will no longer receive events on this path for new microblocks.
Expand Down
Loading