Skip to content

perf(proxy): parallelize provider proxy overlay lookups - #2984

Merged
diegosouzapw merged 1 commit into
diegosouzapw:release/v3.8.8from
terence71-glitch:perf/provider-proxy-overlay-lookups
May 31, 2026
Merged

diegosouzapw merged 1 commit into
diegosouzapw:release/v3.8.8from
terence71-glitch:perf/provider-proxy-overlay-lookups

Conversation

@terence71-glitch

@terence71-glitch terence71-glitch commented May 31, 2026 •

Copy link
Copy Markdown
Contributor

Summary

Follow-up to #2963, which was merged before this optimization commit landed.

This keeps the existing provider registry overlay behavior unchanged, but avoids resolving provider assignment proxy details sequentially. Provider assignment proxy lookups now run in parallel with Promise.all, then successful results are applied to config.providers.

Validation

  • npx eslint src/app/api/settings/proxy/route.ts
  • npx cross-env DISABLE_SQLITE_AUTO_BACKUP=true node --import tsx --test --test-force-exit tests/unit/route-edge-coverage.test.ts

Result: 15 pass, 0 fail.

@gemini-code-assist gemini-code-assist Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request refactors the proxy retrieval logic in src/app/api/settings/proxy/route.ts to fetch proxy configurations in parallel using Promise.all instead of sequentially. The reviewer suggested a further optimization to deduplicate proxy lookups by extracting unique proxyIds before querying, which would prevent redundant database queries when multiple assignments share the same proxy.

Comment on lines +197 to 217
const providerProxyResults = await Promise.all(
providerAssignments.map(async (assignment) => {
if (!assignment.scopeId || !assignment.proxyId) {
return null;
}
const proxyData = await getProxyById(assignment.proxyId, { includeSecrets: true });
if (!proxyData) return null;
return { scopeId: assignment.scopeId, proxyData };
})
);

for (const result of providerProxyResults) {
if (!result) continue;
config.providers[result.scopeId] = {
type: result.proxyData.type,
host: result.proxyData.host,
port: result.proxyData.port,
username: result.proxyData.username,
password: result.proxyData.password,
};
}

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

Optimization: Deduplicate Proxy Lookups

If multiple provider assignments share the same proxy (which is a very common configuration), the current implementation will perform redundant database queries for the same proxyId.

We can optimize this by:

  1. Filtering the assignments to find valid ones.
  2. Extracting the unique proxyIds.
  3. Fetching only the unique proxies in parallel.
  4. Mapping them back to the providers.

This reduces the number of database queries and event loop microtasks.

      const validAssignments = providerAssignments.filter(
        (assignment) => assignment.scopeId && assignment.proxyId
      );

      const uniqueProxyIds = Array.from(
        new Set(validAssignments.map((assignment) => assignment.proxyId as string))
      );

      const proxyDataResults = await Promise.all(
        uniqueProxyIds.map(async (proxyId) => {
          const proxyData = await getProxyById(proxyId, { includeSecrets: true });
          return { proxyId, proxyData };
        })
      );

      const proxyMap = new Map<string, NonNullable<typeof proxyDataResults[number]["proxyData"]>>();
      for (const { proxyId, proxyData } of proxyDataResults) {
        if (proxyData) {
          proxyMap.set(proxyId, proxyData);
        }
      }

      for (const assignment of validAssignments) {
        const proxyData = proxyMap.get(assignment.proxyId!);
        if (!proxyData) continue;
        config.providers[assignment.scopeId!] = {
          type: proxyData.type,
          host: proxyData.host,
          port: proxyData.port,
          username: proxyData.username,
          password: proxyData.password,
        };
      }

@diegosouzapw
diegosouzapw merged commit ca7756e into diegosouzapw:release/v3.8.8 May 31, 2026
3 checks passed
diegosouzapw added a commit that referenced this pull request Jun 1, 2026
…env-doc fixes

