Skip to content

fix(oxfmt): Fix "race probe" logic with unit tests#22378

Merged
graphite-app[bot] merged 1 commit into
mainfrom
05-13-fix_oxfmt_fix_race_probe_bug_with_unit_tests
May 15, 2026
Merged

fix(oxfmt): Fix "race probe" logic with unit tests#22378
graphite-app[bot] merged 1 commit into
mainfrom
05-13-fix_oxfmt_fix_race_probe_bug_with_unit_tests

Conversation

@leaysgur

@leaysgur leaysgur commented May 13, 2026

Copy link
Copy Markdown
Member

Race probe: A protective measure required to correctly locate the nearest config file without a pre-scan.

The ignore crate traverses directories in parallel. Because this behavior is somewhat akin to a DFS and is further influenced by factors like OS resource availability, it is unpredictable.

Consequently, when each file attempts to locate its nearest config, we must prevent it from "settling" for a config further up the directory tree and accidentally adopting the wrong one.

@github-actions github-actions Bot added A-cli Area - CLI A-formatter Area - Formatter labels May 13, 2026

leaysgur commented May 13, 2026

Copy link
Copy Markdown
Member Author

How to use the Graphite Merge Queue

Add either label to this PR to merge it via the merge queue:

  • 0-merge - adds this PR to the back of the merge queue
  • hotfix - for urgent changes, fast-track this PR to the front of the merge queue

You must have a Graphite account in order to use the merge queue. Sign up using this link.

An organization admin has enabled the Graphite Merge Queue in this repository.

Please do not merge from GitHub as this will restart CI on PRs being processed by the merge queue.

This stack of pull requests is managed by Graphite. Learn more about stacking.

@codspeed-hq

codspeed-hq Bot commented May 13, 2026

Copy link
Copy Markdown

Merging this PR will not alter performance

✅ 48 untouched benchmarks
⏩ 3 skipped benchmarks1


Comparing 05-13-fix_oxfmt_fix_race_probe_bug_with_unit_tests (e079714) with main (e49ee26)2

Open in CodSpeed

Footnotes

  1. 3 benchmarks were skipped, so the baseline results were used instead. If they were deleted from the codebase, click here and archive them to remove them from the performance reports.

  2. No successful run was found on 05-13-refactor_oxfmt_split_core_config_modules (0837901) during the generation of this report, so main (e49ee26) was used instead as the comparison base. There might be some changes unrelated to this pull request in this report.

@leaysgur leaysgur changed the title fix(oxfmt): Fix race probe bug with unit tests fix(oxfmt): Fix race_probe logic with unit tests May 13, 2026
@leaysgur leaysgur force-pushed the 05-13-refactor_oxfmt_split_core_config_modules branch from 99838c7 to de75020 Compare May 14, 2026 00:48
@leaysgur leaysgur force-pushed the 05-13-fix_oxfmt_fix_race_probe_bug_with_unit_tests branch from 912157b to 6d99836 Compare May 14, 2026 00:48
@leaysgur leaysgur changed the title fix(oxfmt): Fix race_probe logic with unit tests fix(oxfmt): Fix "race probe" logic with unit tests May 14, 2026
@leaysgur leaysgur marked this pull request as ready for review May 14, 2026 07:58
@leaysgur leaysgur force-pushed the 05-13-fix_oxfmt_fix_race_probe_bug_with_unit_tests branch from 6d99836 to e079714 Compare May 15, 2026 01:09
@leaysgur leaysgur force-pushed the 05-13-refactor_oxfmt_split_core_config_modules branch from de75020 to 0837901 Compare May 15, 2026 01:09
@graphite-app graphite-app Bot added the 0-merge Merge with Graphite Merge Queue label May 15, 2026
@graphite-app graphite-app Bot force-pushed the 05-13-refactor_oxfmt_split_core_config_modules branch from 0837901 to 7b9601d Compare May 15, 2026 02:51
@graphite-app graphite-app Bot force-pushed the 05-13-fix_oxfmt_fix_race_probe_bug_with_unit_tests branch from e079714 to 39f3fcf Compare May 15, 2026 02:55
@graphite-app graphite-app Bot force-pushed the 05-13-refactor_oxfmt_split_core_config_modules branch 2 times, most recently from 9174004 to 5f14ae8 Compare May 15, 2026 03:11
@graphite-app graphite-app Bot force-pushed the 05-13-fix_oxfmt_fix_race_probe_bug_with_unit_tests branch from 39f3fcf to 8dfd311 Compare May 15, 2026 03:11
@graphite-app graphite-app Bot changed the base branch from 05-13-refactor_oxfmt_split_core_config_modules to graphite-base/22378 May 15, 2026 03:16
@graphite-app

graphite-app Bot commented May 15, 2026

Copy link
Copy Markdown
Contributor

Merge activity

@graphite-app graphite-app Bot changed the base branch from graphite-base/22378 to main May 15, 2026 03:20
Race probe: A protective measure required to correctly locate the nearest config file without a pre-scan.

The `ignore` crate traverses directories in parallel. Because this behavior is somewhat akin to a DFS and is further influenced by factors like OS resource availability, it is unpredictable.

