|
| 1 | +--- |
| 2 | +date: 2026-04-21 |
| 3 | +title: 'Spice v2.0-rc.3 (Apr 21, 2026)' |
| 4 | +type: blog |
| 5 | +authors: [ewgenius] |
| 6 | +tags: [release, data-connector, databricks, snowflake, adbc, kafka, opentelemetry, observability] |
| 7 | + |
| 8 | +--- |
| 9 | +Announcing the release of Spice v2.0-rc.3! ⚡ |
| 10 | + |
| 11 | +v2.0.0-rc.3 is the third release candidate for advanced testing of v2.0, building on [v2.0.0-rc.2](https://github.com/spiceai/spiceai/releases/tag/v2.0.0-rc.2). |
| 12 | + |
| 13 | +Highlights in this release candidate include: |
| 14 | + |
| 15 | +- **HTTP Connector Enhancements** with OAuth2 refresh-token authentication, query-parameter pagination, and map-to-array conversion for broader API compatibility |
| 16 | +- **Databricks and Unity Catalog Reliability Improvements** with resilience controls, improved UC-awareness, permission checks, and structured error reporting |
| 17 | +- **Snowflake and ADBC Registration Performance Improvements** with better observability during dataset registration |
| 18 | +- **OpenTelemetry Exporter Improvements** with exporter fixes and support for authenticated metrics export |
| 19 | +- **Kafka, GitHub, and HTTP Connector Fixes** including Kafka reliability improvements, GitHub GraphQL resilience updates, and HTTP JSON union/reload fixes |
| 20 | + |
| 21 | +## What's New in v2.0.0-rc.3 |
| 22 | + |
| 23 | +### HTTP Connector Enhancements |
| 24 | + |
| 25 | +The [HTTP connector](https://spiceai.org/docs/components/data-connectors/https) now supports more authentication and API response patterns, making it easier to integrate with modern REST APIs. |
| 26 | + |
| 27 | +**Key improvements**: |
| 28 | + |
| 29 | +- **OAuth2 Refresh-Token Authentication**: Added support for [OAuth2 refresh-token flows](https://spiceai.org/docs/next/components/data-connectors/https#using-oauth2-refresh-token-authentication) for APIs that issue short-lived access tokens. |
| 30 | +- **Query-Parameter Pagination**: Added pagination support using query parameters for APIs that expose page or cursor controls in the URL. |
| 31 | +- **Map-to-Array Conversion**: Added response transformation support for APIs that return map-shaped payloads that need to be normalized into arrays. |
| 32 | +- **Improved JSON Union Handling**: Better handling for heterogeneous JSON payloads during ingestion. |
| 33 | +- **More Reliable Reloads**: Fixed runtime behavior for HTTP-backed datasets during spicepod reloads. |
| 34 | + |
| 35 | +Example configuration of an HTTP connector using the [OAuth2 refresh token flow](https://spiceai.org/docs/next/components/data-connectors/https#using-oauth2-refresh-token-authentication): |
| 36 | + |
| 37 | +```yaml |
| 38 | +datasets: |
| 39 | + - from: https://api.example.com |
| 40 | + name: secure_data |
| 41 | + params: |
| 42 | + file_format: json |
| 43 | + allowed_request_paths: '/v1/**' |
| 44 | + auth_token_url: https://auth.example.com/oauth/token |
| 45 | + http_auth_refresh_token: ${secrets:my_refresh_token} |
| 46 | + http_auth_client_id: ${secrets:my_client_id} |
| 47 | + http_auth_client_secret: ${secrets:my_client_secret} |
| 48 | + auth_scopes: 'read:data offline_access' |
| 49 | +``` |
| 50 | +
|
| 51 | +### Databricks and Unity Catalog Reliability Improvements |
| 52 | +
|
| 53 | +[Databricks](https://spiceai.org/docs/components/data-connectors/databricks) and [Unity Catalog](https://spiceai.org/docs/components/catalogs/unity-catalog) integrations are now more resilient and provide clearer behavior in permission-constrained environments. |
| 54 | +
|
| 55 | +**Key improvements**: |
| 56 | +
|
| 57 | +- **Resilience Controls**: Added controls to improve reliability when interacting with Databricks services. |
| 58 | +- **Unity Catalog Awareness**: Improved handling for Unity Catalog-specific behaviors and mixed deployment configurations. |
| 59 | +- **Permission Prechecks**: Databricks UC permission checks now distinguish explicit denials from ambiguous cases. |
| 60 | +- **Structured Error Reporting**: Advisory permission failures now surface with more actionable structured errors. |
| 61 | +- **Classic SQL Warehouse Compatibility**: Improved handling for foreign table scenarios with Classic SQL Warehouse combinations. |
| 62 | +- **Task History Instrumentation**: Added instrumentation to improve observability for Databricks-related operations. |
| 63 | +
|
| 64 | +### Snowflake and ADBC Improvements |
| 65 | +
|
| 66 | +[Snowflake](https://spiceai.org/docs/components/data-connectors/snowflake) and [ADBC](https://spiceai.org/docs/components/data-connectors/flightsql)-backed dataset registration is now faster and easier to observe. |
| 67 | +
|
| 68 | +**Key improvements**: |
| 69 | +
|
| 70 | +- **Faster Dataset Registration**: Improved registration performance for Snowflake and ADBC datasets. |
| 71 | +- **Better Observability**: Added better instrumentation and visibility into registration workflows. |
| 72 | +- **ADBC Alignment**: Updated ADBC dependencies and integration points for improved compatibility. |
| 73 | +- **Search Schema Fix**: Fixed a full-text search schema mismatch issue with the ADBC connector. |
| 74 | +
|
| 75 | +### OpenTelemetry and Observability Improvements |
| 76 | +
|
| 77 | +Spice improves telemetry export reliability and authenticated metrics delivery for the [OpenTelemetry](https://spiceai.org/docs/features/observability) integration. |
| 78 | +
|
| 79 | +**Key improvements**: |
| 80 | +
|
| 81 | +- **OTEL Exporter Fixes**: Fixed issues in the OpenTelemetry exporter. |
| 82 | +- **Authenticated Metrics Export**: Added support for authorization headers in the OTEL metrics exporter. |
| 83 | +- **Reduced Startup Noise**: Suppressed unnecessary AWS SDK noise and improved OTEL-related initialization behavior. |
| 84 | +- **Connector Initialization Reliability**: Fixed issues that could block connector initialization in telemetry-related code paths. |
| 85 | +
|
| 86 | +### Dependency and Toolchain Updates |
| 87 | +
|
| 88 | +| Dependency / Component | Version / Update | |
| 89 | +| ----------------------- | ------------------------------------- | |
| 90 | +| **Rust toolchain** | v1.94.1 (from v1.93.1) | |
| 91 | +| **DataFusion** | v52.5.0-rc1 | |
| 92 | +| **mistral.rs / candle** | `mistral.rs` v0.8.x, `candle` v0.10.1 | |
| 93 | +| **ADBC Core** | v0.23 | |
| 94 | + |
| 95 | +### Other Improvements |
| 96 | + |
| 97 | +- **Improved Query Pushdown**: Expanded sort and limit pushdown, including improved pushdown behavior for [Oracle](https://spiceai.org/docs/components/data-connectors/oracle) and [MSSQL](https://spiceai.org/docs/components/data-connectors/mssql) connectors. |
| 98 | +- **Partitioned Query Planning Improvements**: Improved `PartitionedTableScanRewrite` handling for `ORDER BY`, partition expressions, and fully qualified table references, while preventing incorrect bucketing partition pushdown to executors. |
| 99 | +- **MongoDB SRV Support**: Upgraded `datafusion-table-providers` with [MongoDB](https://spiceai.org/docs/components/data-connectors/mongodb) SRV support. |
| 100 | +- **Tantivy Logging**: [Search](https://spiceai.org/docs/features/search) logging now defaults to `warn` unless very verbose logging is enabled. |
| 101 | +- **Kafka Connector Fixes**: Improved reliability for the [Kafka](https://spiceai.org/docs/components/data-connectors/kafka) connector behavior. |
| 102 | +- **GitHub Connector Resilience**: Improved commit fetching for dynamic and slash refs, and reduced GraphQL page sizes on gateway errors for the [GitHub](https://spiceai.org/docs/components/data-connectors/github) connector. |
| 103 | +- **GitHub API Efficiency**: Lowered default comment fetch sizes to reduce pressure on [GitHub](https://spiceai.org/docs/components/data-connectors/github) GraphQL APIs. |
| 104 | +- **Embedding Validation**: Added validation for [embedding](https://spiceai.org/docs/components/embeddings) `row_id` columns during dataset initialization. |
| 105 | +- **View Cache Invalidation**: Cached plans are now cleared when [views](https://spiceai.org/docs/reference/spicepod/views) are updated. |
| 106 | +- **Refresh SQL Dedup Fix**: Fixed append [refresh](https://spiceai.org/docs/features/data-acceleration/data-refresh) deduplication when `refresh_sql` selects a subset of columns. |
| 107 | + |
| 108 | +## Contributors |
| 109 | + |
| 110 | +- [@ewgenius](https://github.com/ewgenius) |
| 111 | +- [@Jeadie](https://github.com/Jeadie) |
| 112 | +- [@krinart](https://github.com/krinart) |
| 113 | +- [@lukekim](https://github.com/lukekim) |
| 114 | +- [@peasee](https://github.com/peasee) |
| 115 | +- [@sgrebnov](https://github.com/sgrebnov) |
| 116 | + |
| 117 | +## Breaking Changes |
| 118 | + |
| 119 | +No breaking changes. |
| 120 | + |
| 121 | +## Cookbook Updates |
| 122 | + |
| 123 | +No new cookbook recipes. |
| 124 | + |
| 125 | +The [Spice Cookbook](https://spiceai.org/cookbook) includes 86 recipes to help you get started with Spice quickly and easily. |
| 126 | + |
| 127 | +## Upgrading |
| 128 | + |
| 129 | +To upgrade to v2.0.0-rc.3, use one of the following methods: |
| 130 | + |
| 131 | +**CLI**: |
| 132 | + |
| 133 | +```console |
| 134 | +spice upgrade v2.0.0-rc.3 |
| 135 | +``` |
| 136 | + |
| 137 | +**Homebrew**: |
| 138 | + |
| 139 | +```console |
| 140 | +brew upgrade spiceai/spiceai/spice |
| 141 | +``` |
| 142 | + |
| 143 | +**Docker**: |
| 144 | + |
| 145 | +Pull the `spiceai/spiceai:2.0.0-rc.3` image: |
| 146 | + |
| 147 | +```console |
| 148 | +docker pull spiceai/spiceai:2.0.0-rc.3 |
| 149 | +``` |
| 150 | + |
| 151 | +For available tags, see [DockerHub](https://hub.docker.com/r/spiceai/spiceai/tags). |
| 152 | + |
| 153 | +**Helm**: |
| 154 | + |
| 155 | +```console |
| 156 | +helm repo update |
| 157 | +helm upgrade spiceai spiceai/spiceai --version 2.0.0-rc.3 |
| 158 | +``` |
| 159 | + |
| 160 | +**AWS Marketplace**: |
| 161 | + |
| 162 | +Spice is available in the [AWS Marketplace](https://aws.amazon.com/marketplace/pp/prodview-jmf6jskjvnq7i). |
| 163 | + |
| 164 | +## What's Changed |
| 165 | + |
| 166 | +### Changelog |
| 167 | + |
| 168 | +- fix: Full Text Search schema mismatch with ADBC connector by [@lukekim](https://github.com/lukekim) in [#10235](https://github.com/spiceai/spiceai/pull/10235) |
| 169 | +- docs: Update v2.0.0-rc.2 release notes with latest changes by [@lukekim](https://github.com/lukekim) in [#10238](https://github.com/spiceai/spiceai/pull/10238) |
| 170 | +- Fix append refresh dedup failure when refresh_sql selects column subset by [@sgrebnov](https://github.com/sgrebnov) in [#10225](https://github.com/spiceai/spiceai/pull/10225) |
| 171 | +- Revert "Properly mark dataset as Ready on Scheduler (#10215)" by [@sgrebnov](https://github.com/sgrebnov) in [#10242](https://github.com/spiceai/spiceai/pull/10242) |
| 172 | +- Fix failing merge conflicts for benchmarks by [@krinart](https://github.com/krinart) in [#10247](https://github.com/spiceai/spiceai/pull/10247) |
| 173 | +- fix(github): fetch commits for dynamic and slash refs by [@lukekim](https://github.com/lukekim) in [#10233](https://github.com/spiceai/spiceai/pull/10233) |
| 174 | +- Upgrade DataFusion to v52.5.0-rc1 by [@lukekim](https://github.com/lukekim) in [#10249](https://github.com/spiceai/spiceai/pull/10249) |
| 175 | +- Merge develop to trunk (2026-04-09) by [@claudespice](https://github.com/claudespice) in [#10248](https://github.com/spiceai/spiceai/pull/10248) |
| 176 | +- fix: Validate embedding row_id columns during dataset init (fixes #8226) by [@claudespice](https://github.com/claudespice) in [#10208](https://github.com/spiceai/spiceai/pull/10208) |
| 177 | +- fix: Update tpch benchmark snapshots for federated/glue[csv].yaml by [@app/github-actions](https://github.com/app/github-actions) in [#10244](https://github.com/spiceai/spiceai/pull/10244) |
| 178 | +- feat(databricks): add resilience controls, UC awareness, and task history instrumentation by [@lukekim](https://github.com/lukekim) in [#10246](https://github.com/spiceai/spiceai/pull/10246) |
| 179 | +- fix: Make PartitionManager resilient to bare vs fully qualified table references by [@sgrebnov](https://github.com/sgrebnov) in [#10257](https://github.com/spiceai/spiceai/pull/10257) |
| 180 | +- fix: Update tpch benchmark snapshots for accelerated/s3[parquet]-cayenne[file].yaml by [@app/github-actions](https://github.com/app/github-actions) in [#10256](https://github.com/spiceai/spiceai/pull/10256) |
| 181 | +- Merge develop to trunk (2026-04-10) by [@claudespice](https://github.com/claudespice) in [#10251](https://github.com/spiceai/spiceai/pull/10251) |
| 182 | +- Improve Snowflake/ADBC dataset registration performance and observability by [@lukekim](https://github.com/lukekim) in [#10266](https://github.com/spiceai/spiceai/pull/10266) |
| 183 | +- Fixes for kafka connector by [@krinart](https://github.com/krinart) in [#10263](https://github.com/spiceai/spiceai/pull/10263) |
| 184 | +- fix(runtime): gate otel code tags, suppress aws sdk noise, and unblock connector init by [@lukekim](https://github.com/lukekim) in [#10260](https://github.com/spiceai/spiceai/pull/10260) |
| 185 | +- fix(runtime): avoid regionless AWS SDK loads by [@lukekim](https://github.com/lukekim) in [#10271](https://github.com/spiceai/spiceai/pull/10271) |
| 186 | +- Add versioned release install workflow coverage by [@lukekim](https://github.com/lukekim) in [#10276](https://github.com/spiceai/spiceai/pull/10276) |
| 187 | +- fix(runtime): handle HTTP JSON unions and spicepod reloads by [@lukekim](https://github.com/lukekim) in [#10277](https://github.com/spiceai/spiceai/pull/10277) |
| 188 | +- Databricks UC permission prechecks: explicit denial as permanent error, ambiguous cases advisory by [@lukekim](https://github.com/lukekim) in [#10274](https://github.com/spiceai/spiceai/pull/10274) |
| 189 | +- Revert component status changes re-introduced by develop merge (#10248) by [@sgrebnov](https://github.com/sgrebnov) in [#10293](https://github.com/spiceai/spiceai/pull/10293) |
| 190 | +- Fix broken CI workflows by [@ewgenius](https://github.com/ewgenius) in [#10294](https://github.com/spiceai/spiceai/pull/10294) |
| 191 | +- Group dependabot updates by ecosystem by [@lukekim](https://github.com/lukekim) in [#10296](https://github.com/spiceai/spiceai/pull/10296) |
| 192 | +- fix(tests): Replace flaky S3 Vectors snapshot tests with structural validation by [@lukekim](https://github.com/lukekim) in [#10301](https://github.com/spiceai/spiceai/pull/10301) |
| 193 | +- Update test_github_workflows snapshot by [@lukekim](https://github.com/lukekim) in [#10304](https://github.com/spiceai/spiceai/pull/10304) |
| 194 | +- fix(ci): fix Bedrock runner mismatch and snapshot auto-merge failure by [@ewgenius](https://github.com/ewgenius) in [#10306](https://github.com/spiceai/spiceai/pull/10306) |
| 195 | +- feat(http): Add map-to-array conversion and query-parameter pagination by [@lukekim](https://github.com/lukekim) in [#10295](https://github.com/spiceai/spiceai/pull/10295) |
| 196 | +- New crate: `datafusion-ddl` by [@Jeadie](https://github.com/Jeadie) in [#10205](https://github.com/spiceai/spiceai/pull/10205) |
| 197 | +- Make Databricks UC permission checks advisory with structured error reporting by [@lukekim](https://github.com/lukekim) in [#10283](https://github.com/spiceai/spiceai/pull/10283) |
| 198 | +- build(deps): bump the github-actions-dependencies group with 4 updates by [@app/dependabot](https://github.com/app/dependabot) in [#10298](https://github.com/spiceai/spiceai/pull/10298) |
| 199 | +- fix: Clear cached plans on view updates by [@peasee](https://github.com/peasee) in [#10312](https://github.com/spiceai/spiceai/pull/10312) |
| 200 | +- build(deps): bump the aws-sdk group with 7 updates by [@app/dependabot](https://github.com/app/dependabot) in [#10299](https://github.com/spiceai/spiceai/pull/10299) |
| 201 | +- Code out of runtime. by [@Jeadie](https://github.com/Jeadie) in [#10178](https://github.com/spiceai/spiceai/pull/10178) |
| 202 | +- fix: Respect function registry denies for accelerated table filter pushdown by [@peasee](https://github.com/peasee) in [#10311](https://github.com/spiceai/spiceai/pull/10311) |
| 203 | +- fix: Don't block heartbeat when all slots acquired by [@peasee](https://github.com/peasee) in [#10322](https://github.com/spiceai/spiceai/pull/10322) |
| 204 | +- fix: strip only outer parens in `get_table_partition_expr_from_ctx` by [@Jeadie](https://github.com/Jeadie) in [#10323](https://github.com/spiceai/spiceai/pull/10323) |
| 205 | +- Upgrade datafusion-table-providers with MongoDB SRV support by [@lukekim](https://github.com/lukekim) in [#10317](https://github.com/spiceai/spiceai/pull/10317) |
| 206 | +- fix: Avoid pushing down bucketing partition expressions into executors by [@peasee](https://github.com/peasee) in [#10324](https://github.com/spiceai/spiceai/pull/10324) |
| 207 | +- Upgrade datafusion-table-providers to d1b911a5 and bump adbc to 0.23 by [@lukekim](https://github.com/lukekim) in [#10329](https://github.com/spiceai/spiceai/pull/10329) |
| 208 | +- fix: Update Search integration test snapshots by [@app/github-actions](https://github.com/app/github-actions) in [#10308](https://github.com/spiceai/spiceai/pull/10308) |
| 209 | +- Handle foreign table + Classic sql warehouse combination gracefully by [@krinart](https://github.com/krinart) in [#10318](https://github.com/spiceai/spiceai/pull/10318) |
| 210 | +- New crate `datafusion-flightsql` by [@Jeadie](https://github.com/Jeadie) in [#10201](https://github.com/spiceai/spiceai/pull/10201) |
| 211 | +- Set `tantivy=warn` unless very verbose logging by [@Jeadie](https://github.com/Jeadie) in [#10338](https://github.com/spiceai/spiceai/pull/10338) |
| 212 | +- Remove image registry and image name options from spidapter by [@ewgenius](https://github.com/ewgenius) in [#10241](https://github.com/spiceai/spiceai/pull/10241) |
| 213 | +- build(deps): bump sysinfo from 0.37.2 to 0.38.4 by [@app/dependabot](https://github.com/app/dependabot) in [#10291](https://github.com/spiceai/spiceai/pull/10291) |
| 214 | +- build(deps): bump futures from 0.3.31 to 0.3.32 by [@app/dependabot](https://github.com/app/dependabot) in [#10289](https://github.com/spiceai/spiceai/pull/10289) |
| 215 | +- New crate 'datafusion-dml' by [@Jeadie](https://github.com/Jeadie) in [#10334](https://github.com/spiceai/spiceai/pull/10334) |
| 216 | +- Jeadie/26 04 16/spice sql by [@Jeadie](https://github.com/Jeadie) in [#10343](https://github.com/spiceai/spiceai/pull/10343) |
| 217 | +- Add Teraswitch/Pittsburgh apt mirrors + retry config for CI runners by [@lukekim](https://github.com/lukekim) in [#10349](https://github.com/spiceai/spiceai/pull/10349) |
| 218 | +- Implement sort pushdown and fix pushdown gaps across providers by [@lukekim](https://github.com/lukekim) in [#10337](https://github.com/spiceai/spiceai/pull/10337) |
| 219 | +- Merge develop to trunk (2026-04-16) by [@claudespice](https://github.com/claudespice) in [#10345](https://github.com/spiceai/spiceai/pull/10345) |
| 220 | +- Update candle and mistral.rs lock-step pins by [@lukekim](https://github.com/lukekim) in [#10278](https://github.com/spiceai/spiceai/pull/10278) |
| 221 | +- docs: fix status badges in README by [@lukekim](https://github.com/lukekim) in [#10350](https://github.com/spiceai/spiceai/pull/10350) |
| 222 | +- Migrate secrets to vars by [@krinart](https://github.com/krinart) in [#10354](https://github.com/spiceai/spiceai/pull/10354) |
| 223 | +- Add limit pushdown and improve sort pushdown for Oracle and MSSQL by [@sgrebnov](https://github.com/sgrebnov) in [#10351](https://github.com/spiceai/spiceai/pull/10351) |
| 224 | +- Fix ubuntu mirror configuration by [@ewgenius](https://github.com/ewgenius) in [#10359](https://github.com/spiceai/spiceai/pull/10359) |
| 225 | +- fix: Increase throughput test default ready_wait from 30s to 300s (fixes #8207) by [@claudespice](https://github.com/claudespice) in [#10344](https://github.com/spiceai/spiceai/pull/10344) |
| 226 | +- Add auth headers support to OTEL metrics exporter by [@lukekim](https://github.com/lukekim) in [#10347](https://github.com/spiceai/spiceai/pull/10347) |
| 227 | +- fix(github): shrink GraphQL page size on gateway errors; lower comment defaults by [@lukekim](https://github.com/lukekim) in [#10355](https://github.com/spiceai/spiceai/pull/10355) |
| 228 | +- Relax apt mirror substitution failure to warning in CI action by [@ewgenius](https://github.com/ewgenius) in [#10361](https://github.com/spiceai/spiceai/pull/10361) |
| 229 | +- feat(http): Add OAuth2 refresh-token auth to HTTP connector by [@lukekim](https://github.com/lukekim) in [#10348](https://github.com/spiceai/spiceai/pull/10348) |
| 230 | +- Upgrade Rust toolchain to 1.94.1 by [@lukekim](https://github.com/lukekim) in [#10353](https://github.com/spiceai/spiceai/pull/10353) |
| 231 | +- Handle order by and sort in PartitionedTableScanRewrite by [@Jeadie](https://github.com/Jeadie) in [#9656](https://github.com/spiceai/spiceai/pull/9656) |
| 232 | +- Fix OTEL Exporter by [@krinart](https://github.com/krinart) in [#10363](https://github.com/spiceai/spiceai/pull/10363) |
| 233 | +- Pin spiceai candle / TEI forks to merged revs; drop local [patch] overrides by [@lukekim](https://github.com/lukekim) in [#10362](https://github.com/spiceai/spiceai/pull/10362) |
| 234 | + |
| 235 | +**Full Changelog**: [https://github.com/spiceai/spiceai/compare/v2.0.0-rc.2...v2.0.0-rc.3](https://github.com/spiceai/spiceai/compare/v2.0.0-rc.2...v2.0.0-rc.3) |
0 commit comments