Commit 1547f5b
fix(#397): replace O(N²) GetMicroflow/GetNanoflow with direct unit lookup
Lint rules that call GetMicroflow(id) inside a catalog microflow loop
were triggering N full ListMicroflows() scans — one per iteration — each
re-parsing all microflow BSON from the MPR database. On large projects
this caused mxcli report to hang indefinitely.
Add getUnitByID(): V1 does a single-row SQLite query by BLOB primary key,
V2 uses the existing unit cache then reads one mxunit file. Both paths
are effectively O(1) vs the previous O(N) full scan, making the overall
lint pass O(N) instead of O(N²).
Affected rules: ValidationFeedback, OverlappingActivities, NoCommitInLoop,
ExclusiveSplitCaption, ErrorHandlingOnCalls, NoContinueErrorHandling.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>1 parent 24a939b commit 1547f5b
2 files changed
Lines changed: 74 additions & 16 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
201 | 201 | | |
202 | 202 | | |
203 | 203 | | |
| 204 | + | |
204 | 205 | | |
205 | | - | |
| 206 | + | |
206 | 207 | | |
207 | 208 | | |
208 | 209 | | |
209 | | - | |
210 | | - | |
211 | | - | |
212 | | - | |
213 | | - | |
| 210 | + | |
| 211 | + | |
214 | 212 | | |
215 | | - | |
216 | | - | |
| 213 | + | |
217 | 214 | | |
218 | 215 | | |
219 | 216 | | |
| |||
285 | 282 | | |
286 | 283 | | |
287 | 284 | | |
| 285 | + | |
288 | 286 | | |
289 | | - | |
| 287 | + | |
290 | 288 | | |
291 | 289 | | |
292 | 290 | | |
293 | | - | |
294 | | - | |
295 | | - | |
296 | | - | |
297 | | - | |
| 291 | + | |
| 292 | + | |
298 | 293 | | |
299 | | - | |
300 | | - | |
| 294 | + | |
301 | 295 | | |
302 | 296 | | |
303 | 297 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
4 | 4 | | |
5 | 5 | | |
6 | 6 | | |
| 7 | + | |
| 8 | + | |
7 | 9 | | |
8 | 10 | | |
9 | 11 | | |
10 | 12 | | |
11 | 13 | | |
| 14 | + | |
12 | 15 | | |
13 | 16 | | |
14 | 17 | | |
| |||
587 | 590 | | |
588 | 591 | | |
589 | 592 | | |
| 593 | + | |
| 594 | + | |
| 595 | + | |
| 596 | + | |
| 597 | + | |
| 598 | + | |
| 599 | + | |
| 600 | + | |
| 601 | + | |
| 602 | + | |
| 603 | + | |
| 604 | + | |
| 605 | + | |
| 606 | + | |
| 607 | + | |
| 608 | + | |
| 609 | + | |
| 610 | + | |
| 611 | + | |
| 612 | + | |
| 613 | + | |
| 614 | + | |
| 615 | + | |
| 616 | + | |
| 617 | + | |
| 618 | + | |
| 619 | + | |
| 620 | + | |
| 621 | + | |
| 622 | + | |
| 623 | + | |
| 624 | + | |
| 625 | + | |
| 626 | + | |
| 627 | + | |
| 628 | + | |
| 629 | + | |
| 630 | + | |
| 631 | + | |
| 632 | + | |
| 633 | + | |
| 634 | + | |
| 635 | + | |
| 636 | + | |
| 637 | + | |
| 638 | + | |
| 639 | + | |
| 640 | + | |
| 641 | + | |
| 642 | + | |
| 643 | + | |
| 644 | + | |
| 645 | + | |
| 646 | + | |
| 647 | + | |
| 648 | + | |
| 649 | + | |
| 650 | + | |
| 651 | + | |
| 652 | + | |
| 653 | + | |
0 commit comments