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:

RequirementGrizzlyGrizzly+
Java version11 or 1717 only
Python (Legacy)3.9 or 3.103.10 only
Python (Core+)3.9 - 3.123.9 - 3.12
Ubuntu20.04, 22.0422.04, 24.04
Core+ version0.40.841.3

Caution

Action required before upgrade: Grizzly+ drops support for Java 11, Python 3.9, and Ubuntu 20.04.

Breaking changes

Removed features

FeatureReplacement
Legacy Jupyter notebook integrationUse Code Studio or standalone Jupyter with the Deephaven Python client
Legacy WebClientData (WCD)Automatically migrated to Core+ (see note below)
Java 11 runtimeUpgrade to Java 17, 21, or 25
Legacy Python 3.9 workersUpgrade to Python 3.10
Ubuntu 20.04Upgrade 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: NULL values now appear first; NaN values appear last. Previously, the order was inconsistent across data types.
  • Aggregations: Mathematical operations (sum, avg, etc.) now ignore NULL values and return NaN if any input is NaN. This prevents silent data corruption in calculations.
  • Comparisons: Filter expressions now handle NULL and NaN consistently. For example, where("price < 100") no longer includes rows where price is NULL.

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 edit Legacy queries in Swing. To edit Core+ 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:

ComponentDescription
ui.toastDisplay temporary notification messages
ui.menuCreate dropdown and context menus
ui.color_pickerLet users select colors
ui.accordionCollapsible content sections
ui.breadcrumbsNavigation trail for hierarchical content
ui.labeled_valueDisplay read-only values with labels and formatting
ui.tag_groupDisplay 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.pem to envoy.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 removedReplacement
Legacy Python workersCore+ workers
Legacy data validation/mergeCore+ validation and merge
Legacy import (iris_exec CLI)Web UI or Core+ APIs
Swing desktop applicationsWeb UI

The following features are deprecated and will be removed in a future release:

Deprecated featureReplacement
iris_db_user_moddhconfig acls
controller_tooldhconfig pq

Component versions

ComponentVersion
Java17
Python3.10
Core+41.1
deephaven.ui0.32.1
Deephaven Express (plotly)0.18.3
Envoy1.36
etcd server3.5.15
jetcd client0.8.6
Jetty12.1.5
gRPC1.76.2

For the full platform support matrix (OS versions, Rocky, RHEL), see Version support matrix.