Consequently, when each file attempts to locate its nearest config, we must prevent it from "settling" for a config further up the directory tree and accidentally adopting the wrong one.
@graphite-app graphite-app Bot force-pushed the 05-13-fix_oxfmt_fix_race_probe_bug_with_unit_tests branch from 8dfd311 to 441d724 Compare May 15, 2026 03:20
@graphite-app graphite-app Bot merged commit 441d724 into main May 15, 2026
29 checks passed
@graphite-app graphite-app Bot removed the 0-merge Merge with Graphite Merge Queue label May 15, 2026
@graphite-app graphite-app Bot deleted the 05-13-fix_oxfmt_fix_race_probe_bug_with_unit_tests branch May 15, 2026 03:24
overlookmotel added a commit that referenced this pull request May 15, 2026
# Oxlint
### 🚀 Features

- 5478fb5 linter/jsdoc: Implement `require-throws-description` rule
(#22386) (Mikhail Baev)
- b46d4de linter: Add `--debug` options and add per-rule timing info
(#22282) (camchenry)
- c73225e linter/eslint: Implement `prefer-arrow-callback` rule (#22312)
(박천(Cheon Park))
- de82b59 linter: Add support for `eslint-plugin-jsx-a11y-x` (#22356)
(mehm8128)
- b170da3 linter: Implement no-implicit-globals (#22249) (Jovi De
Croock)
- f44b6c8 linter: Fill schemas `DummyRuleMap` with built-in rules
(#22288) (Sysix)
- 5cdb80d linter/jsx-a11y/: Implement
no-interactive-element-to-noninteractive-role (#22332) (anarefolio)
- 2749422 linter/jsx-a11y: Add no-noninteractive-element-interactions
(#22337) (Pablo Tovar)
- ba2a1d3 linter/jsdoc: Implement `require-throws-type` rule (#22358)
(Mikhail Baev)
- d90729d linter/jsx-a11y: Implement control-has-associated-label
(#21985) (mehm8128)
- 1d04903 linter/jsdoc: Implement `require-yields-type` rule (#22331)
(Mikhail Baev)

### 🐛 Bug Fixes

- 04c4609 linter/no-nullable-type-assertion-style: Mark as suggestion
(#22450) (camc314)
- 1c2b7ec linter/no-unused-vars: Handle shadowed self assignments
(#22387) (camc314)
- 9faa1d5 linter/no-noninteractive-tabindex: Check conditional
expressions (#22435) (camc314)
- 0854b3a linter/prefer-arrow-callback: Preserve TSX generic arrows in
fixer (#22434) (camc314)
- 410b814 linter: Supply `source_type` to codegen fixer (#22433)
(camc314)
- 3c1bb6f linter: Skip per-node dispatch for run_once-only rules in
large files (#22398) (Connor Shea)
- 5206cde linter/no-unused-vars: Improve type-only rest parameters
diagnostic (#22385) (camc314)
- c9a22b5 linter/consistent-function-scoping: Allow imported bindings
(#22384) (camc314)
- c1e966d linter: Report type-only unused parameters in no-unused-vars
(#22368) (camchenry)
- 4818d98 linter: Check whether path is under root before ignoring it
(#20101) (Leonabcd123)
- 41fcdcf linter: Fix rule count not including override rules (#19898)
(Daniel Osmond)
- 59b4f0e linter: Fix 'explicit-module-boundary-types' false positive
with 'allowOverloadFunctions' (#22341) (camchenry)

### ⚡ Performance

- 6d42395 linter: Narrow no-unsafe-optional-chaining dispatch (#22437)
(camchenry)
- 08595fb linter: Optimize no-unreachable (#22397) (camchenry)
- 3b46a8d linter: Optimize `no-loss-of-precision` (#22395) (camchenry)
- b3e2dc9 linter: Optimize `oxc/bad-array-method-on-arguments` (#22393)
(camchenry)

### 📚 Documentation

- dcbf62c linter: Remove some duplicate spaces (#22359) (camc314)
# Oxfmt
### 💥 BREAKING CHANGES

- 21bb5d1 oxfmt: [**BREAKING**] Avoid config pre-scan (#22258)
(leaysgur)

### 🐛 Bug Fixes

- 441d724 oxfmt: Fix "race probe" logic with unit tests (#22378)
(leaysgur)
- e49ee26 formatter: Respect `singleQuote` for jsdoc `import()` type
paths (#22353) (Colin Lienard)
- 43b9978 formatter/sort_imports: Treat subpath imports as internal
(#22440) (leaysgur)
- 7c5cfa0 formatter: Handle jsx trailing comment with parens (#22370)
(leaysgur)
- ac5f120 formatter: Fix erroneous formatting inside a template literal
with parentheses (#22262) (Jovi De Croock)
- 3c53a95 formatter/sort_imports: Handle ignore comment as boundary
(#22369) (leaysgur)
- 4dd83dd oxfmt: Send expandedStates variants as shared refs (#22366)
(leaysgur)
- 055cc61 formatter: Expand JSX logical chain with leading line comment
(#22346) (leaysgur)
- 8046222 formatter: Preserve type alias comment break (#22261) (Jovi De
Croock)

### ⚡ Performance

- 123c493 oxfmt: Reduce more syscalls (#22380) (leaysgur)

Co-authored-by: overlookmotel <557937+overlookmotel@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

A-cli Area - CLI A-formatter Area - Formatter

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant