Skip to content

Overlay: Determine which versions of CodeQL are compatible with cached base DBs#3809

Open
henrymercer wants to merge 2 commits intomainfrom
henrymercer/determine-overlay-version
Open

Overlay: Determine which versions of CodeQL are compatible with cached base DBs#3809
henrymercer wants to merge 2 commits intomainfrom
henrymercer/determine-overlay-version

Conversation

@henrymercer
Copy link
Copy Markdown
Contributor

  • Refactor caching logic into overlay/caching.ts
  • Add an unused getCompatibleCodeQlVersionsForOverlayBaseDatabases(config, logger) function that looks up overlay base databases for the languages in config and returns a list of the CodeQL versions that were used to generate those overlay base databases. The intention is to use this in a future PR to determine what CodeQL version to set up. Returning a list rather than just the latest means we can filter the list down based on the enabled default version feature flags. This gives us the ability to skip a CodeQL version that we might initially roll out but then decide to rollback.

Risk assessment

For internal use only. Please select the risk level of this change:

  • Low risk: Changes are fully under feature flags, or have been fully tested and validated in pre-production environments and are highly observable, or are documentation or test only.

Which use cases does this change impact?

None yet.

How did/will you validate this change?

  • Unit tests - I am depending on unit test coverage (i.e. tests in .test.ts files).

If something goes wrong after this change is released, what are the mitigation and rollback strategies?

  • Rollback - Change can only be disabled by rolling back the release or releasing a new version with a fix.

How will you know if something goes wrong after this change is released?

  • Telemetry - I rely on existing telemetry or have made changes to the telemetry.
    • Alerts - New or existing monitors will trip if something goes wrong with this change.

Are there any special considerations for merging or releasing this change?

  • No special considerations - This change can be merged at any time.

Merge / deployment checklist

  • Confirm this change is backwards compatible with existing workflows.
  • Consider adding a changelog entry for this change.
  • Confirm the readme and docs have been updated if necessary.

@henrymercer henrymercer requested a review from a team as a code owner April 10, 2026 14:35
Copilot AI review requested due to automatic review settings April 10, 2026 14:35
@github-actions github-actions bot added the size/XXL May be extremely hard to review label Apr 10, 2026
Copy link
Copy Markdown
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

Refactors overlay base-database caching into a dedicated module and introduces a helper to discover which CodeQL CLI versions are represented in existing cached overlay base databases (to support future version-selection logic).

Changes:

  • Moved overlay base DB cache download/upload and cache-key generation logic into src/overlay/caching.ts and added src/overlay/caching.test.ts.
  • Extracted OverlayDatabaseMode into src/overlay/overlay-database-mode.ts and updated imports across the codebase.
  • Added getCompatibleCodeQlVersionsForOverlayBaseDatabases(config, logger) to list CodeQL versions inferred from matching cache entries.
Show a summary per file
File Description
src/testing-utils.ts Updates OverlayDatabaseMode import path after enum extraction.
src/status-report.ts Updates overlay cache stats type import to the new caching module.
src/overlay/overlay-database-mode.ts New enum module for overlay database mode.
src/overlay/index.ts Removes caching responsibilities; retains overlay file/OID helpers and version constants.
src/overlay/index.test.ts Removes overlay caching tests that were moved to the new caching test file.
src/overlay/caching.ts New home for overlay base DB cache logic + compatible-version discovery helper.
src/overlay/caching.test.ts Adds unit tests for cache key stability, cache restore behavior, and compatible-version discovery.
src/init-action.ts Switches overlay cache download imports to overlay/caching and enum to overlay-database-mode.
src/init-action-post-helper.ts Updates OverlayDatabaseMode import path.
src/init-action-post-helper.test.ts Updates OverlayDatabaseMode import path.
src/database-upload.ts Updates OverlayDatabaseMode import path.
src/config-utils.ts Updates OverlayDatabaseMode import path; keeps overlay min-version constants from overlay/index.
src/config-utils.test.ts Updates OverlayDatabaseMode import path.
src/codeql.ts Updates OverlayDatabaseMode import path.
src/analyze.ts Updates OverlayDatabaseMode import path.
src/analyze-action.ts Switches overlay cache upload import to overlay/caching.
lib/upload-sarif-action-post.js Generated build output update.
lib/upload-lib.js Generated build output update.
lib/start-proxy-action-post.js Generated build output update.
lib/resolve-environment-action.js Generated build output update.
lib/init-action.js Generated build output update.
lib/init-action-post.js Generated build output update.
lib/autobuild-action.js Generated build output update.
lib/analyze-action.js Generated build output update.
lib/analyze-action-post.js Generated build output update.

Copilot's findings

  • Files reviewed: 16/28 changed files
  • Comments generated: 1

import { getRef } from "./git-utils";
import { Logger } from "./logging";
import { OverlayBaseDatabaseDownloadStats } from "./overlay";
import { OverlayBaseDatabaseDownloadStats } from "./overlay/caching";
Copy link

Copilot AI Apr 10, 2026

Choose a reason for hiding this comment

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

OverlayBaseDatabaseDownloadStats is only used as a type in this file. Consider switching this to a type-only import to avoid pulling src/overlay/caching.ts (and its runtime deps like @actions/cache) into the status-report module at runtime.

Suggested change
import { OverlayBaseDatabaseDownloadStats } from "./overlay/caching";
import type { OverlayBaseDatabaseDownloadStats } from "./overlay/caching";

Copilot uses AI. Check for mistakes.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size/XXL May be extremely hard to review

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants