Skip to content

fix(taskmill): atomic parent resolution and weak scheduler reference in TaskContext#22

Merged
deepjoy merged 2 commits into
mainfrom
time-of-use-bug
Mar 14, 2026
Merged

fix(taskmill): atomic parent resolution and weak scheduler reference in TaskContext#22
deepjoy merged 2 commits into
mainfrom
time-of-use-bug

Conversation

@deepjoy
Copy link
Copy Markdown
Owner

@deepjoy deepjoy commented Mar 14, 2026

Make try_resolve_parent run inside a single BEGIN IMMEDIATE transaction to eliminate the TOCTOU race where two children completing simultaneously could both trigger finalization. Change pending_finalizers from Vec to HashSet so duplicate enqueues are silently deduplicated.

Replace the strong Arc held by TaskContext with a Weak reference (WeakScheduler) so that spawned tasks no longer prevent the scheduler from being dropped during shutdown.

deepjoy added 2 commits March 14, 2026 05:54
…in TaskContext

Make try_resolve_parent run inside a single BEGIN IMMEDIATE transaction
to eliminate the TOCTOU race where two children completing simultaneously
could both trigger finalization. Change pending_finalizers from Vec to
HashSet so duplicate enqueues are silently deduplicated.

Replace the strong Arc<SchedulerInner> held by TaskContext with a Weak
reference (WeakScheduler) so that spawned tasks no longer prevent the
scheduler from being dropped during shutdown.
@deepjoy deepjoy enabled auto-merge (squash) March 14, 2026 13:01
@deepjoy deepjoy merged commit a49e45e into main Mar 14, 2026
1 check passed
@github-actions github-actions Bot mentioned this pull request Mar 14, 2026
deepjoy pushed a commit that referenced this pull request Mar 14, 2026
## 🤖 New release

* `taskmill`: 0.3.0 -> 0.3.1 (✓ API compatible changes)

<details><summary><i><b>Changelog</b></i></summary><p>

<blockquote>

## [0.3.1](v0.3.0...v0.3.1)
- 2026-03-14

### Fixed

- scheduler performance and correctness improvements
([#24](#24))
- *(taskmill)* atomic parent resolution and weak scheduler reference in
TaskContext ([#22](#22))

### Other

- *(taskmill)* split large modules into focused submodules and optimize
completion hot path ([#25](#25))
- *(taskmill)* add integration tests and criterion benchmarks
([#21](#21))
</blockquote>


</p></details>

---
This PR was generated with
[release-plz](https://github.com/release-plz/release-plz/).

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
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.

1 participant