Skip to content

Conversation

@ginsbach
Copy link
Contributor

@ginsbach ginsbach commented Nov 12, 2025

This PR adds a second query server that is configured with

--no-evaluate-as-overlay --cache-at-frontier --warm-cache-only

and several commands:

  • CodeQL: Warm Overlay-Base Cache for Query,
  • CodeQL: Warm Overlay-Base Cache for Queries in Selected Files,
  • CodeQL: Warm Overlay-Base Cache for Query Suite.

These commands are based on

  • CodeQL: Run Query on Selected Database,
  • CodeQL: Run Queries in Selected Files,
  • CodeQL: Run Selected Query Suite,

but they run on the second query server and their results are not loaded into the "CodeQL Query Results" view.

One complication of this approach with two query servers is that only one of them can register the database at any given time. This is handled via withDatabaseInQsForWarmingOverlayBaseCache and seems to work well in practice. It does mean that running a query while a cache warming is ongoing will result in an error message. That seems better than silently running on the wrong kind of query server, though, which would be the effect on an alternative implementation with a single query server that gets killed and restarted.

@ginsbach ginsbach force-pushed the ginsbach/WarmDatabaseUnderlay branch 9 times, most recently from d83409d to 4d6c60c Compare November 17, 2025 14:51
@ginsbach ginsbach changed the title WIP: warm base database from VSCode add commands for warming the overlay-base cache Nov 17, 2025
@ginsbach ginsbach force-pushed the ginsbach/WarmDatabaseUnderlay branch 4 times, most recently from 9073228 to daad02a Compare November 18, 2025 10:56
@ginsbach ginsbach marked this pull request as ready for review November 18, 2025 11:24
@ginsbach ginsbach requested review from a team as code owners November 18, 2025 11:24
Copilot finished reviewing on behalf of ginsbach November 18, 2025 11:25
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull Request Overview

This PR adds functionality to warm the overlay-base cache by introducing a second query server configured with specific cache-warming flags. The implementation adds new commands for cache warming operations and manages database registration between the two query servers.

Key changes:

  • Adds a second query server instance dedicated to cache warming with flags --no-evaluate-as-overlay, --cache-at-frontier, and --warm-cache-only
  • Implements three new commands for warming overlay-base cache: for single queries, multiple queries, and query suites
  • Introduces database registration switching logic to ensure only one query server can register a database at a time

Reviewed Changes

Copilot reviewed 10 out of 10 changed files in this pull request and generated 2 comments.

Show a summary per file
File Description
local-databases.test.ts Adds test coverage for database registration switching between query servers
query-server-client.ts Adds cache warming configuration flags and descriptive logging for the warming query server
local-query-run.ts Conditionally skips showing results when warming cache
local-queries.ts Implements cache warming commands and routes them to the appropriate query server
ast-cfg-commands.ts Updates function call to include new warmOverlayBaseCache parameter
extension.ts Initializes the second query server and wires up restart logic
database-manager.ts Implements database registration switching between query servers
loggers.ts Adds dedicated logger for the cache warming query server
commands.ts Defines type signatures for new cache warming commands
package.json Registers new commands in VS Code command palette and context menus

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

@ginsbach ginsbach force-pushed the ginsbach/WarmDatabaseUnderlay branch from daad02a to f903a5d Compare November 18, 2025 11:35
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.

3 participants