Skip to content

docs: v0.7.0 release preparation — release notes, upgrade guide, QA hardening - #51

Merged
lukekim merged 3 commits into
trunkfrom
docs/v0.7.0-release-prep
Aug 1, 2026
Merged

docs: v0.7.0 release preparation — release notes, upgrade guide, QA hardening#51
lukekim merged 3 commits into
trunkfrom
docs/v0.7.0-release-prep

Conversation

@lukekim

@lukekim lukekim commented Jul 30, 2026

Copy link
Copy Markdown
Contributor

Summary

Release preparation for v0.7.0 (pom.xml and Version.java are already at 0.7.0 from #50).

Docs

QA performed

  • Live runtime: full suite run against a local spiced quickstart (taxi_trips, 2.96M rows accelerated) — 284/284 green, twice consecutively (rerun-safety verified), exercising Flight queries, parameterized queries, dataset refresh (trigger + verify shrink + restore), health/readiness/status, and reset/reconnect paths.
  • Mock-only: full suite + SpotBugs green (no runtime present).
  • Artifacts: spiceai-0.7.0.jar, -sources.jar, -javadoc.jar build cleanly (mvn package) — the publish pipeline's packaging step is validated.
  • Publish workflow preflight: pom.xml ↔ Version.java version consistency check passes (both 0.7.0).

Integration-test hardening (found during live QA)

  • testRefreshWithOptionsSpiceOSS was rerun-unsafe: its refresh_sql … LIMIT 10 persists in the accelerated table across runs and refreshes are asynchronous, so a second run against the same runtime failed its 20-row precondition. It now self-heals the precondition, polls for the async refresh instead of a fixed 10s sleep, and restores the dataset afterward.
  • Availability probes/skip-paths use one retry instead of zero — resilient live-QA gating, still fast when no runtime is present.

Release steps after this PR merges

  1. Publish the draft GitHub release v0.7.0 (already prepared; tag is created on publish, targeting trunk).
  2. Publishing triggers .github/workflows/publish.yaml: version check → build → live-runtime make test (needs SPICE_CLOUD_QUICKSTART_API_KEY) → make publish to Maven Central.
  3. Watch out for the known flaky "Install Spice CLI" step in that workflow (the installer intermittently resolves an empty release version) — re-run the job if it trips.

…ardening

- Release notes now cover the full v0.6.0..v0.7.0 delta: mTLS client
  certificates (#46) and health/readiness/status checks (#48) were never
  released and join the perf overhaul (#50); dependency table corrected
  against what v0.6.0 actually shipped (ADBC 0.22.0)
- New upgrade guide: docs/upgrade_guides/v0.6.0-to-v0.7.0.md (behavior
  changes, dependency-tree impacts, new capabilities)
- README installation snippets bumped to 0.7.0
- Integration-test hardening found during live-runtime QA:
  - testRefreshWithOptionsSpiceOSS was rerun-unsafe: its refresh_sql LIMIT
    persists in the accelerated table across runs and refreshes are async.
    Now self-heals the precondition, polls instead of fixed sleep, and
    restores the dataset afterward
  - availability probes use one retry instead of zero (resilient gating,
    still fast when no runtime is present)

QA: 284 tests green twice consecutively against a live spiced quickstart
(taxi_trips, 2.9M rows) plus mock-only runs; jar/sources/javadoc build clean.
Copilot AI review requested due to automatic review settings July 30, 2026 19:11

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Pull request overview

Prepares the Java SDK for the v0.7.0 release by updating documentation (release notes + upgrade guidance) and hardening integration tests based on live-QA findings so they’re more rerun-safe and resilient to transient runtime availability.

Changes:

  • Add v0.7.0 documentation: new upgrade guide and expanded release notes covering the full v0.6.0→v0.7.0 delta.
  • Update README install snippets to reference version 0.7.0.
  • Harden integration tests by adding a retry to availability probes and making the dataset refresh test poll for async refresh behavior.

Reviewed changes

Copilot reviewed 7 out of 7 changed files in this pull request and generated 3 comments.

Show a summary per file
File Description
src/test/java/ai/spice/TpchIntegrationTest.java Availability probe updated to use one retry.
src/test/java/ai/spice/ResetTest.java Availability probe updated to use one retry.
src/test/java/ai/spice/ParameterizedQueryTest.java Local OSS tests updated to use one retry.
src/test/java/ai/spice/FlightQueryTest.java One-retry availability detection; refresh test made rerun-safe via polling helpers.
README.md Installation snippets bumped to 0.7.0.
docs/upgrade_guides/v0.6.0-to-v0.7.0.md New upgrade guide documenting behavior/dependency changes and new features.
docs/release_notes/v0.7.0.md Expanded release notes with new feature highlights and corrected dependency table.

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

Comment thread src/test/java/ai/spice/FlightQueryTest.java Outdated
Comment thread src/test/java/ai/spice/FlightQueryTest.java Outdated
Comment thread src/test/java/ai/spice/TpchIntegrationTest.java
@lukekim lukekim self-assigned this Jul 30, 2026
@lukekim lukekim added this to the v0.7.0 milestone Jul 30, 2026
…curacy

- FlightQueryTest: all four tests now close SpiceClient (and FlightStream)
  via try-with-resources
- testRefreshWithOptionsSpiceOSS: shrink/verify runs in try/finally with a
  guaranteed restore that waits for the async refresh to land; restore
  failures are logged, never masking the primary test failure
- TpchIntegrationTest: probe comment updated to match withMaxRetries(1)

Validated against a live spiced quickstart: FlightQueryTest green twice
consecutively with the dataset restored to full row count after each run;
full suite 284/284 + SpotBugs clean.
Copilot AI review requested due to automatic review settings July 30, 2026 21:21

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Pull request overview

Copilot reviewed 7 out of 7 changed files in this pull request and generated no new comments.

Comments suppressed due to low confidence (2)

src/test/java/ai/spice/FlightQueryTest.java:137

  • This test also uses the default maxRetries. To keep the absent-runtime skip path fast under the new exponential backoff (while still allowing one transient retry), set withMaxRetries(1) on the client like the other OSS integration tests.
        try (SpiceClient spiceClient = SpiceClient.builder()
                .build()) {
            String sql = "SELECT tpep_pickup_datetime, total_amount, passenger_count from taxi_trips limit 20;";

src/test/java/ai/spice/FlightQueryTest.java:114

  • The refresh OSS integration tests build the client with the default retry count. With v0.7.0’s real backoff, the “no local runtime” skip path can now take ~seconds before the catch block skips. Use a single retry here (matching the other OSS availability probes) to keep the absent-runtime path fast while still being resilient to transient startup blips.

This issue also appears on line 135 of the same file.

        try (SpiceClient spiceClient = SpiceClient.builder()
                .build()) {

Copilot AI review requested due to automatic review settings August 1, 2026 03:54
@lukekim
lukekim enabled auto-merge (squash) August 1, 2026 03:54
@lukekim
lukekim merged commit a52c89a into trunk Aug 1, 2026
21 checks passed
@lukekim
lukekim deleted the docs/v0.7.0-release-prep branch August 1, 2026 03:56

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Pull request overview

Copilot reviewed 7 out of 7 changed files in this pull request and generated no new comments.

Suppressed comments (2)

src/test/java/ai/spice/FlightQueryTest.java:136

  • testRefreshWithOptionsSpiceOSS also uses the builder default maxRetries (3). When the local runtime/dataset is missing, this test’s skip-path will pay the full exponential backoff, which can slow CI/local runs significantly. Setting maxRetries to 1 keeps the gating resilient but avoids the full backoff cost.
        try (SpiceClient spiceClient = SpiceClient.builder()
                .build()) {

src/test/java/ai/spice/FlightQueryTest.java:113

  • testRefreshSpiceOSS builds a SpiceClient with the default maxRetries (3). Since retries now use real backoff, the skip-path when no local runtime is present can take ~seconds, which undermines the goal of keeping integration tests fast when the runtime is absent. Consider matching testQuerySpiceOSS above and using a single retry here as well.

This issue also appears on line 135 of the same file.

        try (SpiceClient spiceClient = SpiceClient.builder()
                .build()) {

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