- bump package.json / open-sse / electron / openapi / llm.txt to 3.8.8
- restructure CHANGELOG: Unreleased -> [3.8.8], dedup broken Notion/MCP block (was 12x)
- add every PR since v3.8.7 that was missing: Quota Share Engine (#2859/#3022/#3032),
  page redesigns (#2827/#2839/#2847/#2849/#2869/#2873), and fixes #2960/#2973/#2984/
  #3021/#3029/#3031/#3035/#3036/#3037/#3039/#3043/#3028; folded #2978/#2988/#3041
- insert [3.8.8] section into all 41 i18n CHANGELOGs + sync llm.txt mirrors
- document OMNIROUTE_PLUGINS_ALLOW_EXEC in .env.example + ENVIRONMENT.md (env-doc-sync gap)
@diegosouzapw diegosouzapw mentioned this pull request Jun 2, 2026
HouMinXi pushed a commit to HouMinXi/OmniRoute that referenced this pull request Aug 2, 2026
…der-proxy-overlay-lookups

perf(proxy): parallelize provider proxy overlay lookups
HouMinXi pushed a commit to HouMinXi/OmniRoute that referenced this pull request Aug 2, 2026
…env-doc fixes

- bump package.json / open-sse / electron / openapi / llm.txt to 3.8.8
- restructure CHANGELOG: Unreleased -> [3.8.8], dedup broken Notion/MCP block (was 12x)
- add every PR since v3.8.7 that was missing: Quota Share Engine (diegosouzapw#2859/diegosouzapw#3022/diegosouzapw#3032),
  page redesigns (diegosouzapw#2827/diegosouzapw#2839/diegosouzapw#2847/diegosouzapw#2849/diegosouzapw#2869/diegosouzapw#2873), and fixes diegosouzapw#2960/diegosouzapw#2973/diegosouzapw#2984/
  diegosouzapw#3021/diegosouzapw#3029/diegosouzapw#3031/diegosouzapw#3035/diegosouzapw#3036/diegosouzapw#3037/diegosouzapw#3039/diegosouzapw#3043/diegosouzapw#3028; folded diegosouzapw#2978/diegosouzapw#2988/diegosouzapw#3041
- insert [3.8.8] section into all 41 i18n CHANGELOGs + sync llm.txt mirrors
- document OMNIROUTE_PLUGINS_ALLOW_EXEC in .env.example + ENVIRONMENT.md (env-doc-sync gap)
Poid-ZA pushed a commit to Poid-ZA/OmniRoute that referenced this pull request Aug 5, 2026
…der-proxy-overlay-lookups

perf(proxy): parallelize provider proxy overlay lookups
Poid-ZA pushed a commit to Poid-ZA/OmniRoute that referenced this pull request Aug 5, 2026
…env-doc fixes

- bump package.json / open-sse / electron / openapi / llm.txt to 3.8.8
- restructure CHANGELOG: Unreleased -> [3.8.8], dedup broken Notion/MCP block (was 12x)
- add every PR since v3.8.7 that was missing: Quota Share Engine (diegosouzapw#2859/diegosouzapw#3022/diegosouzapw#3032),
  page redesigns (diegosouzapw#2827/diegosouzapw#2839/diegosouzapw#2847/diegosouzapw#2849/diegosouzapw#2869/diegosouzapw#2873), and fixes diegosouzapw#2960/diegosouzapw#2973/diegosouzapw#2984/
  diegosouzapw#3021/diegosouzapw#3029/diegosouzapw#3031/diegosouzapw#3035/diegosouzapw#3036/diegosouzapw#3037/diegosouzapw#3039/diegosouzapw#3043/diegosouzapw#3028; folded diegosouzapw#2978/diegosouzapw#2988/diegosouzapw#3041
- insert [3.8.8] section into all 41 i18n CHANGELOGs + sync llm.txt mirrors
- document OMNIROUTE_PLUGINS_ALLOW_EXEC in .env.example + ENVIRONMENT.md (env-doc-sync gap)
muhamadgalihsaputra pushed a commit to niyatna/NiyatnaRoute that referenced this pull request Sep 27, 2026
…der-proxy-overlay-lookups

perf(proxy): parallelize provider proxy overlay lookups
muhamadgalihsaputra pushed a commit to niyatna/NiyatnaRoute that referenced this pull request Sep 27, 2026
…env-doc fixes

- bump package.json / open-sse / electron / openapi / llm.txt to 3.8.8
- restructure CHANGELOG: Unreleased -> [3.8.8], dedup broken Notion/MCP block (was 12x)
- add every PR since v3.8.7 that was missing: Quota Share Engine (diegosouzapw#2859/diegosouzapw#3022/diegosouzapw#3032),
  page redesigns (diegosouzapw#2827/diegosouzapw#2839/diegosouzapw#2847/diegosouzapw#2849/diegosouzapw#2869/diegosouzapw#2873), and fixes diegosouzapw#2960/diegosouzapw#2973/diegosouzapw#2984/
  diegosouzapw#3021/diegosouzapw#3029/diegosouzapw#3031/diegosouzapw#3035/diegosouzapw#3036/diegosouzapw#3037/diegosouzapw#3039/diegosouzapw#3043/diegosouzapw#3028; folded diegosouzapw#2978/diegosouzapw#2988/diegosouzapw#3041
- insert [3.8.8] section into all 41 i18n CHANGELOGs + sync llm.txt mirrors
- document OMNIROUTE_PLUGINS_ALLOW_EXEC in .env.example + ENVIRONMENT.md (env-doc-sync gap)
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.

2 participants