Detailed Version Log Deephaven 1.202601
Note
For information on changes to Deephaven Community, see the Github release page.
Certified versions
No Grizzly Plus versions are certified at this time.
Detailed Release Version Log: Deephaven v2026.01
| Patch | Details |
|---|---|
| 025 | DH-22020: Update web version to v1.16.0 DH-21947: Split out fetchVariableDefinitionByPredicate function DH-21722: Fix Goto Value for Timestamps DH-21807: Update envoy and certificates documentation |
| 024 | Merge updates from 1.20240517.556
|
| 023 | DH-22005: Fix CODEOWNERS entry for WebClientData2 DH-21516: Add template for feature planning document DH-20052: add documentation for BLF LogFormat DH-21931: implement simpler FileWriters DH-21995: Remove jdom from CUS directory. DH-21990: Move the cache directories used by mypy and ruff to the Main/build DH-21972: update BLF release notes after renaming DH-21754: Make hadoop-common dependency transitive DH-21972: regenerate BLF loggers DH-21959: CorePlusBenchmark Use New JVM Max Build Properties |
| 022 | DH-21960: ForceLogoutProvider test fixes DH-21972: BLF renaming DH-21960: recent activity rework DH-21960: Switch from int array to byte for days array DH-21915: Switch to AggSortedLast DH-21958: migrate ForceLogoutProvider to BLF loggers DH-21752: remove extra characters from error message DH-21939: Fix merge server config for various integration tests DH-21882: Make Java client more resilient to missing JSON fields. DH-21889: Add Python version specifiers for numpy, pandas, pyarrow, matplotlib DH-21835: Construct LAS writer in BinaryRowUtils DH-21780: add precision to time parameter javadoc in loggers |
| 021 | DH-21932: memoize viewport subscription options DH-21921: WebClientData2Objects.historicalAndLiveMerged should avoid get(0) DH-20504: Add Java 21 and 25 support for G+ DH-21867: Importer transformation integration test and documentation updates DH-21916: Create a CODEOWNERS entry for WebClientData2 |
| 020 | DH-21911: switch to maxBy on activeUsers DH-21913, DH-19818: Update deephaven.ui to v0.33.0 DH-21714: Correctly create dynamic partition BLF loggers |
| 019 | DH-21906: Bump G+ to Core 41.3 DH-21891: Remove numba from install-required of Core Py API DH-21305: Downgrade jetty to 12.0.33 DH-21814: Reuse callsite for updateBy listener creation. DH-21873: Schema Editor allow partitioning columns for extended storage type DH-21875: Fix File Name from Schema Editor Export DH-21860: Disable All Schema Fields on Parser Error DH-21893: Avoid NPE due to stale/missing auth token DH-21752: CorePlus CSV import error handling improvements DH-21872: Schema Editor Data Index should wrap DH-21895, DH-21449: Update deephaven.ui to v0.32.3 DH-21894, DH-21658: Update web version to 1.15.1 DH-21553: Clear Stale Validation Errors in Query Editor DH-21874: Fix Schema Editor Formatting in Firefox DH-21865, DH-21866: Exclude deephaven-csv-fast-double-parser from EnterpriseShadowed DH-16844: Custom parsers in CorePlus DH-21546: add missing sort for stale data DH-21889: Remove numba and llvmlite from the requirements.txt of Core+ Py DH-21816: Core+ CPP client needs to handle the null truststore-url case DH-21864: HTTP Resolvers must use truststore when configured DH-21568: Schema Editor column revert button DH-21850: Don't Leave 'Zombie' Workers Running for Successful Tests. DH-21214: Scheduled Force Logout DH-21743: switch to definite time mocking DH-21325: Drop Legacy Python 3.9 in G+ DH-21837: TestOrchestrator can start more tests than intended. DH-21838: Suppress ClosedChannelException in LogHelper |
| 018 | Merge updates from 1.20240517.555
|
| 017 | DH-21733: Fix missing timeouts in Python Core+ client. DH-21822: Remove requireNonNull check in LogAggregatorWriterMultiPartition DH-21792: add loggerClass to LoggerInfo DH-20052: remove IOException from Logger 'of' method DH-19534: Corrections to CSV import documentation DH-21731: Fix envoy config in K8s to allow wss connections to legacy workers DH-20052: Binary Logger Factory improvements |
| 016 | DH-21686: Make WCD2's WorkspaceDataWriter service plugin requests async DH-21769: throttle activity write to localStorage DH-21760: fix qa results for new release numbering format DH-21215: Move user refresh outside of cache DH-20707: Enforce a size limit on WorkspaceData writes on WCD2 DH-21562: Be clearer and consistent with which truststore is used DH-20987: fix REPLACE mode concurrent modification error by syncing config version DH-21750: Change the Keepalive Time to 20s for Authentication and Controller Connections. DH-21636: Default to SHA-256 for public key md/mgf params DH-21730: Update deephaven.ui to v0.32.2 DH-21670: Fix unbounded memory leak in deephaven.ui / python workers DH-19973: Aggregations do not persist in deephaven UI tables DH-19310: Add deleteQueries to EnterpriseClient definition |
| 015 | Merge updates from 1.20240517.555 (in-progress)
|
| 014 | DH-21652: prepare for Core logger flag removal DH-20361: Cleanup on window "unload" |
| 013 | DH-21541: Swing Should not Edit Core+ Queries DH-21729: Make sure client connection address is populated correctly DH-21666: Use Historical Data for Query Logs to Correlate Serial to Id DH-21540: Make sure launcher system socket factory is initialized DH-21640: Rename WCD2 to WCD |
| 012 | Merge updates from 1.20240517.554
|
| 011 | DH-21674: Make nightly tests report correctly report results DH-21211: Add inactivity timeout logoff DH-21215: Refresh snap table DH-21683: Update Core+ C++ and R client dockerized build for lib.core.toml DH-21174: Don't shadow deephaven Core DH-21419: Add shared filter list for Panel Dropdown and PQ Explorer DH-15846: Fix InputTableEnums test bad merge. DH-21695: Update Pivot plugin to v0.3.0 DH-21669: Pivot plugin should re-fetch on disconnect/reconnect DH-21702: Pivot filtering UI DH-21673: Update web version on G+ to v1.14.0 DH-21625: investigate podman tests DH-21315: Adjust dark mode running vs initializing query monitor colors DH-21506: Sort PQ object array by name DH-21663: correct Expiration rolling logic |
| 010 | DH-21609: WCD2 startup and initial usage memory concerns DH-21661: update docker version in jenkinsfiles DH-21316: Convert controller and config from deployments to statefulsets in Kubernetes DH-15846: Validate Core+ Input Table Enums DH-21551: Fix Dashboard Export Converting Arrays to Strings DH-19985: Ensure Netty bom is used when we load gRPC DH-21197: Remove "defaults" for PQs created from JS DH-21339: ConsolePanel Variable Table Replacement Creating Duplicates DH-21568: Improve Schema Editor Field Editing DH-21595: use alternatives --install and --set for jar and jps DH-21215: Force logout a user that has been deleted DH-21645: fix codeowners to use exclusion pattern DH-21099: Js API samples should check for the correct type string DH-21527: Database name in JDBC import settings should be required DH-21598: sort out mv file issue on nightlies DH-20262: Safe Mode Query Editor DH-21665: Change location of monit config files to avoid cross-device link error DH-21595: Update images for java alternates (G+) |
| 009 | DH-21607, DH-21234, DH-21610: Update web version in G+ to v1.13.0 DH-21566: Handle "DEFAULT" storage-format in Core+ Merge DH-21422: Update build-to-version script to work with new build numbers DH-21600: Added embedDashboardsAndWidgets feature flag DH-21597: check-deephaven-cluster used wrong argument name. DH-20724: Add .copy() and .getSourceTable() functions to JsPivotTable DH-18554: Test Orchestrator - remove unhelpfully noisy grpc logging from output DH-21502: vulnerability tracker DH-21514: Update web version to 1.12.1 DH-21552: Add AclService and WebClientUtilsService to Enterprise Auth Module DH-21574: Wrong ACL filter definition in WCD2 for UserAssignments table DH-21249: Add Envoy route for SchemaApi service DH-21530: fix dh-config install error, python test and use signed launcher DH-21521: SessionMonitor does not wait for enough sessions DH-21523: Update Grizzly+ Core+ to 41.1. DH-20446: JS API should close session on disconnect DH-21486: Allow the clock filter to execute in parallel. DH-21462: Dictionaries would skip the last region if it had only one value. DH-21480: Use protobuf instead of JSON for input table restrictions. DH-20884: Update protobuf-java-util to expected protobuf-java ve… DH-19985: Use Netty's BOM for consistent netty, boringssl DH-21451: make Python packages: pytz and zoneinfo soft deps DH-19489, DH-20658: structured filter support in Core Python client and server API DH-21400: Implement findPositionForKey for StaticSymbolTableChunkedOperatorAggregationStateManager DH-21297: correct shift handling for TreeTableFilter DH-21319: Anonymous classes don't work in the query language |
| 008 | DH-21265: Generate per-node certificates for envoy; fix legacy workers after envoy upgrade DH-21511: fix csv import tests DH-21394: fix failing test DH-21478: add disabled test to demonstrate failure DH-21490: Consistent use of Core+ Schema in all Core+ projects DH-21394: properly check ColumnSpec invariants DH-20000: backport test orchestrator DH-21212: Rework backend API with system tables DH-21475: Bump the others group across 2 directories with 41 updates DH-15642: Web Bulk Data Ingestion DH-21467: Bump deephaven-csv reference to 0.19.0 |
| 007 | Merge updates from 1.20240517.551
|
| 006 | DH-21008: Fix failing tests DH-21173: Remove Legacy and Core+ usage of deprecated codecs DH-21459: Disable G+ Crosscluster test (G+) DH-19846: empty password should fail differently DH-21440: Integration Test for Core+ Schema DH-21173: add ObjectCodec binary unit tests DH-17050: Fix trim defaults for null and 1-character formatting |
| 005 | DH-21444, DH-21259, DH-21027, DH-21367, DH-21407: Update web version v1.12.0 DH-21173: add ObjectCodec binary unit tests DH-21343: Move IngesterPersistentQueryConstants DH-21173: add ObjectCodec binary unit tests DH-21306: Refresh token did not update deadline DH-21008, DH-21249: Fix missing JS API configs after JS API refactor DH-21097: revert exposing SchemaXmlParser.getColumnTypes DH-21097: Fix javadoc |
| 004 | Merge updates from 1.20240517.550
|
| 003 | DH-21097, DH-21110: Schema interface in Core+ DH-21356: Compute the correct image version DH-21421: Update Java style guide for record formatting DH-20247: corrections to data routing filters and code enhancements DH-21415, DH-21259: Upgrade deephaven-plugin-plotly-express to 0.18.3 DH-21158: DH-21295: Correctly map between TS/JS and Proto concerning nulls DH-20987: Dependent queries not handled correctly when importing queries DH-21348: Clean up target import-directory on failed BinlogImport job DH-21411: Fix G+ wheel name normalization. DH-19506: simplify tailerConfigDbInternal.xml DH-21410: Updates to officially release gplus |
| 002 | Merge updates from 1.20240517.549
|
| 001 | DH-19828: no PQ restart triggered when adding/removing replicas or spares DH-21330: Fix glob CSV import preview DH-21271: migrate lz4 dependency for enterprise DH-21352: Fix Schema JDBC API for Import Source DH-21356: Make sure the build supports the new version scheme DH-21380: remove extraneous ImporterBase wrapping DH-21143: More responsively terminate closed Code Studios. DH-21157: Blue checkmark should be set to indicate the currently selected DataType DH-21027: Adjust setting menu header for proper contrast DH-18617: Filter interactive consoles and schema editors from PQ explorer |
Detailed Release Candidate Version Log: Deephaven v1.20250219beta
| Patch | Details |
|---|---|
| 138 | DH-19548: Fix ImportJobs javadoc DH-21337: bump podman to rocky9 and python312 DH-21334: Add QueryDisplayType enum and complete QueryType enum DH-20762: Convert auth and acl procs to stateful sets that can have multiple replicas DH-21187: Remove WCD legacy from gplus DH-19548: Fix issues with delimiter and trim using CSV import builder DH-21129: Persist Schema Connection State to Workspace DH-21115: Use new theme variables for diff colors DH-20305, DH-20295, DH-19435: Various updates to default property files DH-21172: Fix Layout for Schema Editor Import Source |
| 137 | Merge updates from 1.20240517.547
|
| 136 | DH-20627: Make WorkspaceDataTool work with WCD2 DH-21317, DH-21093, DH-20243, DH-21048, DH-21144, DH-21258: Update web version to v1.11.0 DH-21322: Update G+ to Core 41.0 DH-18056: Null and NaN Core engine Consistency DH-10139: Introduce structured errors for input table updates. DH-18811: Core+ input tables can't be edited after other columns joined on DH-19047: Selectables with Barriers and Serial Marking DH-19279: Use ColumnExpressionValidator for HierarchicalTableFilters. DH-19382: add server side timing to JsCommandResult DH-19461: Apply linting/type-checking on Core Py APIs DH-19475: predicate pushdown - parquet dictionary support DH-19563: JsTreeTable copy throwing breaking advanced filters on tree tables DH-19929: support Avro String[] types DH-20248: Update server base images to Ubuntu LTS 24.04 DH-20307: Throw errors when worker connection has been Disconnected DH-20408: Allow column renames to properly mask collisions. DH-20448, DH-20449: Better schema information for complex types DH-20464: support table level data indexing for all filters DH-20465: Fixes for MethodListValidator dependencies. DH-20516: Add implicit barriers to serial Selectables. DH-20517: Add ConcurrencyControl and Selectable wrappers in Py Server API DH-20523: Include update graph name in log messages. DH-20533: Catch/ignore warnings in _wrapper.py DH-20540: Ensure DataIndex pushdown is not short-circuited DH-20563: Improve juli log level translation DH-20568: Refactor DHProcess Module for use outside EngineMetrics. DH-20590: Add Add ColumnExpressionValidator to TicketResolverOptions. DH-20607: Bump kafka version to 7.9.2 DH-20611: Add dependency constraint on json-smart DH-20614: correct PartitionAwareSourceTable partition column filter handling DH-20616: better URI parsing DH-20625: SelectAndViewAnalyzer track barriers for real and aliased columns DH-20638: selectDistinct on SourceTable throws an Exception while notifying DH-20652: retain column definitions when columns retained DH-20682: Update deephaven-csv to 0.18.0 for shutdown fix DH-20685: Make Resolver and InferenceInstructions equals better DH-20720: Add PluginOptions for service loaded plugins to get the ColumnExpressionValidator. DH-20736: Add more column validation. DH-20714: Convert Filters and Selectables to Stateless by Default DH-20783: Update sort operations to put NULL first, NaN last DH-20784: Mathematical agg ops should ignore NULLs, and poison with NaN DH-20785: nan/null comparison in filter and query language DH-20809: Fix Core+ WorkerConnection goes back into Reconnecting state after Disconnected DH-20816: Refactor WhereFilter.Visitor pattern DH-20854: TailInitializationFilter that uses rows not timestamps. DH-20884: Update Jetty to 12.1.5, gRPC to 1.76.2 DH-20990: Fix predicate pushdown for renamed columns in a merged table. DH-20994: Corrected sort(float), sort(double) to fix chunk sorting issue. DH-20997: Allow prevFlusher for Distinct operators to run when not exposeInternal DH-20998: ClassCastException when subscribing to BarrageTable with a ZonedDateTime. DH-21004: include char in Numeric code generation DH-21056: Use the value attribute of Pandas Timedelta to avoid type-checking error DH-21091: Restore QueryLanguageFunction auto-generation DH-21105: Remove hard-coded stateful ViewColumnSource constructors DH-21109: Add Configuration constructor parameter for PropertyInputStreamLoader. DH-21112: Prevent Python formula parallelism in non-free-threaded Python. DH-21116: Make _to_sequence public to not break DH enterprise Py APIs (Grizzly, G+, SanLuis) DH-21128: Always call Java Consumer's accept method regardless of whether partition value is provided DH-21156: IncrementalReleaseFilter support for add-only tables. DH-21231: WhereIn / WhereNotIn (DynamicWhereFilter) to handle NaN and +/-0 properly DH-21266: migrate lz4 dependency DH-19544: remove deprecated IrisLogCreator constructors DH-13683, DH-21264: fixed remote logout users and groups DH-21304: Update G+ to Core 41.0-SNAPSHOT DH-20797: Hide settings tabs for Code Studio and Schema Editor queries DH-13683: Revert remote logout users and groups |
| 135 | DH-21271: Gradle workaround for lz4 relocation DH-21237: Update G+ to gRPC 1.76.2 and Jetty 12.1 DH-21256: io.deephaven.importers.csv.CsvSinkFactory used Legacy ColumnSources. DH-21247: Fix MatchFilter constructor signatures. DH-13683: remote logout users and groups DH-20526: Upgrade envoy; fix envoy cert handling DH-21087, DH-21069: Schema XML preview diff view, fix XML preview button bar DH-21196: Back button for login screen doesn't work DH-20409: Fix multi-partition imports DH-21176: Use AEL instead of PQSL for integration test DH-20409: Core+ CSV schema editor preview |
| 134 | Merge updates from 1.20240517.545
|
| 133 | DH-20375: Schema JDBC API Query DH-21131: Placeholder for Schema Draft empty table name DH-21170: Improve Schema Config Tab Behavior DH-21039: Revert query monaco diff editor fixes DH-21176: Fix integration-test for cases where there are no PQSL binlogs DH-21210: Exclude Automation dir from CODEOWNERS DH-20477, DH-19534, DH-20340: CSV format tests, CSV/JDBC javadocs and fixes DH-21208: Remove DH_DEFAULT_CERTIFICATE DH-20306: A solution to the TableDefinition serialization issue DH-19587, DH-19586: one cert per machine, truststore optional DH-21204: Cover new enum cases in PqDerivedTables. DH-20945: Update launcher to address vulnerabilities from SBOM scan DH-20513: Import - Deephaven Binary Logs Web UI fixes DH-21163: Save as PQ button crashes and loses notebook data DH-21172: Fix bottom margin for Schema Import Source panel DH-21065: Add missing proto enum values DH-21095: Improve Schema Search DH-21055: Fix layout for Enterprise tooltip worker name DH-21071: DH-21009: JS gRPC transport impl and buffer fix DH-21058: Query monitor errors out when inputting Owner/Name OR filter DH-21065: Handle legacy object types first in JS API DH-21122: Fix JDBC codec shadowing DH-20745: Can't stop code studio or schema editor query |
| 132 | DH-21015: Replace all usages of deprecated QueryInfo methods and IrisClient events DH-21141: Web Schema Editor UI Fixes for CSV Import Source Preview DH-20968: Bump the others group across 2 directories with 83 updates DH-21039: Revert query improvements DH-21113: GetPropertyRequest reads from classpath not etcd DH-21081: Log when JettyServerBuilder doesn't enable CORS DH-21120: Update CODEOWNER for web/client-ui folder to web team DH-16956: update font loading to re-use fontbootstrap DH-21044: Ignore pre/post install scripts DH-21030: Handle formatting multiple jvm args in connection info DH-20980: Add back missing validation when reverting draft query DH-20745: Disable restart for Schema API and Code Studio queries DH-20739: More Schema Editor UI fixes DH-20776: Add python bindings for EnterpriseTableTools.readBin(...) DH-20979: Use snapshots for shadowed build. DH-21051: JS QueryInfo should return null for unset dates DH-21073: Add missing IP addr for JS public key auth DH-21060: JS dispatcher list should show correct summary for groups DH-21084, DH-21085: JS should correctly handle nulls in query configs DH-21082: Use schema file extension in Web Schema Editor DH-21052: ConsoleCreator kills workers when used in an iframe DH-20631: Add methods to retrieve PQ scripts DH-20257: workspace snapshot schedule daily DH-20152: Better error message when error creating a console DH-20743: Reconnect plots correctly after wifi disconnect |
| 131 | Merge updates from 1.20240517.541
|
| 130 | DH-20391: CorePlus imports - remove append flag and clean CSV import exception DH-15406: Table not refetching after being closed DH-21042: request JDBC driver keys for JS API DH-20999: New Tab screen's Shortcuts section is broken DH-21032: JS API must actually pass saml key to auth server DH-21032: SAML configs/templates accessible by config server DH-15407: Alignment for Show Groups Without ACLs DH-15407: Don't throw if user doesn't exist DH-20979: Update Grizzly+ to Core 0.41.0-SNAPSHOT DH-21030: Remove ConsoleConfig to fix code studio creation DH-21029: Refresh token was not getting stored properly DH-20980: Query settings flashes validation errors when changing namespace DH-21018: Add back format document button DH-20986: Wrap some console creator typing tests in actDH-17975: Replace web_api_service endpoints with gRPC-web calls |
| 129 | Merge updates from 1.20240517.539
|
| 128 | DH-15407: Add showGroupsWithoutAcls flag, error if user does not exist DH-21014: remove duplicate heap label in console status bar DH-20414: Update scripted csv import to use specific merge server DH-21006: Better handling when 20k queries are removed/updated DH-20513: Enable Import - Deephaven Binary Logs in web DH-19534: Make CsvImportOptions immutable DH-20414: Release CSV integration tests DH-20992: Update packages to resolve critical vulnerabilities DH-20855: Use tls crt for all certificates in installer DH-20485: Make connection json optional DH-20984: Exclude core JDBC tests from nightlies DH-19998: Revert Query DH-20972, DH-19382: Update web version in G+ to v1.10.0 DH-20795: Update QM Custom Filtering DH-20828: add 'ruffFixAndFormat' gradle task and improve static analysis of Py code |
| 127 | Merge updates from 1.20240517.538
|
| 126 | DH-20769: Use new useViewportData props to request data where necessary DH-20970: Bump the patch-only group across 1 directory with 2 updates DH-19535, DH-20418: CorePlus JDBC import and schema discovery DH-20744: Use url encoded-comma separated lists for JDBC virtual properties. DH-20952: Upgrade deephaven-plugin-plotly-express to 0.18.2 DH-15406: Permission analyzer UI DH-20942, DH-18780, DH-20734, DH-18960, DH-18779, DH-20594: Update Web Version v1.9.0 DH-20944: Fix failing test DH-20340: Make CsvSchemaCreator builder package visible DH-20659: Query logs table recovering correctly on request restart DH-20712: Fix failing console creator unit test DH-20935: Cleanup subscription leaks after switching to createViewportSubscription DH-15407: Fix broken javadoc DH-20829: Use TLS for worker comms in Kubernetes DH-15407: JS API for ACL Permission Analyzer DH-20712, DH-20255, DH-20319, DH-20500, DH-19413, DH-20229, DH-19098, DH-20410: Update web version v1.8.0 and React v18 |
| 125 | Merge updates from 1.20240517.536
|
| 124 | DH-20561: heap usage indicator DH-20916: TabNavigation not focusing the correct element on click DH-19055: remove extraneous generate projects DH-20901: Core+ python client SessionManager.create_auth_client takes optional string argument but if given fails DH-20344: Remove dead code incorrectly merged DH-20867: use correct precondition when deciding to create envoy certs DH-19538: Core+ Binary log import DH-20187: Schema Editor Bulk Import and Export |
| 123 | Merge updates from 1.20240517.535
|
| 122 | DH-20427: Web UI Should Close WCD2 Widgets DH-19951: Fix web publish action in G+ DH-19957: Fix Check for Spares with Unlimited Restart Error Count DH-20518: Iris Java Client Connection JSON Default DH-18577: Rename io.deephaven.dnd to io.deephaven.coreplus DH-20863: Fix installer handling of core+ -SNAPSHOT version DH-20832: Fix jetcd 0.8.5 shadow build DH-20759: Controller Configuration to Include WorkerKind, Protobuf Comments DH-20834: http/1.1 is required by vscode DH-19943: clear SchemaService for tests before using |
| 121 | Merge updates from 1.20240517.534
|
| 120 | DH-19943: move readBin options into builder DH-20374: Schema Editor CSV API DH-20833: Set corePlusManager in useIframeContentLogin DH-20739: Schema Editor UI enhancements DH-20414: Add delay for int-test CSV import DH-20818: Upgrade deephaven-plugin-plotly-express to 0.18.1 DH-20827: Modify CODEOWNERS for web directory ownership DH-20604: PQs on merge server automatically become a Draft DH-20473: Provide truststore directly to Jetty h2 client DH-20781: Update jetcd version to 0.8.5 DH-20748: Web UI crashing when reordering dashboard tabs with a new dashboard open DH-19948: Allow longer dashboard names in top tabs DH-20708: Notebook classloading should be disabled for Core+ system PQs |
| 119 | Merge updates from 1.20240517.533
|
| 118 | DH-20481: Create Import Source as Valid DH-20344: Console creator now uses CorePlusManager DH-20298: Core+ Run Local Query Script DH-18918,DH-19076,DH-17469: Extract remotely scripts into .sh files, rename DH_DND_VERSIONS to DH_COREPLUS_VERSIONS, more diskspace installer validation DH-20782: Disable SNI checks DH-20234: Controller believes Core+ worker is still running when actually down |
| 117 | DH-19943: Port readBin to Core+ DH-20659: CorePlusManager caching and logging DH-20538: Use new createViewportSubscrtipion for ItemUpdateListener causing false sharing changes DH-20472: DH Services should use hostname as authority DH-20765: Small fixes for Core+ MergeJob |
| 116 | Merge updates from 1.20240517.532
|
| 115 | DH-20730: rebuild images with expect DH-20744: Add virtual properties for jsapi. |
| 114 | DH-20687: Publish Enterprise JS API type for RefreshToken DH-20040: optimize selectDistinct for partitioning columns in DeferredACLTable DH-20562: Make the test more specific to avoid false positives DH-20212: repair the checkpoint record after changing table files or definition DH-20729: Update plotly to v0.18.0 DH-20545: Expose JS VariableDefinition objects without GWT type info |
| 113 | Merge updates from 1.20240517.531
|
| 112 | DH-20695: Support PQ import/export via gRPC. DH-20697: gRPC endpoints for config property access DH-19595: add hostname SAN and remove static authorities from system certs DH-20095: Right chevron icon doesn't disable when scrolled to end of dashboard tabs DH-20699: Schema API Query Should Run on Merge DH-20586: Use new JS API when loading workspace storage data DH-20693: Fix UnifiedServiceTest, correctly expose Jetty gRPC port DH-20691: Schema Editor should preserve CDATA DH-20577: Allow user to call containsAnyWithSplit |
| 111 | Merge updates from 1.20240517.528
|
| 110 | DH-20690: G+ Should use Parsed ColumnExpressionValidator DH-20689: Properly Apply WorkspaceData Filters to Latest Snapshot DH-20340: CSV schema inference infrastructure DH-20677: Stop Schema API Query on Unload DH-19899: Use Jetty instead of Netty for our gRPC services DH-20481: Update Schema Editor Validation for Backwards Compatibility DH-20661: generate up-to-date loggers / listeners |
| 109 | Merge updates from 1.20240517.527
|
| 108 | DH-20531: Discover schema from JDBC screen DH-20635: Replace call to client.getQuerySelectionPermission DH-20637: Fix Schema API query disconnect while active DH-20443: Schema Editor No Compile Option DH-20510: Fix array-column based validation tests |
| 107 | Merge updates from 1.20240517.525
|
| 106 | DH-19722: Better handling for large numbers of open dashboards DH-20439: Convert Schema Explorer ListView to use a TreeTable DH-20562: Exclude grpc-servlet classes from producing <warning logs DH-20505: Create new JDBC import source screen DH-20123: Schema API Query |
| 105 | Merge updates from 1.20240517.524
|
| 104 | DH-20545: Fetching tables from PQs was not working DH-20529: Use new JS subscription API to fetch viewport data DH-20360: WCD2 fails to track properly lifetimes of table objects returned to the client DH-20303: A regular user's default PQ filtering in the QM is incorrect DH-19889: Added some unit tests specific to gplus |
| 103 | DH-20506: Unshadow gRPC for DHE/Core+ usage DH-20502: MessageUtilTest.testWebServerParameters failure DH-19272: Bump GWT/jsinterop/elemental2 versions |
| 102 | Merge updates from 1.20240517.523
|
| 101 | DH-20384: Discover schema from CSV screen DH-20414: Temporarily disable CorePlus CSV import integration tests DH-20441: Add linting/type-checking/formatting for Core+ Py DH-19985: gRPC/proto/barrage/arrow/dhc versions should be consistent |
| 100 | Merge updates from 1.20240517.521
|
| 099 | DH-20461: Migrate UpdatePerformanceAncestors to BLF DH-20346: Remove unnecessary JDKs from tests DH-20450, DH-20388, DH-20401: Update Web Version 1.6.0 DH-20332, DH-18648, DH-19948, DH-20255: Update Web Version 1.5.3 DH-19898: Require h2 everywhere DH-20400: Core+ Merge should filter intraday source on partition DH-19235: EnterpriseCorePlusManager cache management DH-20356: Add py.typed marker file for generated py proto package |
| 098 | Merge updates from 1.20240517.519
|
| 097 | DH-20333: Create new CSV import source screen DH-20397: failure to creat auth client DH-20356: linting-typechecking-coreplus-py-client DH-20316: exclude circular BLF output directory from javadoc task |
| 096 | DH-19534: Core Plus CSV import DH-20337: WCD2 query shutdown/kept restarting due to a suspected authentication issue DH-18062: Fix Iceberg javadocs |
| 095 | Merge updates from 1.20240517.517
|
| 094 | DH-18062: Added fix for failing iceberg merge tests |
| 093 | DH-20196: Publish npm should fail on error DH-18062: Added support for merging into iceberg tables DH-19990: Update some dbaWorkflow PQs to use Core+ versions |
| 092 | DH-19055: Merge artifact registry from next/gplus to rc/gplus DH-20196: GH action to NPM Publish Core+ JS API types |
| 091 | Merge updates from 1.20240517.515
|
| 090 | DH-20311: Update Core+ C++ and R client dockerized build for lib.versions.toml DH-20065: Schema Config DH-19001: ui.resolve to reference widgets from other PQs that resolve on the web client DH-20280: Migrate coreplus-loggers DH-20221: Check object definition in query before attempting to fetch from server DH-20289, DH-18443, DH-18653: Update plotly-express to v0.17.2 |
| 089 | Merge updates from 1.20240517.513
|
| 088 | DH-20181: Fix deserialization of shadowed ImportStatePartitionIndex DH-20252: correct text in dhctl intraday loggers command |
| 087 | Merge updates from 1.20240517.512
|
| 086 | DH-20286, DH-18443: Update deephaven.ui to 0.32.1 DH-19668: backport Python Version splitting between legacy and core engines DH-20261: try to make LocalReadUsesCheckpoint less flaky |
| 085 | DH-20246: Import coreplus prop files in k8s install script DH-20204: remove sidecar BLF code generation DH-18711: activate 9.10 installer in gplus, restore capability to build the installer project DH-20237, DH-18601, DH-19416, DH-19988, DH-10205: Update deephaven.ui to v0.32.0 |
| 084 | Merge updates from 1.20240517.511
|
| 083 | DH-20177, DH-19601, DH-10205: Update web version to v1.5.1 |
| 082 | Merge updates from 1.20240517.510
|
| 081 | DH-19367: fix DB test DH-20208: Get catalog table from wcd2 service factory |
| 080 | DH-19487: Add validator for comparing Intraday and Historical row counts DH-19367: Use data sizes from checkpoint records DH-20180: make V2Logger Immutable DH-20176: FileSearchViewportUpdater was wired up poorly DH-20102: rename test binlogs package to binlog DH-20136: Backport to gplus remaining Core+ V2 Loggers from sanluis |
| 079 | Merge updates from 1.20240517.509
|
| 078 | DH-19793: Throw error if FileHandle key changes DH-19536: use Immutables for ValidationTableDescription |
| 077 | DH-20157: on-demand, asynchronous DataBufferPool cleanup DH-17960: WebClientData Core+ Frontend DH-19800: correctly source logroot property for web_api_service logs DH-20095: Account for sub-pixel rendering in right chevron disable state DH-13241: Operate As For Web Console Creation DH-19632: Add shortcuts to cycle stacks and panels DH-20105: Set connection headers only once DH-19529: Core+ embed widget DH-20137: Permit empty URL segments for CUS |
| 076 | DH-20134: Ensure Core+ WorkspaceSnapshot uses non-refreshing data DH-20106: Disable SNI Host Check on Kubernetes Installs DH-19915: Add coreplus properties to Configuration Service (Backport) DH-20124, DH-18281, DH-18840, DH-19839: Update plotly-express to v0.17.1 DH-16676: Port WebClientData to Core+ (Backend, gplus) DH-20114: Restore missing annotation processor DH-17858: replace javax.servlet-api 3.0.1 with 4.0.1 for saml support DH-20100: Backport Envoy fixes with Jetty 12 to gplus DH-19609: Schema XML Editor DH-20117: restore spotless exclusion for /generated/ files |
| 075 | Merge updates from 1.20240517.507
|
| 074 | DH-20111: Handle undefined dashboardid DH-19536: Port Validation Job (PQ) to Core+ |
| 073 | Merge updates from 1.20240517.506
|
| 072 | DH-20082: Fix shadowed README local instructions DH-20028: syncWeb action was not filtering outputs before copying |
| 071 | Merge updates from 1.20240517.505
|
| 070 | DH-20038: Backport to gplus DH-17714 BLF2 loggers for controller, DH-17753 BLF2 listeners DH-19892: Backport kafka tests from San Luis to GPlus DH-20028: Fix copying web IDE files into the jsJar DH-19529: Embedded dashboard route |
| 069 | Merge updates from 1.20240517.504
|
| 068 | DH-20028: Incorrect caching for child web packages DH-19903: upgrade jetty to 12.0.18 DH-14431: Add shortcuts to cycle dashboards DH-20005, DH-19897, DH-18976, DH-19917, DH-19963, DH-19882, DH-19911: Update web version to v1.3.0 |
| 067 | Merge updates from 1.20240517.503
|
| 066 | DH-18057: Add hasTable(...) method to Database interface DH-18490: Ensure Gradle knows about inputs and outputs for tasks DH-19951: Add isConnected property to EnterpriseClient |
| 065 | Merge updates from 1.20240517.502
|
| 064 | Merge updates from 1.20240517.500
|
| 063 | Merge updates from 1.20240517.498
|
| 062 | DH-19829: Make docker image building from source work with toml change DH-19834: Fix missing gradle bit from sphinxTar target. DH-19834: Backport Py changes in SanLuis to GPlus DH-19651: Backport DH-16190 Improved Binary Logger to G+ |
| 061 | Merge updates from 1.20240517.496
|
| 060 | DH-19849, DH-19632, DH-18906, DH-14431, DH-19731, DH-19693, DH-19614: Update web version v1.1.0 |
| 059 | Merge updates from 1.20240517.495
|
| 058 | DH-19727: Use property in Merge job that allows force-close of file-handles |
| 057 | Merge updates from 1.20240517.493
|
| 056 | DH-19673: Improve reliability of Kafka integration-tests DH-19754: make client-base depend on deephaven-java-client-session DH-19660: improve another error message in 'dhconfig dis add' |
| 055 | Merge updates from 1.20240517.490
|
| 054 | DH-19660: improve error message in 'dhconfig dis add' |
| 053 | DH-19684: Update web packages to v1.0.0 DH-18562: Deephaven UI picker hover blends in with non hovered styling in dark mode DH-18921: CountDistinct aggregation name overflows background in web UI DH-19307: Theme overrides in iframes DH-19350: Ruff WASM - Dev Tools console error DH-19393: Fix select distinct from table sidebar if aggregation is applied DH-19673: Improve reliability of Kafka integration-tests |
| 052 | Merge updates from 1.20240517.489
|
| 051 | DH-19679: add safety checks around FileHandle write DH-19497: Ensure atomic blocking-add for input-tables |
| 050 | Merge updates from 1.20240517.487
|
| 049 | DH-19233: Port WorkspaceSnapshotQuery to Core+ DH-18548, DH-17600, DH-19466: Cherry-picking back remaining web changes for iframes, canceled interactive workers DH-19337: Possibly include sort-ordering in core+ merge-job |
| 048 | Merge updates from 1.20240517.485
|
| 047 | DH-18483, DH-18492, DH-18470, DH-17922, DH-19603: Cherry-pick interactive consoles back to G+ |
| 046 | DH-18365: Introduce 'iceberg' extended storage type DH-19580: fix missing import DH-19469: Fix broken uploadDocs DH-19469: Backport TOML changes to Grizzly+ |
| 045 | DH-18826: Cherry-pick back UI changes from 1.20250801.229beta DH-19333: Update web version to v0.108.0 DH-13244: remove trailing whitespace from console log message DH-18152: Fix PQ Explorer resetting load balancing settings on query update DH-19271: Update web version to v0.107.2 DH-13095: Fix right click while dragging column freezes UI DH-19205: Resolve import order issue from Grizzly forward merge DH-19037: Server Config and UI Settings for Display of Null and Empty Strings DH-19190: Update web version to v0.107.1 DH-17599: Fix table name validation DH-19089: Fix context menu using stale selection DH-19138: Determine Totals Column Name by Num Aggs Per Column DH-19153: Split out a couple of login components to make them more re-usable DH-19141: Update Web UI to to v0.107.0 DH-17599: Web ACL Editor Does not Permit Hyphen in Names DH-18279: Fix unstable one click plot titles on Web DH-18681: Fix web inability to delete IT rows with null or empty keys DH-18856: Support for Median in "Aggregate Columns" in UI DH-19015: PartitionAwareSourceTable UI Widget Swaps from Merge to CoalesceDH-19080: Remove sessionWrapper from exported logs DH-19119: Update deephaven.ui to v0.29.1 DH-18461: deephaven.ui dashboard error is shown after query restart DH-19014: Update deephaven.ui to v0.29.0 DH-18090: Handle document delta updates sent from the server DH-18652: Programmatically display aggregates rows with ui.table DH-18185: ui.date_picker not calling on_change handler for granularity="day" DH-18854: Implement list format options for ui.labeled_value DH-18650: Implement dates and date formatting for ui.labeled_value DH-18894: Update deephaven.ui to v0.28.1 DH-18398: Fix ui.dialog should throw error for invalid children DH-18131: Update deephaven.ui to v0.28.0 DH-18135: ui.toast component DH-18089: ui.menu and ui.menu_trigger component DH-18320: ui.color_picker component DH-18136: ui.accordion component DH-18090: Document delta updates DH-18536: Fix Callable not found error in dh.ui DH-18582: Update deephaven.ui plugin to v0.26.1 DH-18132: ui.labeled_value component DH-18133: ui.logic_button component DH-18134: ui.disclosure component DH-18137: ui.breadcrumbs component DH-18138: ui.divider component DH-18397: ui.footer component DH-18591: Fix ui.markdown code blocks styling DH-18461: Ensure ReactPanelErrorBoundary does not throw an error itself DH-18415: Cannot expand rows after applying a rollup to tables wrapped with ui.table DH-18359: ui.tag_group DH-19128: Resolve type errors from Grizzly forward merge DH-18292: Fix Worker Kind Summary for null Status Query DH-18965: Update Web UI to to v0.106.3 DH-18734: Fix column width calculation logic in grid DH-18964: Console history changes when holding shift or other modifier keys to navigate text DH-18895: Update Web UI to to v0.106.2 DH-18645: Fix Don't use innerHTML to populate drag item DH-18852: Fix avoid exceeding call stack when exporting logs with large number of queries DH-18341: Method to export logs when login or connection fails DH-18545: Update to web dependencies to 0.106.0 for Core+ Proxy Model Partition Fix DH-18171: Resize all columns option in web UI DH-18695: Update web version to v0.105.0 DH-18542: Ruff quick fix quirks DH-18392: Columns not auto-sizing correctly in some cases DH-18645: Security vulnerability: Stored XSS DH-18358: No context menu item for "Paste" in an input table DH-18624: Paste option shows when it shouldn't DH-17517: New tab screen sharing text is not aligned DH-17704: WebClientData is down prompt should make the current status of the PQ clear to the user DH-17510: Long dashboard titles overflow the navbar DH-17642: Fix incorrect DB Server value when changing query type DH-18434: Fix markdown inline code appearing incorrectly DH-18465: Update Restart Attempts label DH-18427: Update to deephaven.ui v0.25.0 DH-18030: Allow double and floats to be rollupable DH-18158: Fix San Luis build broken by a wrong QueryColumns import DH-17497: Don't show replicas in PQ Explorer DH-17988: Fix Web PQ Editor not updating after save DH-17997: Fix DropdownFilter unusable after console disconnect DH-18078: Fix widget plugins not always loading correctly DH-18025: Fixed vite.config.mts input in gradle CI build DH-17923: Fix for login when upgrading server to support Ruff DH-17923: Enable Ruff Python linter and formatter DH-14318: Fix QM Save Button Layout on Summary DH-17778: Fix circular references in support logs, update Web UI to v0.98.0 DH-17459: Fix a typo in DefaultWorkspaceData typo DH-14318: Show Save Button on Query Summary DH-17986: Change Question Tooltips to Contextual Help DH-16608: UI to Select Core Worker Thread Counts DH-17459: Grid Density Setting DH-17797: Fixed a double encoding bug DH-17797: Split out @deephaven-enterprise/auth-nodejs package DH-16081: Checkbox Filters for Panels Menu DH-17964: Updated dh packages version to ^0.97.0 and jsapi-types to ^1.0.0-dev0.36.1 DH-17907: Option for "Thousands" in default number format dropdown DH-17797: Fixed env variable bug in publish-alpha DH-17797: build: Personal access token override for alpha publishing DH-17796: build: Lerna npm publishing DH-17796: Fixed working directory in alpha GH action DH-17796: Set lerna.json version from GH action DH-17797: Handle TemporaryAutoDelete DH-17797: QueryScheduler.makeTemporaryScheduling function DH-17851: DH-17861: Unable to copy TreeTable data if selection contains rows after the viewport DH-17416: Fix Console Connection Issue from Grizzly Merge DH-17865: Fix grizzly to sanluis merge DH-17796: Removed @deephaven/console dependency and updated package.json DH-17833: Update @deephaven/eslint-config to v0.95 DH-17797: build: Split out @deephave-enterprise/query-utils npm package DH-17796: build: Github action for publishing alpha npm packages for web DH-16263: Core UI plugins (Grid, Chart, ChartBuilder, Pandas) DH-17797: refactor: Cleaned up query types a bit DH-17425: Split out @deephaven-enterprise/jsapi-types sub package. DH-17679: Fix New Unchanged Dashboards being Saved DH-17425: refactor: Removed DraftQuery dependency from Iris types DH-17699: Remove ts-nocheck from WorkspaceStorage DH-17644: Remove TS No Check from Login DH-17694: Upgrade to Vite 5 DH-17581: Remove TS No Check from AppMainContainer DH-17567: Remove @ts-nocheck from DashboardContainer DH-17425: Split out minimal @deephaven-enterprise/types npm package |
| 044 | Merge updates from 1.20240517.484
|
| 043 | DH-19440: Drop java11 builds in G+ DH-19543: Backport Upgrade to gradle 8 DH-19528: Fix Controller test failure DH-19479: Do not generate DH-format grouping files for parquet merge |
| 042 | Merge updates from 1.20240517.483
|
| 041 | DH-19418: build new gplus VM images to fix rhel8 tests |
| 040 | Merge updates from 1.20240517.481
|
| 039 | DH-19467: Backport DH-18917, avoid shutdown deadlock |
| 038 | Merge updates from 1.20240517.480
|
| 037 | DH-19449: fix csv import unit tests |
| 036 | DH-19347: DIS aggressively removes unused table locations and associated resources DH-19286: Fix j11 build |
| 035 | Merge updates from 1.20240517.477
|
| 034 | DH-19286: Backport Core+ Merge to Grizzly Plus DH-19348: force .header to disk after writing |
| 033 | Merge updates from 1.20240517.473
|
| 032 | DH-18949: Revert makePartitionedTable should use SPT‐provided partitioning columns DH-19369: Update shadow version for gplus |
| 031 | Merge updates from 1.20240517.471
|
| 030 | Merge updates from 1.20240517.470
|
| 029 | Merge updates from 1.20240517.468
|
| 028 | Merge updates from 1.20240517.466
|
| 027 | Merge updates from 1.20240517.461
|
| 026 | Merge updates from 1.20240517.453
|
| 025 | DH-19020: remove inter-grizzly compatibility bridge |
| 024 | Merge updates from 1.20240517.449
|
| 023 | DH-18977: Auth server should not hold client calls when forwarding RPCs |
| 022 | DH-18949: makePartitionedTable should use SPT‐provided partitioning columns |
| 021 | Merge updates from 1.20240517.446
|
| 020 | DH-16905: Add etcd monitoring to Prometheus/Grafana |
| 019 | DH-18662: Update Shadow to for TOML for dependabot |
| 018 | Merge updates from 1.20240517.441
|
| 017 | Merge updates from 1.20240517.437
|
| 016 | Merge updates from 1.20240517.436
|
| 015 | Merge updates from 1.20240517.432
|
| 014 | Merge updates from 1.20240517.425
|
| 013 | Merge updates from 1.20240517.418
|
| 012 | Merge updates from 1.20240517.412
|
| 011 | Merge updates from 1.20240517.402
|
| 010 | DH-18560: Merge common logic from snapshot backed table location types |
| 009 | Merge updates from 1.20240517.399
|
| 008 | DH-18940: Fix previousReleaseBranch for MajorVersionUpgradeTests |
| 007 | Merge updates from 1.20240517.397
|
| 006 | Merge updates from 1.20240517.395
|
| 005 | DH-18167: Fix LivenessStateException with plotly-express |
| 004 | Merge updates from 1.20240517.386
|
| 003 | DH-3262: introduce 'dhconfig <configuration type> edit' commands |
| 002 | Merge updates from 1.20240517.380
|
| 001 | Initial release creation from 1.20240517.379 |
Added support for Java 21 and 25
Deephaven deployments now support Java versions 21 and 25
TimeSeriesFilterGenerator
Core+ workers can now apply a TimeSeriesFilter as part of table ACLs. The
io.deephaven.enterprise.acl.generator.TimeSeriesFilterGenerator is
constructed with three arguments:
- The period as a String (e.g.
PT15m). - The column name to filter.
- Whether to exclude recent values or past values. For example, with a period of PT15m and excludeRecent=true, only data that is 15 minutes or more old is displayed.
For convenience, the AclFilterGenerator.outOfWindow and
AclFilterGenerator.inWindow static methods are provided to include only rows
that are less recent than the specified period or more recent the specified period,
respectively.
If a TimeSeriesFilterGenerator is applied for a user, then they cannot access the table from Legacy workers.
Add Core+ CSV import job
CSV import persistent queries can now be executed in a Core+ worker. Previously, all CSV import job workers were Legacy.
Since legacy workers will not be supported after Grizzly Plus, users are encouraged to migrate their CSV import jobs to Core+ as soon as possible.
Input Table specification updates
io.deephaven.enterprise.inputtables.ColumnSpec
dataType
ColumnSpec has been updated to properly enforce the expected type restrictions. Previously, callers who used
ColumnSpec.Builder.dataType could construct a ColumnSpec with any dataType. Now, ColumnSpec explicitly checks
that dataType is one of:
bytecharshortintlongfloatdoubleBooleanStringInstant
The helper method ColumnSpec.Builder.setDataType, which applies a data type conversion (converts the incoming
dataType from boolean to Boolean, and from non-Boolean boxed primitives to primitives) has been deprecated;
callers are encouraged to migrate to the more explicit method ColumnSpec.Builder.dataType.
enumValues
The requirements for enumValues remains the same: if dataType is a primitive, the enum values must be an instance
of the boxed version of that primitive (for example, if dataType is int, the enumValues instances must be
Integers); if dataType is not a primitive, the enum values must be an instance of the same dataType.
The helper method ColumnSpec.Builder.addToEnumValues, which applies an automatic conversion of incoming values from
BigDecimal to Double, has been deprecated; callers are encouraged to migrate to the more explicit method
ColumnSpec.Builder.addEnumValues or ColumnSpec.Builder.addAllEnumValues.
Core+ Input Table Validation
Core+ Input Tables now validate additions and deletions. In particular, columns created with an enum reject updates containing values that do not belong to the permitted set of values.
Input Table updates and deletions are now validated both for gRPC initiated updates and programatically initiated updates within a worker. Previously, updates initiated within a worker were not validated. The most noticeable change is that in-worker deletion operations now reject invalid key columns. The delete method requires a table argument that contains only key columns; a table with additional columns results in an ArgumentException.
ObjectCodec deprecations
The com.illumon.util.codec.ObjectCodec interface is being deprecated in favor of io.deephaven.util.codec.ObjectCodec.
Any custom codecs that have been written against com.illumon.util.codec.ObjectCodec should be updated to implement
io.deephaven.util.codec.ObjectCodec instead. The interfaces are otherwise identical.
Built-in codec updates
The following codecs have been re-implemented against io.deephaven.util.codec.ObjectCodec, and should otherwise be
identical (see the Notes column for exceptions). While these deprecated codec classes still exist, customers are
encouraged to use the replacement codecs going forward.
| Replacement | Deprecated | Notes |
|---|---|---|
io.deephaven.util.codec.BigDecimalCodec | com.illumon.util.codec.BigDecimalCodec | |
io.deephaven.util.codec.BigDecimalCodec | com.illumon.util.codec.BigDecimalCodec | |
io.deephaven.util.codec.ExternalizableCodec | com.illumon.util.codec.ExternalizableCodec | |
io.deephaven.enterprise.codec.IntArrayCodec | com.illumon.util.codec.IntArrayCodec | |
io.deephaven.util.codec.LocalDateCodec | com.illumon.util.codec.LocalDateCodec | |
io.deephaven.util.codec.LocalTimeCodec | com.illumon.util.codec.LocalTimeCodec | |
io.deephaven.enterprise.codec.LongArrayCodec | com.illumon.util.codec.LongArrayCodec | |
io.deephaven.util.codec.SerializableCodec | com.illumon.util.codec.SerializableCodec | |
io.deephaven.enterprise.codec.StringArrayCodec | com.illumon.util.codec.StringArrayCodec | |
io.deephaven.util.codec.StringBooleanMapCodec | com.illumon.util.codec.StringBooleanMapCodec | The replacement codec can read data written by the deprecated codec, but the deprecated codec can't read data written by the replacement codec. |
io.deephaven.util.codec.StringDoubleMapCodec | com.illumon.util.codec.StringDoubleMapCodec | |
io.deephaven.util.codec.StringFloatMapCodec | com.illumon.util.codec.StringFloatMapCodec | |
io.deephaven.util.codec.StringIntMapCodec | com.illumon.util.codec.StringIntMapCodec | |
io.deephaven.util.codec.StringLongMapCodec | com.illumon.util.codec.StringLongMapCodec | |
io.deephaven.util.codec.StringStringMapCodec | com.illumon.util.codec.StringStringMapCodec | |
io.deephaven.util.codec.UTF8StringAsByteArrayCodec | com.illumon.util.codec.UTF8StringAsByteArrayCodec | |
io.deephaven.util.codec.ZonedDateTimeCodec | com.illumon.util.codec.ZonedDateTimeCodec |
Future release
While the deprecated classes will be removed in a future release, any data written using the deprecated codecs will continue to be readable indefinitely, and new data written from Schemas that reference the deprecated codecs will inherit the replacement codecs automatically.
Schema interface in Core+
Core+ workers are now able to access Schema and SchemaService implementations without the need to directly access shadowed classes.
Class packages changed
A number of classes have changed packages in order to allow non-shadow package access from Core+.
- Sub-interfaces and helper-classes of the Legacy
Schemaare moved toio.deephaven.enterprise.schema.internal, which are included in the shadow jar, but not in a shadowed package. This allows the Core+Schemainterface to use the interfaces/classes "as-is", without using shadow packages. The.internalpackage is likely to change and is intended for Deephaven internal use only. - XML implementations of some interfaces are moved to
io.deephaven.enterprise.schema.xml, which are included in the shadow jar, but not in a shadowed package. This allows the Core+Schemaimplementation(s) to use the objects directly without using shadow packages. The.xmlpackage is likely to change and is intended for Deephaven internal use only. Schemarelated exceptions have been moved toio.deephaven.enterprise.schema.exception, which matches the target package in Sanluis.NamespaceSethas been copied toio.deephaven.enterprise.database, which matches the target package in Sanluis.SchemaConstantshas been safely moved fromcom.illumon.iris.db.tables.dataimporttoio.deephaven.enterprise.schema. A simple wrapper-class has been left atcom.illumon.iris.db.tables.dataimportto prevent Legacy workers from breaking. Core+ workers should preferio.deephaven.enterprise.schema.SchemaConstantsover the shadowed version, which will be removed in Sanluis.- A new
StorageTypeenum is added to Core+, which wraps theDefaultTableDefinition.STORAGETYPE_*constants. This enum should be preferred over using the shadowedDefaultTableDefinition.STORAGETYPE_*constants because the package for the constants will change (no longer be shadowed) in Sanluis.
Changes to data routing filtering
This corrects several errors and ambiguities in how filters were applied to sources in Table Data Services (TDS) and failover groups.
Sources with single elements not honoring filter
If the sources of a TDS had only one value, the filter (if any) on that source was not honored.
When multiple sources are listed (as in source_composite), the filters on the sources were checked.
This creates inconsistent processing, although in most cases the result was the same because the source (incorrectly) queried for table locations would just return an empty set.
Sources without a filter
Sources that are not Data Import Servers or failover groups are now assigned the null filter, instead of the if not claimed filter.
When a source is a Data Import Server or failover group, the filter for that DIS or group is used.
Otherwise, the source is some other delegate TDS, and it was assigned an if not claimed filter. This was an incorrect assumption, because the delegate TDS might actually handle a claimed table.
Failover groups
Ad hoc failover groups are now assigned the correct filter for the group members (which must all be identical), instead of the if not claimed filter.
A failover group defines multiple DISes that process the same data and can serve as backups to each other.
You can create a failover group using the failoverGroup keyword in each member DIS configuration. This creates a TDS for the group that you can use in the data routing configuration.
You can also define a failover group inline in the sources of a TDS by listing the member names in a list.
Deephaven recommends explicit configuration using the failoverGroup keyword to define the group and create a TDS with the given name.
See The dataImportServers keyword for some important caveats when using ad hoc failover groups.
Simplify of default tailer config file, tailerConfigDbInternal.xml
The Tailer process is configured with an XML file described in Tailer XML configuration files. The default tailer configuration file
is /usr/illumon/latest/etc/tailerConfigDbInternal.xml. In current installations, binary log files are named in a standard way,
and the StandardBinaryLogFileManager class is sufficient for managing them.
This change simplifies the default tailer configuration file and removes a complex configuration section that is largely obsolete.
The new file contains:
The original file contained:
Custom gRPC-web transport for Deephaven JS API
The createClient function in the clientUtils module in auth-nodejs now supports a ConnectOptions object that
allows customization of the gRPC-web transport used by the Deephaven JS API client. See TypeScript definitions for
details on how to create a custom transport.
Additionally, the clientUtils module in auth-nodejs no longer exports a getWsUrl function. This function should
no longer be necessary when using dh.Client, and URL will always be rewritten to use the correct protocol and path
as needed.
One Artifact Supports All Java Versions
In previous versions of Deephaven, there was a different set of product tar files for each supported JDK.
Starting in versions 1.20231218.550 and 1.20240517.527, there is only one set of artifacts to support all JDK versions.
The mechanisms for selecting your JDK, such as DH_JAVA_VERSION in cluster.cnf or --jdk* flags passed to containerized deployments, remain unchanged.
The Enterprise installer and Core+ tar files no longer have a -jdkN classifier.
For example, deephaven-enterprise-1.20231212.123-jdk17.tar.gz is now deephaven-enterprise-1.20231212.123.tar.gz.
The Enterprise rpm no longer has the jdk major version as deephaven-enterprise minor version; the minor version is always 1.
For example, deephaven-enterprise-1.20231212.123-17-1.rpm is now deephaven-enterprise-1.20231212.123-1-1.rpm.
The Core+ tar file has removed its jdkN classifier.
For example, deephaven-coreplus-0.32.0-1.20231212.123-jdk17.tgz is now deephaven-coreplus-0.32.0-1.20231212.123.tgz.
Note that ONLY the filenames and RPM package name have changed. All paths on the filesystem still reflect previous locations.
Rename core+ artifacts to use io.deephaven.coreplus maven groupId
Previously, Core+ artifacts were published as io.deephaven.dnd in Deephaven maven repositories.
These artifacts now use io.deephaven.coreplus for their groupId.
Fix Core+ mis-decoding of certain String and StringSet values
Previously, Core+ reading of Deephaven-format Table data would assume all String and StringSet columns were encoded using ISO-8859-1; this is an issue for encoded characters that aren't the same as in ISO-8859-1. All encodings should now decode correctly.
The issue would manifest differently depending on the character set / encoding:
ASCII
Corresponds to Schema Column with attribute encoding="US_ASCII".
No issues. (ASCII is a subset of ISO-8859-1.)
ISO-8559-1 (also known as Latin-1)
Corresponds to Schema Column with attribute encoding="ISO_8559_1", or a Schema column without the encoding attribute.
No issues.
UTF-8
Corresponds to Schema Column with attribute encoding="UTF_8".
All UTF-8 single-byte characters (ASCII) will decode correctly. All other characters would have decoded incorrectly.
UTF-16
Corresponds to Schema Column with attribute encoding="UTF_16", encoding="UTF_16LE", or encoding="UTF_16BE".
All UTF-16 characters would have decoded incorrectly.
Column Expression Validation
Column expression validation now uses the parsed validator by default, which provides more precise control over which methods users may invoke.
See Formula validation configuration for more details.
HTTP/2 support in Deephaven
The Grizzly Plus version of Deephaven now supports HTTP/2 for all web connections. This requires TLS, and Envoy requires a configuration change to allow WebSocket connections to continue to work.
HTTP+TLS required for all Deephaven web connections
All Deephaven servers now require TLS for web connections. This was already enabled by default in previous versions, except for the DIS.
Change to Envoy configuration to allow HTTP/2 CONNECT method
Deephaven now uses HTTP2 instead of HTTP/1.1 for its web connections. In order to support WebSocket connections over HTTP/2, the Envoy configuration needs to support the CONNECT method.
This change can be applied to the default Envoy configuration of earlier Deephaven versions:
Exception thrown if FileHandle key changes
A safety check has been added for whenever a FileHandle is refreshed to ensure it represents the same physical file as it did previously. When this is not the case, it can lead to very hard to debug downstream issues.
This check is enabled by default. In order to revert to previous behavior, the following flag may be added to a query's configuration:
Core+ Validation Queries
Validation Jobs may now be executed in a Core+ worker. Previously, all Validation Job workers were Legacy. Schema-based Validation queries should migrate seamlessly.
There are a number of steps required to convert custom a Legacy Validation class to a Core+ Validation class.
- A number of supporting classes have changed package-path from
com.illumon.iris.validationtoio.deephaven.enterprise.validation, including:DataQualityTestCaseValidationTableDescriptionImportDetailsUtils- ...
- The following Deephaven classes have changed from Legacy to Core+, which may require a number of changes each. See Converting Legacy scripts to Core+ Scripts Cheat Sheet for a more in-depth analysis.
Databasedb.i(...)->db.liveTable(...)db.t(...)->db.historicalTable(...)
Table- Numerous changes
TableDefinition- Please note that the Core+
TableDefinitiondoes not include grouping information. Grouping information may still be accessed from theSchemaor from the shadowedTableDefinitionprovided by theSchema.
- Please note that the Core+
com.fishlib.io.logger.DelegatingLoggerImplmay be replaced withio.deephaven.internal.log.LoggerFactory.getLogger()- The
ValidationTableDescriptionhas been modified to removeFullTableLocationKeyimplementation details. ThegetLocation()method has been replaced with a self-reference to theValidationTableDescriptioninstance in order to simplify the porting process. The following new methods have been added to theValidationTableDescriptioninterface:String getTableName()- the Table Name for the associatedTableString getNamespace()- the Namespace for the associatedTableString getColumnPartition()- the Partition Value (for the Partition Column) for the associatedTableString getInternalPartition()- the Internal Partition, if applicable, for the associatedTable
Note that RunDataQualityTests#main is not ported. In effect, this disables the RunDataQualityTests command-line utility for Core+ validations. All Core+ validations should be executed in a Data Validation PQ .
On-Demand Asynchronous Cleanup of the DataBufferPool
The AutoReclaimingObjectPool (DataBufferPool) now triggers asynchronous cleanup as soon as the pool occupancy
exceeds the configured threshold, rather than waiting for the next scheduled interval. Consequently, the synchronous
cleanup path—logged as "Failed to take() an item for thread=<thread name>, initiating synchronous cleanup"—is invoked
far less often.
Because of this, the DataBufferConfiguration.cleanupIntervalMillis setting has become largely irrelevant and may be
removed in a future release.
Improved support for Iceberg tables in Core+
Core+ has better support for reading Iceberg tables as historical tables. This includes correctly handling Iceberg Schema evolution, nested Iceberg Structs, and proper field id mapping into Parquet files.
Configuration
Iceberg-specific configuration options is out-of-scope for release notes, as they are highly dependent on the specifics of the Iceberg Catalog and data storage setup. In general, Deephaven has good support for the "rest" and "glue" catalog types, but should support other Catalog implementations as well. The Iceberg-specific configurations options that work with Deephaven will be similar to the configuration options needed for Spark (given that Spark is also a JVM-based application). See the Iceberg Documentation, or the documentation for your specific Catalog, for configuration property details.
Verification:
Deployment
Verification:
Tailer cleanup of old binary log files
A new property, log.tailer.fileCleanup.startupDeletionCutoffTime, allows the tailer to find and delete old binary log files when it starts. Further information can be found in the tailer configuration page.
Improved Binary Logger and Listener Generation
Previously, to generate Java binary loggers from Deephaven schema, the
IntradayLoggerFactory was the preferred tool. In this release, we have
introduced a new binary logger factory that generates much improved logging
classes that can operate more independently of the Deephaven system and with
far fewer Java-level dependencies. The existing IntradayLoggerFactory
continues to generate loggers and listeners for schema elements that are
labelled Logger or LoggerListener. The new factory uses LogFormat
elements.
See binary Log format configuration for more details.
Deprecated Features and Java Changes
The com.illumon.iris.binarystore.RollingFileManagerBase.ExistingFilePolicy values for DELETE and APPEND, which
were deprecated in 2018, have been removed from this release.
The com.illumon.iris.binarystore.RollingFileManagerBase provides the same functionality, but custom extensions must
now provide template parameters for the expiration type.
New API to format the log-format suffix of internal partitions
A new builder method IntradayLoggerBuilder#setSuffixInternalPartitionWithLogFormat(String) has been added that lets caller provide a single-argument String.format pattern. The formatted log-format value is appended to the internal-partition name.
This overloads the existing IntradayLoggerBuilder#setSuffixInternalPartitionWithLogFormat(boolean) which, when true, appends the suffix using the default %d pattern.
Example:
For internal partition "ABC" and log-format version 4:
- For
setSuffixInternalPartitionWithLogFormat(true), the actual partition used would beABC-4 - For
setSuffixInternalPartitionWithLogFormat("%02d"), the actual partition used would beABC-04
Enabled several HTTP security headers by default
Previously, when used with Envoy, Deephaven had several optional HTTP security headers configured, but left disabled. These defaults are now also available without Envoy, and additionally, some of them are on by default.
Configuration properties prefixed with envoy.add.header. will be set on outgoing
responses from Envoy, while http.add.header. will be set on outgoing responses from
the server itself, regardless of whether Envoy is used or not.
The following headers are now enabled by default:
X-XSS-Protection: 1; mode=block- Enables the Cross-Site Scripting (XSS) filter built into some browsers.X-Content-Type-Options: nosniff- Prevents the browser from MIME-sniffing a response away from the declared content-type, but instead requires that the server deliberately set a content type.Refer-Policy: no-referrer- Disables sending anyRefererheaders.Cross-Origin-Resource-Policy: same-origin- Restricts the ability of a document to load 'no-cors' resources from other origins.Cross-Origin-Embedder-Policy: require-corp- Limits embedding cross origin resources into the document.Cross-Origin-Opener-Policy: same-origin- Prevents cross-origin documents from being able to interact with pages.
Optional limit on appendLiveTable table size
WritableDatabase.appendLiveTable(...) sends the given table to the Log Aggregator Service as an atomic update. A large enough table can cause the LAS to run out of memory.
You can now set a maximum table size (number of rows) that will be accepted by the appendLiveTable call, by setting the optional property LogAggregatorService.transactionLimit.rows.
This check only looks at the number of rows and does not take the number of columns or actual data size into account.
Combined Jars for Core+ clients
Combined jars are now available for Core+ clients allowing you to use a single jar for client applications. The Legacy Core+ client jar is deephaven-ent-client-combined-<version>.jar and the Core+ Client combined jar is deephaven-coreplus-client-combined-<version>.jar
Data Import Server aggressively releases unused resources
The Data Import Server (DIS) now aggressively releases resources that are no longer in use. This change eliminates the slow accumulation of resources that could result from ingesting data over many days.
The DIS serves two functions: ingesting data from tailers, and serving intraday data to queries. When a tailer disconnects (e.g. when it finishes a day's data) and when the last subscriber to a location unsubscribes or disconnects, the relevant table locations are dropped when unused.
New information added to the DIS Web Server
The Data Import Server's web server now includes summary information about the table locations in the active set.
Backport Core+ Merge to Grizzly Plus
Merge Jobs may now be executed in a Core+ worker. Previously, all Merge Job workers were Legacy. The following tickets were backported;
- DH-17611: Write to DH format from Core+ with Core chunks
- DH-17680: Port Merge PQ to Core+ Engine (builder)
- DH-18060: Add Core+ option to Engine drop-down for Merge PQs
- DH-18377: Specify Merge_1 instead of AutoMerge for Core+ Kafka integration tests
- DH-18531: Performance updates for Core+ Merge Jobs
- DH-18463: Add sort formula handling to Core+ MergeJob
- DH-18763: Fix Kafka integration-test failure
Directly create Core AclFilterGenerator for Database ACLs
Previously, the row and column ACLs applied to tables retrieved from a Database must have implemented the FilterGenerator interface, which produces Legacy filters. Optionally, the FilterGenerator can provide a Core filter generator using the getCommunityFilterGenerator method. This means that to build a Core+ AclFilterGenerator for source tables, you must create a corresponding Legacy FilterGenerator.
You can now provide a Core+ AclFilterGenerator directly in the ACL editor. In Core+ workers, the generated Core WhereFilter is applied to the returned table without the need to instantiate a Legacy FilterGenerator.
In a Legacy worker, an error occurs applying the ACL (typically a compilation error). If the user has no other ACLs defined, the table will not accessible. The tables with Core+ filters are not visible in the catalog table if the acl.filter.namespaces or acl.filter.tables Configuration properties are set to true.
The order that ACLs for different groups are generated is not guaranteed, and the user receives a union of the permissions across all their groups with defined ACLs. Therefore, you cannot depend on the existence of a Core+ filter generator to deny access to a table. If an all-access ACL for another of the user's group is processed first, then no other ACLs are processed and the table will be accessible. When evaluating catalog filtering, the system can short circuit evaluation after the first successful ACL application. Similarly, the existence of an another ACL does not ensure access to the table -- if the Core+ AclFilterGenerator fails to compile before another ACL is processed the table is inaccessible.
Removed Jupyter Notebook integration
Server side Jupyter Notebook integration has been removed from Deephaven. The Legacy worker Jupyter Notebook is no longer supported and will not be updated. Use the Deephaven Core+ Python client from Jupyter notebooks beginning in Deephaven 1.20231218 and later.
Optional limit on appendCentral table size (client side)
Database.appendCentral(...) sends the given table to the Log Aggregator Service as an atomic update. A large enough table can cause the LAS to run out of memory.
You can now set a maximum table size (number of rows) that will be accepted by the appendCentral call, by setting the optional property LogAggregatorService.transactionLimit.rows.
This check only looks at the number of rows and does not take the number of columns into account. Zero or unset means no limit is enforced.
To make updates larger than the configured limit, either break the table into smaller pieces, or use the RemoteTableAppender directly to make a non-atomic update:
See also Optional server-side limit on appendCentral table size for related server-side changes.
Optional limit on appendCentral table size (server side)
Database.appendCentral(...) and RemoteTableAppender.appendAtomic(...) calls send the given table to the Log Aggregator Service as an atomic update. A large enough table can cause the LAS to run out of memory.
You can now set a maximum table size (number of rows or number of bytes) that will be accepted by the Log Aggregator, by setting the optional properties
LogAggregatorService.transactionLimit.rows or LogAggregatorService.transactionLimit.bytes. Zero or unset means no limit is enforced. When the Log Aggregator accumulates more rows or more bytes in a transaction than the configured limit, it will abort the transaction and release the accumulated memory. The client will get an error.
To make updates larger than the configured limit, either break the table into smaller pieces, or use the RemoteTableAppender directly to make a non-atomic update:
See also Optional client-side limit on appendCentral table size for related client-side changes.
Ensure partitioned user table additions and deletions are reflected in future historical table calls
The following code block documents the expected behavior for partitioned user table with additions and deletions:
This reflection of this change is specific to the worker where these deleteTablePartition, addTablePartition calls
were made. Other processes that have previously read this historical table may retain the previous behavior (that is,
calls to historicalTable may not reflect the newly added partitions).
Note, the previous empty location caching behavior could also be exhibited without using db.deleteTablePartition, as
illustrated by the following script:
Automatic Server Selection
Automated server-selection is now turned on by default on new non-Kubernetes installations. To turn it off or change the defaults, edit your iris-environment.prop file and remove or edit the properties from the iris_controller stanza, as described in automated server selection.
Changes to tailer process memory requirements
Tailer now uses constrained and pre-allocated buffer pools for both User and System tables
With default configuration, the tailer now uses constrained and pre-allocated buffer pools for sending data to Data Import Servers. This makes the tailer's memory consumption more predictable, and avoids potential out-of-memory conditions. There are separate pools for User and System tables, governed by the following properties:
| Property | Default | Description |
|---|---|---|
DataContent.userPoolCapacity | 128 | The maximum number of User table locations that will be processed concurrently. If more locations are created at the same time, the processing is serialized. |
DataContent.producerBufferSize.user | 256 * 1024 | The size in bytes of the buffers used to read and send data for User table locations. |
DataContent.disableUserPool | false | If true, user table locations are processed without a constrained pool, in which case user actions can consume unbounded tailer resources. |
DataContent.systemPoolCapacity | 128 | The maximum number of System table locations that will be processed concurrently. If more locations are created at the same time, the processing is serialized. |
DataContent.producerBufferSize | 256 * 1024 | The size in bytes of the buffers used to read and send data for System table locations. |
DataContent.disableSystemPool | false | Disable the system pool, which results in an unconstrained number of buffers being used in the tailer. |
DataContent.producersUseDirectBuffers | true | Producers (the tailer) use a direct buffer for reading and sending data. |
The tailer allocates two pools of buffers, one for user tables and one for system tables. Each item in that pool requires two buffers for concurrency, so the memory required will be double the buffer size times the pool capacity.
Total direct memory required for the tailer is approximately 2 * (DataContent.producerBufferSize * DataContent.systemPoolCapacity + DataContent.producerBufferSize.user * DataContent.userPoolCapacity).
Tailer now adjusts to DIS buffer size
When the tailer establishes a connection to a DIS, the processes now exchange configuration information. If the tailer is configured with a larger maximum message size than the DIS can accept, it will reduce it's maximum message size to match the DIS.
Change configuration to handle older tailers sending data to newer Data Import Servers
This section applies only to environments using default configuration values, and where tailers are outside the Deephaven system, either tailing from external systems or from different Deephaven installations. In this scenario, the tailer may send messages that are too large for the DIS to accept.
Older tailers do not accommodate to DIS settings, and may have default configuration settings that allow them to send larger messages than a DIS with default configuration can accept. This typically only happens when the tailer gets behind, or otherwise has file to process with more than 327,710 bytes.
When this happens, the DIS will reject the tailer with a message like:
A similar message might appear in the tailer log.
When an old tailer sends data to a new DIS, the DIS will log a warning like this:
If your environment includes older tailers that send data to current DISes, you should make one of the following configuration changes:
- update the tailers to the current Deephaven version
- update the tailer configurations to set the max message size, by setting the following properties in the tailer configuration or properties file:
- update the DIS max message size to match the tailer max message size by setting the following properties in the DIS configuration or properties file:
Note
The default max messages size from the tailer is reduced as of 20240517.262. Tailers respond to DIS configuration settings as of 20240517.403.
Database.inputTableUpdater improvements
The Database.inputTableUpdater method has been updated to return a new, more general interface
io.deephaven.enterprise.database.inputtables.InputTableUpdater, which allows callers to have more control over table
lineage with input tables. The InputTableUpdater can also be explicitly managed with a liveness scope, and is also
now more efficient in caching intermediate operations.
When sourcing both an InputTableUpdater and an input Table view from db, the resulting objects may not share a
common lineage:
With the new interface, callers can explicitly derive the corresponding input Table view from the InputTableUpdater:
Note, the python layer does not currently expose a stand-alone equivalent of InputTableUpdater;
an input Table view must be created, and in that context, table lineage is already guaranteed.