perf: raise default issue/hotspot sync concurrency to 50#160
Conversation
The previous defaults (issueSync 20, hotspotSync 20 — and 5/3 in older
transfer-pipeline shortcuts) bottlenecked migrations on SonarQube Cloud
API throughput rather than on round-trip latency. Bump the default to
50 across every sync entry point so the matched-pair set actually moves
through quickly. The setting remains user-configurable in three places:
- migration config: `performance.issueSync.concurrency` /
`performance.hotspotSync.concurrency`
- desktop UI: Advanced Settings → Issue/Hotspot sync concurrency fields
- CLI: `--concurrency N` (applies to all sync stages, including hotspots
— previously capped at 3 by an artifact)
Defaults bumped:
- Schema (`performance-schema.js`): issueSync.default 20 → 50,
hotspotSync.default 20 → 50, maximum 50 → 100.
- Runtime resolver (`resolve-performance-config.js`): 20 → 50 for both.
- Per-pipeline syncIssues fallback (4 pipelines): `|| 5` → `|| 50`.
- Per-pipeline syncHotspots fallback (4 pipelines): `|| 3` → `|| 50`.
- Transfer-pipeline fetch-and-sync-{issues,hotspots} fallbacks
(4 pipelines × 2 = 8 files): same.
- CLI `--concurrency` override (`build-migrate-perf-config.js`):
removed the `Math.min(options.concurrency, 3)` cap on hotspotSync.
- Desktop UI default + max range (transfer-config.js,
advanced-settings/renderer.js): 20 → 50, max 50 → 100.
- Example config (`examples/migrate-config.example.json`): 5/3 → 50/50.
- Configuration docs: defaults and ranges updated.
Auto-tune is unchanged — it still scales by CPU count by design.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
SummaryThis PR raises the default concurrency for issue and hotspot metadata sync from 20 to 50 across all 4 pipelines, the schema, and the CLI. It also lifts the maximum allowed concurrency from 50 to 100, and removes a hardcoded The change is purely a defaults/configuration adjustment with one functional improvement (the CLI cap removal). No sync logic, retry behavior, or rate-limiting logic is modified. Auto-tune scaling remains unchanged. What reviewers should knowVerification checklist:
Rationale (already detailed in author's description): Test results:
|
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes and found 1 potential issue.
❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, have a team admin enable autofix in the Cursor dashboard.
Reviewed by Cursor Bugbot for commit 6f5e4d8. Configure here.
| ${ConfigForm.numberField('perf-issue-sync', 'Issue sync concurrency', perf.issueSync?.concurrency ?? 20, { min: 1, max: 50, hint: 'Max concurrent issue metadata sync operations to SonarCloud' })} | ||
| ${ConfigForm.numberField('perf-hotspot-sync', 'Hotspot sync concurrency', perf.hotspotSync?.concurrency ?? 20, { min: 1, max: 50, hint: 'Max concurrent hotspot sync operations to SonarCloud' })} | ||
| ${ConfigForm.numberField('perf-issue-sync', 'Issue sync concurrency', perf.issueSync?.concurrency ?? 50, { min: 1, max: 100, hint: 'Max concurrent issue metadata sync operations to SonarCloud' })} | ||
| ${ConfigForm.numberField('perf-hotspot-sync', 'Hotspot sync concurrency', perf.hotspotSync?.concurrency ?? 50, { min: 1, max: 100, hint: 'Max concurrent hotspot sync operations to SonarCloud' })} |
There was a problem hiding this comment.
Desktop defaults file not updated to match new defaults
Medium Severity
desktop/src/renderer/js/screens/advanced-settings/defaults.js still has issueSync: { concurrency: 20 } and hotspotSync: { concurrency: 20 } while the renderer, schema, and all runtime code now default to 50. This means new installations and "Reset to Defaults" will use 20 instead of 50, and AdvancedSettingsReader.readFromForm uses these stale values as parse fallbacks. The ADVANCED_DEFAULTS object was missed in this PR.
Reviewed by Cursor Bugbot for commit 6f5e4d8. Configure here.


Summary
Raise the default concurrency for issue and hotspot metadata sync from
20to50across all 4 pipelines (sq-9.9, sq-10.0, sq-10.4, sq-2025). The previous defaults bottlenecked migrations on SonarQube Cloud API throughput rather than on round-trip latency —issueSyncdefaulted to 20,hotspotSyncto 20 (and5/3in the older transfer-pipeline shortcuts).The setting was already configurable; this PR keeps it that way and just shifts the floor up:
performance.issueSync.concurrency/performance.hotspotSync.concurrency(range now1–100).100).--concurrency Napplies to all sync stages, including hotspots — previously capped at3by an artifact (Math.min(options.concurrency, 3)), now lifted.Auto-tune is unchanged — it still scales by CPU count by design.
Files changed (23)
src/shared/config/schema-shared/helpers/performance-schema.js(defaults + max).src/shared/utils/system-info/helpers/resolve-performance-config.js.syncIssues/syncHotspotsfallbacks (4 pipelines, 8 files).fetch-and-sync-{issues,hotspots}fallbacks (4 pipelines, 8 files).src/commands/migrate/helpers/build-migrate-perf-config.js.desktop/src/renderer/js/screens/{transfer-config,advanced-settings/renderer}.js.examples/migrate-config.example.json.docs/configuration.md.Test plan
main, 70 with this change. Sorted-diff confirms identical failure set — zero regressions.🤖 Generated with Claude Code
Note
Medium Risk
Raises default parallelism for SonarCloud issue/hotspot metadata syncing, which can increase API load and expose rate-limit/503 behavior in real migrations. Changes are mostly default/validation updates but affect runtime concurrency across multiple pipelines and the CLI/UI defaults.
Overview
Increases default SonarCloud metadata sync concurrency for both issues and hotspots to
50across the app (including per-pipelinesyncIssues/syncHotspotsand transfer helpers), replacing prior lower fallbacks.Updates config handling to match the new baseline: schema defaults and allowed max move to
1–100, desktop UI fields default/max are adjusted accordingly, and the migrate CLI--concurrencyoverride now applies the same value to hotspot sync (removing the previous low cap). Documentation and example configs are updated to reflect the new defaults.Reviewed by Cursor Bugbot for commit 6f5e4d8. Bugbot is set up for automated code reviews on this repo. Configure here.