| date | 2026-04-21 | ||||||||
|---|---|---|---|---|---|---|---|---|---|
| title | Spice v2.0-rc.3 (Apr 21, 2026) | ||||||||
| type | blog | ||||||||
| authors |
|
||||||||
| tags |
|
Announcing the release of Spice v2.0-rc.3! ⚡
v2.0.0-rc.3 is the third release candidate for advanced testing of v2.0, building on v2.0.0-rc.2.
Highlights in this release candidate include:
- HTTP Connector Enhancements with OAuth2 refresh-token authentication, query-parameter pagination, and map-to-array conversion for broader API compatibility
- Databricks and Unity Catalog Reliability Improvements with resilience controls, improved UC-awareness, permission checks, and structured error reporting
- Snowflake and ADBC Registration Performance Improvements with better observability during dataset registration
- OpenTelemetry Exporter Improvements with exporter fixes and support for authenticated metrics export
- Kafka, GitHub, and HTTP Connector Fixes including Kafka reliability improvements, GitHub GraphQL resilience updates, and HTTP JSON union/reload fixes
The HTTP connector now supports more authentication and API response patterns, making it easier to integrate with modern REST APIs.
Key improvements:
- OAuth2 Refresh-Token Authentication: Added support for OAuth2 refresh-token flows for APIs that issue short-lived access tokens.
- Query-Parameter Pagination: Added pagination support using query parameters for APIs that expose page or cursor controls in the URL.
- Map-to-Array Conversion: Added response transformation support for APIs that return map-shaped payloads that need to be normalized into arrays.
- Improved JSON Union Handling: Better handling for heterogeneous JSON payloads during ingestion.
- More Reliable Reloads: Fixed runtime behavior for HTTP-backed datasets during spicepod reloads.
Example configuration of an HTTP connector using the OAuth2 refresh token flow:
datasets:
- from: https://api.example.com
name: secure_data
params:
file_format: json
allowed_request_paths: '/v1/**'
auth_token_url: https://auth.example.com/oauth/token
http_auth_refresh_token: ${secrets:my_refresh_token}
http_auth_client_id: ${secrets:my_client_id}
http_auth_client_secret: ${secrets:my_client_secret}
auth_scopes: 'read:data offline_access'Databricks and Unity Catalog integrations are now more resilient and provide clearer behavior in permission-constrained environments.
Key improvements:
- Resilience Controls: Added controls to improve reliability when interacting with Databricks services.
- Unity Catalog Awareness: Improved handling for Unity Catalog-specific behaviors and mixed deployment configurations.
- Permission Prechecks: Databricks UC permission checks now distinguish explicit denials from ambiguous cases.
- Structured Error Reporting: Advisory permission failures now surface with more actionable structured errors.
- Classic SQL Warehouse Compatibility: Improved handling for foreign table scenarios with Classic SQL Warehouse combinations.
- Task History Instrumentation: Added instrumentation to improve observability for Databricks-related operations.
Snowflake and ADBC-backed dataset registration is now faster and easier to observe.
Key improvements:
- Faster Dataset Registration: Improved registration performance for Snowflake and ADBC datasets.
- Better Observability: Added better instrumentation and visibility into registration workflows.
- ADBC Alignment: Updated ADBC dependencies and integration points for improved compatibility.
- Search Schema Fix: Fixed a full-text search schema mismatch issue with the ADBC connector.
Spice improves telemetry export reliability and authenticated metrics delivery for the OpenTelemetry integration.
Key improvements:
- OTEL Exporter Fixes: Fixed issues in the OpenTelemetry exporter.
- Authenticated Metrics Export: Added support for authorization headers in the OTEL metrics exporter.
- Reduced Startup Noise: Suppressed unnecessary AWS SDK noise and improved OTEL-related initialization behavior.
- Connector Initialization Reliability: Fixed issues that could block connector initialization in telemetry-related code paths.
| Dependency / Component | Version / Update |
|---|---|
| Rust toolchain | v1.94.1 (from v1.93.1) |
| DataFusion | v52.5.0-rc1 |
| mistral.rs / candle | mistral.rs v0.8.x, candle v0.10.1 |
| ADBC Core | v0.23 |
- Improved Query Pushdown: Expanded sort and limit pushdown, including improved pushdown behavior for Oracle and MSSQL connectors.
- Partitioned Query Planning Improvements: Improved
PartitionedTableScanRewritehandling forORDER BY, partition expressions, and fully qualified table references, while preventing incorrect bucketing partition pushdown to executors. - MongoDB SRV Support: Upgraded
datafusion-table-providerswith MongoDB SRV support. - Tantivy Logging: Search logging now defaults to
warnunless very verbose logging is enabled. - Kafka Connector Fixes: Improved reliability for the Kafka connector behavior.
- GitHub Connector Resilience: Improved commit fetching for dynamic and slash refs, and reduced GraphQL page sizes on gateway errors for the GitHub connector.
- GitHub API Efficiency: Lowered default comment fetch sizes to reduce pressure on GitHub GraphQL APIs.
- Embedding Validation: Added validation for embedding
row_idcolumns during dataset initialization. - View Cache Invalidation: Cached plans are now cleared when views are updated.
- Refresh SQL Dedup Fix: Fixed append refresh deduplication when
refresh_sqlselects a subset of columns.
No breaking changes.
No new cookbook recipes.
The Spice Cookbook includes 86 recipes to help you get started with Spice quickly and easily.
To upgrade to v2.0.0-rc.3, use one of the following methods:
CLI:
spice upgrade v2.0.0-rc.3Homebrew:
brew upgrade spiceai/spiceai/spiceDocker:
Pull the spiceai/spiceai:2.0.0-rc.3 image:
docker pull spiceai/spiceai:2.0.0-rc.3For available tags, see DockerHub.
Helm:
helm repo update
helm upgrade spiceai spiceai/spiceai --version 2.0.0-rc.3AWS Marketplace:
Spice is available in the AWS Marketplace.
- fix: Full Text Search schema mismatch with ADBC connector by @lukekim in #10235
- docs: Update v2.0.0-rc.2 release notes with latest changes by @lukekim in #10238
- Fix append refresh dedup failure when refresh_sql selects column subset by @sgrebnov in #10225
- Revert "Properly mark dataset as Ready on Scheduler (#10215)" by @sgrebnov in #10242
- Fix failing merge conflicts for benchmarks by @krinart in #10247
- fix(github): fetch commits for dynamic and slash refs by @lukekim in #10233
- Upgrade DataFusion to v52.5.0-rc1 by @lukekim in #10249
- Merge develop to trunk (2026-04-09) by @claudespice in #10248
- fix: Validate embedding row_id columns during dataset init (fixes #8226) by @claudespice in #10208
- fix: Update tpch benchmark snapshots for federated/glue[csv].yaml by @app/github-actions in #10244
- feat(databricks): add resilience controls, UC awareness, and task history instrumentation by @lukekim in #10246
- fix: Make PartitionManager resilient to bare vs fully qualified table references by @sgrebnov in #10257
- fix: Update tpch benchmark snapshots for accelerated/s3[parquet]-cayenne[file].yaml by @app/github-actions in #10256
- Merge develop to trunk (2026-04-10) by @claudespice in #10251
- Improve Snowflake/ADBC dataset registration performance and observability by @lukekim in #10266
- Fixes for kafka connector by @krinart in #10263
- fix(runtime): gate otel code tags, suppress aws sdk noise, and unblock connector init by @lukekim in #10260
- fix(runtime): avoid regionless AWS SDK loads by @lukekim in #10271
- Add versioned release install workflow coverage by @lukekim in #10276
- fix(runtime): handle HTTP JSON unions and spicepod reloads by @lukekim in #10277
- Databricks UC permission prechecks: explicit denial as permanent error, ambiguous cases advisory by @lukekim in #10274
- Revert component status changes re-introduced by develop merge (#10248) by @sgrebnov in #10293
- Fix broken CI workflows by @ewgenius in #10294
- Group dependabot updates by ecosystem by @lukekim in #10296
- fix(tests): Replace flaky S3 Vectors snapshot tests with structural validation by @lukekim in #10301
- Update test_github_workflows snapshot by @lukekim in #10304
- fix(ci): fix Bedrock runner mismatch and snapshot auto-merge failure by @ewgenius in #10306
- feat(http): Add map-to-array conversion and query-parameter pagination by @lukekim in #10295
- New crate:
datafusion-ddlby @Jeadie in #10205 - Make Databricks UC permission checks advisory with structured error reporting by @lukekim in #10283
- build(deps): bump the github-actions-dependencies group with 4 updates by @app/dependabot in #10298
- fix: Clear cached plans on view updates by @peasee in #10312
- build(deps): bump the aws-sdk group with 7 updates by @app/dependabot in #10299
- Code out of runtime. by @Jeadie in #10178
- fix: Respect function registry denies for accelerated table filter pushdown by @peasee in #10311
- fix: Don't block heartbeat when all slots acquired by @peasee in #10322
- fix: strip only outer parens in
get_table_partition_expr_from_ctxby @Jeadie in #10323 - Upgrade datafusion-table-providers with MongoDB SRV support by @lukekim in #10317
- fix: Avoid pushing down bucketing partition expressions into executors by @peasee in #10324
- Upgrade datafusion-table-providers to d1b911a5 and bump adbc to 0.23 by @lukekim in #10329
- fix: Update Search integration test snapshots by @app/github-actions in #10308
- Handle foreign table + Classic sql warehouse combination gracefully by @krinart in #10318
- New crate
datafusion-flightsqlby @Jeadie in #10201 - Set
tantivy=warnunless very verbose logging by @Jeadie in #10338 - Remove image registry and image name options from spidapter by @ewgenius in #10241
- build(deps): bump sysinfo from 0.37.2 to 0.38.4 by @app/dependabot in #10291
- build(deps): bump futures from 0.3.31 to 0.3.32 by @app/dependabot in #10289
- New crate 'datafusion-dml' by @Jeadie in #10334
- Jeadie/26 04 16/spice sql by @Jeadie in #10343
- Add Teraswitch/Pittsburgh apt mirrors + retry config for CI runners by @lukekim in #10349
- Implement sort pushdown and fix pushdown gaps across providers by @lukekim in #10337
- Merge develop to trunk (2026-04-16) by @claudespice in #10345
- Update candle and mistral.rs lock-step pins by @lukekim in #10278
- docs: fix status badges in README by @lukekim in #10350
- Migrate secrets to vars by @krinart in #10354
- Add limit pushdown and improve sort pushdown for Oracle and MSSQL by @sgrebnov in #10351
- Fix ubuntu mirror configuration by @ewgenius in #10359
- fix: Increase throughput test default ready_wait from 30s to 300s (fixes #8207) by @claudespice in #10344
- Add auth headers support to OTEL metrics exporter by @lukekim in #10347
- fix(github): shrink GraphQL page size on gateway errors; lower comment defaults by @lukekim in #10355
- Relax apt mirror substitution failure to warning in CI action by @ewgenius in #10361
- feat(http): Add OAuth2 refresh-token auth to HTTP connector by @lukekim in #10348
- Upgrade Rust toolchain to 1.94.1 by @lukekim in #10353
- Handle order by and sort in PartitionedTableScanRewrite by @Jeadie in #9656
- Fix OTEL Exporter by @krinart in #10363
- Pin spiceai candle / TEI forks to merged revs; drop local [patch] overrides by @lukekim in #10362
Full Changelog: https://github.com/spiceai/spiceai/compare/v2.0.0-rc.2...v2.0.0-rc.3