Deephaven Release Notes: Version 1.202601 (Grizzly+)
Note
See this release's accompanying Version Log. The Version Log includes links to change-specific release notes that supplement these release notes.
This document outlines the significant improvements and breaking changes in Deephaven 1.202601 (Grizzly+). For upgrade instructions, please refer to our Upgrade Guide.
Upgrade checklist
Before upgrading to Grizzly+, review the following requirements:
| Requirement | Grizzly | Grizzly+ |
|---|---|---|
| Java version | 11 or 17 | 17 only |
| Python (Legacy) | 3.9 or 3.10 | 3.10 only |
| Python (Core+) | 3.9 - 3.12 | 3.9 - 3.12 |
| Ubuntu | 20.04, 22.04 | 22.04, 24.04 |
| Core+ version | 0.40.8 | 41.3 |
Caution
Action required before upgrade: Grizzly+ drops support for Java 11, Python 3.9, and Ubuntu 20.04.
Breaking changes
Removed features
| Feature | Replacement |
|---|---|
| Legacy Jupyter notebook integration | Use Code Studio or standalone Jupyter with the Deephaven Python client |
| Legacy WebClientData (WCD) | Automatically migrated to Core+ (see note below) |
| Java 11 runtime | Upgrade to Java 17, 21, or 25 |
| Legacy Python 3.9 workers | Upgrade to Python 3.10 |
| Ubuntu 20.04 | Upgrade to Ubuntu 22.04 or 24.04 |
Note
WebClientData migration: The upgrade automatically updates the WebClientData PQ to Core+. If you customized the WebClientData heap size, apply the same settings after the update. If your Persistent Queries or application retrieve data directly from the WebClientData PQ, update them to work with the new Core+ version.
Data behavior changes
Warning
These changes affect how your Core+ queries handle NULL and NaN values. Review any queries that depend on sorting or aggregating data with missing values.
Stateless Evaluation by Default
Formulas in select, update, and where clauses are now stateless by default. Queries that depend on the order of formula evaluation will produce unexpected results. Mark columns serial as required, or set the default behavior for select and update. You can change the configuration property QueryTable.statelessSelectByDefault to false to make columns stateful. For filters, change the property QueryTable.statelessFiltersByDefault.
NULL and NaN handling
Core 41 aligns NULL and NaN behavior with IEEE standards and user expectations:
- Sorting:
NULLvalues now appear first;NaNvalues appear last. Previously, the order was inconsistent across data types. - Aggregations: Mathematical operations (sum, avg, etc.) now ignore
NULLvalues and returnNaNif any input isNaN. This prevents silent data corruption in calculations. - Comparisons: Filter expressions now handle
NULLandNaNconsistently. For example,where("price < 100")no longer includes rows wherepriceisNULL.
What to check: Review queries that sort columns with missing data, or aggregate columns that may contain NULLs. Results may differ from Grizzly.
API changes
- Generated loggers: If you have custom binary log formats (i.e., you define application loggers in your schemas), you must regenerate your loggers after upgrading.
Other changes
-
Editing Core+ Queries Disabled in Swing: In the Swing UI, the following actions are disabled for queries with Engine type
Core+:- Edit
- Copy
- Revert
- Enable
- Disable
- Bulk Copy
- Create Merge Query
- Create Validate Query
These restrictions apply to any selection containing at least one
Core+query. You can still editLegacyqueries in Swing. To editCore+queries, use the Web UI.
What's new
Pivot tables
Grizzly+ introduces pivot tables for interactive data exploration and visualization.
Why it matters: Pivot tables let you reshape and summarize data interactively in the UI without writing query code. You can:
- Create pivot views directly from any source table.
- Drag and drop columns to reorganize your view.
- Apply filters and sorts interactively.
- Access pivot table configurations from JavaScript applications via the JS API.
Pivot tables are a display feature for exploring data. For programmatic data reshaping that produces tables you can use in downstream operations (joins, aggregations), see keyedTranspose.
Web-based schema editor
The schema editor now runs entirely in the web UI, with new capabilities for discovering and importing data:
- CSV import: Upload a CSV file to auto-detect column types, preview data, and generate a schema. See CSV schema inference.
- JDBC import: Connect to external databases to discover tables and import their schemas. See JDBC schema inference.
- XML editor with diff view: Edit schema XML directly with syntax highlighting and see a side-by-side comparison of your changes.
- Bulk operations: Import and export multiple schemas at once for migration or backup.
Why it matters: Schema management is now available directly in the web UI, eliminating the need to switch to a separate desktop application. Data engineers can onboard new data sources faster without leaving their browser.
Permission analyzer
A new UI tool helps administrators understand and troubleshoot access control:
- See which ACLs apply to a specific user and table.
- Understand why a user can or cannot access particular data.
- Identify overly permissive or missing ACL rules.
Why it matters: Debugging "why can't I see this table?" questions previously required manual ACL inspection. The permission analyzer provides instant answers.
Heap usage indicator
The console status bar now displays real-time heap memory usage for your worker.
Why it matters: Memory issues are easier to spot before they cause failures. You can see when a query is approaching memory limits and take action proactively.
Improved Kubernetes resource management
For Kubernetes deployments, Grizzly+ provides better control over worker resources:
- CPU limits: Set default CPU requests and limits for workers, preventing any single query from monopolizing cluster resources.
- Memory overhead: More accurate accounting for non-heap memory (Python objects, native libraries) reduces out-of-memory terminations.
- TLS for worker communication: All inter-worker traffic is now encrypted by default.
- Faster pod startup: Configurable DNS lookup delays reduce worker startup failures in environments with slow DNS propagation.
deephaven.ui component library
The deephaven.ui plugin adds several new components for building interactive dashboards:
| Component | Description |
|---|---|
ui.toast | Display temporary notification messages |
ui.menu | Create dropdown and context menus |
ui.color_picker | Let users select colors |
ui.accordion | Collapsible content sections |
ui.breadcrumbs | Navigation trail for hierarchical content |
ui.labeled_value | Display read-only values with labels and formatting |
ui.tag_group | Display and manage sets of tags |
Document delta updates: The UI now receives incremental updates instead of full document refreshes, improving performance for complex dashboards.
Core+ engine improvements
Enhanced predicate pushdown
Predicate pushdown enables filters to leverage Parquet row group metadata and data indexes to skip reading unnecessary data from storage. Grizzly+ extends this capability so that data indexes can now accelerate most filter types, not just exact match lookups.
Iceberg integration
Grizzly+ adds an iceberg extended storage type, enabling:
- Reading from Iceberg tables with full partition pruning.
- Writing to Iceberg tables with schema evolution support.
- Integration with Iceberg catalogs (AWS Glue, Hive Metastore, etc.).
Rollup enhancements
Rollups now support:
updateView: Add calculated columns to rollup results.- Constituent filtering: Filter which rows contribute to each rollup group.
- Double/float columns: Can now be used as rollup keys.
Administration improvements
Certificate management changes
Deephaven-generated client truststores are now optional. For details, see TLS certificates and trust model.
What changed: If your endpoint certificate is from a well-known public CA, clients can use their existing system trust. You no longer need Deephaven-specific client truststores.
For private/corporate CA certificates, use the new DH_CA_CERTIFICATE installer property to provide the root CA bundle. The installer generates client truststores at /etc/sysconfig/deephaven/trust/.
Breaking changes:
- Bare metal/manual installs: Now require one certificate per machine (previously could reuse a single cert across machines).
- Envoy: Certificate file renamed from
lighttpd.pemtoenvoy.pem. - Hostname verification: Each certificate must match the node's hostname (uses
DH_NODE_#_DOMAIN).
New installer properties:
DH_CA_CERTIFICATE: Path to root CA bundle for private certificates.DH_ENVOY_INSTALL_MODE: Controls Envoy installation (NONE/NATIVE/DOCKER/PODMAN).DH_ENVOY_ENABLE_ADMIN: Enable Envoy admin endpoint.DH_ENVOY_ADMIN_PORT: Set admin port number.
Certificate rotation: Use dh_keygen.sh to update certificates across all nodes.
Security updates
Grizzly+ includes updates to address security vulnerabilities in:
- Jetty (upgraded to 12.1.5)
- gRPC (upgraded to 1.76.2)
- Protobuf, Commons Compress, Jackson, and other dependencies
Container images now run with restricted privileges by default on Kubernetes.
Embedded dashboards
You can now embed dashboards in external applications via iframe with proper authentication flow. Use ui.resolve to reference widgets from other persistent queries, enabling modular dashboard composition.
Deprecation notices
Caution
Last release for these features: The following will be removed in the next release. Migrate now.
| Feature being removed | Replacement |
|---|---|
| Legacy Python workers | Core+ workers |
| Legacy data validation/merge | Core+ validation and merge |
Legacy import (iris_exec CLI) | Web UI or Core+ APIs |
| Swing desktop applications | Web UI |
The following features are deprecated and will be removed in a future release:
| Deprecated feature | Replacement |
|---|---|
iris_db_user_mod | dhconfig acls |
controller_tool | dhconfig pq |
Component versions
| Component | Version |
|---|---|
| Java | 17 |
| Python | 3.10 |
| Core+ | 41.1 |
| deephaven.ui | 0.32.1 |
| Deephaven Express (plotly) | 0.18.3 |
| Envoy | 1.36 |
| etcd server | 3.5.15 |
| jetcd client | 0.8.6 |
| Jetty | 12.1.5 |
| gRPC | 1.76.2 |
For the full platform support matrix (OS versions, Rocky, RHEL), see Version support matrix.