Release notes#
The releases of Hopsworks 5.0, newest first.
5.0.14#
Helm chart 5.0.14 · Released on 2026-10-16 · Changes since 5.0.13 · Python client 5.0.10
What's changed#
- API FRONTEND Fixed queued project and member operations, such as Superset access changes, failing for good after 68 attempts, for project Observers, or when removing a member's Superset user; a failing operation now retries once a day.
- API Changed Spark engine reads of a feature view whose feature groups all come from one Snowflake data source to run the whole query, point-in-time joins included, in Snowflake instead of reading each feature group in full.
- API FRONTEND Added key pair authentication to DLT ingestion from Snowflake, which accounts that enforce MFA need (Snowflake data source).
- API Fixed reads of external feature groups failing on chained point-in-time joins, on joins with a prefix or extra primary keys, and, in the Python engine, when they leave out a feature appended to the feature group.
- API Fixed external Spark clients failing to read, write or delete DELTA feature groups when the HopsFS NameNode and DataNode load balancers are disabled.
- API Fixed the Python client installing pyarrow 26 next to NumPy 1, with which importing
hsfs.feature_groupfails withpyarrow requires NumPy 2.0 or newer; it now requires pyarrow below 26. - API FRONTEND Fixed Trino giving a project access to only one of several feature stores shared with it.
- API FRONTEND Fixed a new project that reuses the name of a project still being deleted losing its members' Trino and Superset access and its dataset shares when the old project's delete ran.
- API FRONTEND Fixed Git operations failing with an I/O error when a Git provider proxy is set on a cluster with HopsFS encryption at rest.
- API FRONTEND Fixed a killed Spark job with pending executors staying in the aggregating logs state for up to 20 minutes.
- API Fixed
SnowflakeConnector.connector_options()in the Python client failing for a data source with key pair authentication, and leaving out the role set on the data source. - API Fixed Snowflake reads through the Hopsworks Query Service, such as Python engine reads, using the Snowflake user's default role instead of the role set on the data source.
- API FRONTEND Fixed DLT ingestion rejecting a load whose decimal values are narrower than the precision of the source column.
- FRONTEND Added a Stop button to the SQL Runner, and leaving the SQL Runner now stops the running query; the run status shows the elapsed time and the rows the query engine processed.
- FRONTEND Changed the SQL Runner layout: the results fill the panel with row numbers and column types, the Explorer lists a table's columns, autocomplete completes the statement at the cursor,
EXPLAINplans render as JSON or a graph, and long plans and table definitions scroll instead of overflowing. - FRONTEND Fixed dialogs, drawers and menus opened from a table row closing by themselves on the Git, model deployment, alert receiver and feature monitoring pages, and the Git Status drawer never opening.
- HELM Fixed RonDB daemons ignoring SIGTERM, so every pod stop ended in a kill and a stopped data node could stall the cluster.
- HELM Changed the RonDB REST server probes to use their own port, which keeps answering while a stalled data node blocks requests.
- HELM Fixed the RonDB REST server reading request bodies over 64 KiB as empty.
- Addressed vulnerabilities in the Payara, Hopsworks, Hopsworks CA, Hive Metastore, remote shuffle service, Spark operator, Filebeat, Logstash, Grafana, OpenSearch Dashboards and Superset images, in the MySQL and Redis of Superset, and in the Hopsworks server dependencies.
- Fixed HopsFS staying in safe mode after all NameNodes restarted, a NameNode restart occasionally marking every block as corrupt, and NameNodes running out of file descriptors when many blocks are corrupt.
Breaking changes#
- API FRONTEND Because of a security fix, Data Scientists ask the creator of a job or a Data Owner of the project to change it, other than its schedule.
- HELM The chart no longer turns on Trino's MySQL event listener, which crash-looped the Trino coordinator after a MySQL server restart, so the Trino query history stops recording queries. To keep it, add the listener to your values as the chart's
README.mdshows; recorded queries now lose their text and plan afterhopsworks.variables.trino_events_strip_details_after_days, from the first nightly cleanup, so set it to61or more to keep them. - HELM If your values restate
trino.trino.additionalConfigPropertieswith itsevent-listener.config-filesentry, which the 5.0.13 chart set by default, remove that entry or add the listener files as the chart'sREADME.mdshows, or Trino doesn't start. - HELM The RonDB REST server now uses a probe port and an upload path that need RonDB 26.02.11, instead of probing its REST port with no upload path. If you pin
rondb.rondb.images.rondb.tagto an older version, setrondb.rondb.rdrs.probePort.enabled: falseandrondb.rondb.rdrs.uploadPath: "", or the REST server doesn't start.
Upgraded components#
| Component | 5.0.13 | 5.0.14 |
|---|---|---|
| Base environment images | 5.0.10 | 5.0.11 |
| Filebeat | 8.19.20 | 8.19.23 |
| Git image | 1.4.4 | 1.4.5 |
| Grafana | 10.2.2-h7 | 10.2.2-h7.1 |
| Hive Metastore | 3.0.0.14.7-v1 | 3.0.0.14.7-v2 |
| HopsFS | 3.4.3.1-EE-RC5 | 3.4.3.1-EE-RC6 |
| Logstash | 7.17.9.5 | 7.17.9.6 |
| OpenSearch Dashboards | 1.3.6.7 | 1.3.6.8 |
| Payara | 6.2024.12-jdk17.8 | 6.2024.12-jdk17.8.1 |
| Remote shuffle service (Apache Uniffle) | 0.10.8.1 | 0.10.8.2 |
| RonDB | 26.02.10 | 26.02.11 |
| Spark operator | 2.2.1-h4 | 2.2.1-h6 |
| Superset | 6.0.0p3.4 | 6.0.0p3.5 |
| Superset init image | dockerize | 0.14.0-alpine-h1.1 |
| Superset MySQL | 8.4.5-debian-12-r0-h3 (MySQL 8.4.11) | 8.4.11-ubuntu24.04-h5 |
| Superset MySQL metrics exporter | 0.17.2-debian-12-r7 | 0.20.0-alpine-h1.1 |
| Superset MySQL volume permissions image | 12-debian-12-r43 | 12-alpine-h1.1 |
| Superset Redis | 7.4.9-bookworm | 7.4.11-alpine-h2 |
| Superset Redis metrics exporter | 1.50.0-debian-11-r1 | 1.90.0-alpine-h1.1 |
| Trino | 480.1-v1 | 480.1-v2 |
Configuration changes#
- HELM Removed the MySQL event listener from the default
trino.trino.additionalConfigPropertiesand fromtrino.trino.coordinator.additionalConfigFilesandtrino.trino.worker.additionalConfigFiles. - HELM Changed
rondb.rondb.terminationGracePeriodSecondsto one value per component, 300 seconds forndbmtdsinstead of 60, and 30 for the others; a plain number still sets the data nodes only. - HELM Added
hopsworks.variables.trino_events_strip_details_after_days(default7) and changed the defaulthopsworks.variables.trino_events_cleaner_batch_sizeto100. - HELM Changed the Superset init image to its own
superset/dockerizerepository, also invalues.airgap.yaml; if you overridesuperset.superset.initImage.repository, point it at a mirror of that image. - HELM Fixed
values.openshift.yamlfor the OpenShiftrestricted-v2SCC, covering Strimzi, Kafka, ZooKeeper, the Spark operator, Trino, Prometheus and the MySQL and Redis of Superset; it also turns off the Prometheus node exporter, which OpenShift ships itself. Use it with Helm 4 or Helm 3.17.1 or later, because older Helm 3 releases can ignore itsnulloverrides of subchart values. - HELM Added
rondb.rondb.rdrs.probePort, the port of the RonDB REST server probes,rondb.rondb.rdrs.uploadPath, where it buffers request bodies over 64 KiB, androndb.rondb.rdrs.maxKeepaliveRequeststo rebalance client connections after a rolling restart. - HELM Added
rondb.rondb.rdrs.ttlPurge.enableandactiveWindowto turn off the TTL purge of the RonDB REST server or limit it to a daily window.
Python client#
The release notes of hopsworks-api 5.0.10.
5.0.13#
Helm chart 5.0.13 · Released on 2026-09-28 · Changes since 5.0.12 · Python client 5.0.9, unchanged
What's changed#
- API Fixed offline reads of a feature view or query that includes a spine group failing with an HTTP 500 error.
- HELM Fixed the Airflow migration Job losing tables on clusters with more than one RonDB MySQL server, so the upgrade never completed; it now uses only the DDL MySQL server. A cluster whose earlier upgrade already failed this way needs the Airflow schema dropped on every MySQL server before it upgrades again.
- HELM Fixed OnlineFS upgrades stalling on a full node pool: with two or more
onlinefs.deployment.replicas, a rollout now replaces one pod at a time. - HELM Changed the RonDB REST server probes to outlast a data node failure.
- HELM Fixed the OpenSearch metrics exporter reporting the parent cluster on a satellite deployment, and missing OpenSearch with a custom
global._hopsworks.consulDomainName.
Breaking changes#
- HELM The Airflow migration Job now waits for the DDL MySQL server, instead of any MySQL server, so the upgrade hangs with
rondb.rondb.meta.ddlMySQLd.enabled: false. Keep it enabled if you use Airflow. - HELM Removed the Kafka quota defaults Job, which applied
kafka.cluster.kafka.quotas.defaultsto each client, so it is ignored withtype: strimzi, and fails the render withtype: kafkawhenenabledistrue. If you set it, move your limits tokafka.cluster.kafka.quotas.strimziorkafka.cluster.kafka.quotas.kafka, with new numbers: thestrimzirates are a total per broker, shared by all clients. - HELM
quotason a user inkafka.usersnow fail the render under the defaultstrimziplugin, which never enforced them. Remove them, or setkafka.cluster.kafka.quotas.type: kafka,kafka.cluster.kafka.quotas.minAvailableRatioPerVolume: 0andkafka.cluster.kafka.authorizer.principalBuilderClass: ""to enforce them.
Deprecations#
- HELM Deprecated
kafka.cluster.kafka.quotas.defaults, which is no longer honoured; see the breaking changes above.
Configuration changes#
- HELM Added
kafka.cluster.kafka.quotas.typeto choose the Kafka quota plugin:strimzi(the default), set underkafka.cluster.kafka.quotas.strimzi, orkafka, which enforces per-user quotas fromkafka.users[].quotasand defaults fromkafka.cluster.kafka.quotas.kafka.kafkaalso needskafka.cluster.kafka.quotas.minAvailableRatioPerVolume: 0, per-user quotas needkafka.cluster.kafka.authorizer.principalBuilderClass: "", which changes how ACLs andsuperUsersmatch principals, and none of these settings take effect on clusters first installed on Hopsworks 4.3 or 4.5. - HELM Added
airflow.dependencies.mysql.ddlConsulServiceName(defaultmysqlddl), the DDL MySQL server the Airflow migration Job connects to. - HELM Added
onlinefs.deployment.strategyto set the rollout strategy of OnlineFS. - HELM Added
rondb.rondb.rdrs.probesto configure the RonDB REST server probes.
Python client#
The Python client is unchanged, 5.0.9.
5.0.12#
Helm chart 5.0.12 · Released on 2026-09-21 · Changes since 5.0.11 · Python client 5.0.9 (5.0.8, 5.0.9)
What's changed#
- API Fixed the Python client installing PyMySQL 1.2.1 or later, with which
import hsfsfails with anImportError; it now requires PyMySQL below 1.2.1. - API FRONTEND Added Driver overhead factor and Executor overhead factor to the Spark configuration of jobs, Jupyter and project defaults, which set
spark.driver.memoryOverheadFactorandspark.executor.memoryOverheadFactor, also asdriver_memory_overhead_factorandexecutor_memory_overhead_factorofJobConfigurationin the Python client (PySpark jobs). Jupyter Spark sessions now default both to0.4, as PySpark jobs do, so notebooks and their executors request more memory than before. - FRONTEND Added a Monitor button to each running Spark application on the Jupyter page, showing its driver and executor pods, and fixed the Jupyter server monitor showing a Spark executor as the notebook pod; the Grafana link there and in the job drawer menu is now called Metrics.
- HELM Fixed service logs being dropped from the
.servicesOpenSearch index when Kubernetes labels pushed it past 1000 fields. - HELM Changed the memory split of the remote shuffle servers to stop heap out-of-memory crashes: 20% of
spark.rss.shuffleServer.resources.limits.memoryis reserved for native memory and the rest is split 25% heap, 75% off-heap. - HELM Fixed the remote shuffle servers never receiving their off-heap memory setting, which left their buffers about nine times too small.
Breaking changes#
- HELM Removed
hopsworks.variables.jupyter_spark_driver_memory_overhead_factor, added in 5.0.10; the driver memory overhead of a notebook now comes from its Spark configuration. Remove it from your values before you upgrade, because the values schema rejects it; with--reuse-values, which keeps the old default, use--reset-then-reuse-values. - HELM Filebeat now keeps only the Kubernetes labels listed under
olk.filebeat.kubernetesMetadata, and theserviceLabelKeyof eacholk.logstash.extendServicesPipelineentry, on service logs, instead of every pod label. Add any other label you filter on toolk.filebeat.kubernetesMetadata.extraPodLabels,extraNamespaceLabelsorextraNodeLabels; an overriddenolk.filebeat.logs_locationskeeps its ownadd_kubernetes_metadataprocessor and every label, so to get the fix setaddKubernetesMetadata: trueon each entry and drop that processor.
Upgraded components#
| Component | 5.0.11 | 5.0.12 |
|---|---|---|
| Base environment images | 5.0.9 | 5.0.10 |
Configuration changes#
- HELM Changed the default
spark.rss.shuffleServer.bufferCapacityRatioto0.6andspark.rss.shuffleServer.resources.limits.cputo2000m. - HELM Removed
hopsworks.variables.jupyter_spark_driver_memory_overhead_factor, the driver memory overhead of Jupyter servers in Spark environments, which now comes from the notebook's Spark configuration. - HELM Added
olk.filebeat.kubernetesMetadata, the pod, namespace and node labels Filebeat keeps on service logs (extraPodLabels,extraNamespaceLabels,extraNodeLabelsfor your own), andaddKubernetesMetadataon eacholk.filebeat.logs_locationsentry.
Python client#
5.0.11#
Helm chart 5.0.11 · Released on 2026-09-16 · Changes since 5.0.10 · Python client 5.0.7, unchanged
What's changed#
- HELM Fixed RonDB data nodes reporting ready while the management server is unreachable, which let a rollout stop the healthy data node of the same node group and shut the cluster down; their liveness probe also no longer kills them then.
- HELM Fixed RonDB rolling restarts making healthy data nodes shut down; data nodes now wait for the rollout to settle (
rondb.rondb.ndbmtdSettleWait). - HELM Fixed the RonDB MySQL setup and in-place restore Jobs failing for good when data nodes took more than about two hours to start, and the MySQL servers crash-looping while they wait for a backup restore.
- HELM Changed the Kafka Entity Operator, when
kafka.cluster.entityOperatoris set, to follow the tolerations, topology spread and node affinity of the Kafka brokers, unless set underkafka.cluster.entityOperator.template.pod.
Upgraded components#
| Component | 5.0.10 | 5.0.11 |
|---|---|---|
| RonDB | 26.02.9 | 26.02.10 |
Configuration changes#
- HELM Changed
rondb.rondb.timeoutsMinutes.ndbmtdStartupProbeto 240 minutes, from 120, so data nodes that take over two hours to reload aren't restarted in a loop. - HELM Fixed users added to
rondb.rondb.mysql.usersafter the install never being created, and users with privileges on a single database or table failing; every upgrade now creates the listed users. - HELM Added
rondb.rondb.mysql.users[].existingSecretto read the password of a MySQL user from your own Secret.
Python client#
The Python client is unchanged, 5.0.7.
5.0.10#
Helm chart 5.0.10 · Released on 2026-09-11 · Changes since 5.0.9 · Python client 5.0.7
What's changed#
- API FRONTEND Addressed vulnerabilities in project datasets.
- API FRONTEND Added the GitHub Copilot and OpenCode CLIs to the web terminal, next to Claude Code and Codex; the coding agents share the skills in your home directory, which
hops skills listnow lists, and keep their logins and sessions across terminal sessions. - API FRONTEND Added GitHub Copilot as a provider of agent tasks, signed in with the token of a GitHub AI provider or of your github.com Git provider, which can't be a classic personal access token.
- API Changed
GET /project/{id}/jupyter/runningto return204 No Contentinstead of404when no Jupyter server is running. - API Fixed writes to an online feature group failing after its table was truncated.
- API FRONTEND Fixed Git operations failing to authenticate when a provider token or password contains special characters. The upgrade converts the saved credentials; if a provider still fails, save it again in your account settings.
- API Fixed creating an agent task with
JobApi.create_jobin the Python client failing with'appPath' not set in job configuration. - API FRONTEND Fixed agent tasks that run at the same time failing to sign in to Claude Code, because they shared one credentials file.
- FRONTEND Fixed uploading files in the file browser deleting the files of the previous upload unless the page was reloaded.
- FRONTEND HELM Fixed the Jupyter server of Spark environments running out of memory: it now adds an overhead (
hopsworks.variables.jupyter_spark_driver_memory_overhead_factor) and a floor (jupyter_spark_notebook_server_memory_floor_mb) to the driver memory. - FRONTEND Fixed
kubectlfailing in every web terminal, because terminals never got a kubeconfig. - FRONTEND Fixed the project home page crashing with "Something went wrong while loading this page" because of the Feature usage card.
- FRONTEND Added a Copilot tab and a Business Glossary for each coding agent to the Agents page of the cluster settings, now called Coding Agents.
- FRONTEND Added the status of the TTL purge of online feature groups: a TTL purge card on the feature group overview and a TTL Purge page in the cluster settings.
- FRONTEND Added a read-only
featurestoredirectory to the web terminal with the files of the project's offline feature store. - FRONTEND Fixed Spark executors started from Jupyter having no CPU limit and rounding fractional executor cores up to a whole core; they now get the executor cores of the session as request and limit, as job executors do.
- FRONTEND Fixed creating or editing a BigQuery data source failing with a gRPC error when the form lists the GCP projects.
- FRONTEND Removed the Plans dialog from the web terminal.
- HELM Fixed init containers that wait for a RonDB rollout giving up after 30 minutes, which failed the Hive Metastore, HopsFS, Airflow migration and CA pods when a RonDB restart took longer.
- HELM Added support for Git repositories behind a private CA or an HTTP proxy: set
hopsworks.variables.git_custom_ca_configmapto a ConfigMap that exists in every project namespace,git_<provider>_http_proxyandgit_<provider>_https_proxyfor GitHub, GitLab and BitBucket, orgit_disable_tls_verification. - HELM Added the
KafkaAuthenticationFailuresPrometheus alert for clients that keep failing to authenticate, for example with an expired certificate. - Addressed vulnerabilities in the ArrowFlight and remote shuffle service images.
Breaking changes#
- FRONTEND Removed the Code Style, Testing and Security rules from the Coding Agents page of the cluster settings, and web terminals no longer give them to the coding agents. If you set them, move what you need to the new Business Glossary or the system-wide instructions of each agent.
Upgraded components#
| Component | 5.0.9 | 5.0.10 |
|---|---|---|
| ArrowFlight server | 5.0.3 | 5.0.4 |
| Base environment images | 5.0.8 | 5.0.9 |
| Git image | 1.4.2 | 1.4.4 |
| OnlineFS | 2.3.4 | 2.3.5 |
| Remote shuffle service (Apache Uniffle) | 0.10.8 | 0.10.8.1 |
Configuration changes#
- HELM Added
kafka.cluster.clusterCa.validityDaysandkafka.cluster.clientsCa.validityDays(default365) for the certificates Strimzi issues, applied at the next issuance.
Python client#
The release notes of hopsworks-api 5.0.7.
5.0.9#
Helm chart 5.0.9 · Released on 2026-08-28 · Changes since 5.0.8 · Python client 5.0.6
What's changed#
- API FRONTEND Fixed feature statistics failing to save when a column has a NaN or infinite statistic, such as the standard deviation of an all-null column, statistics of DELTA feature groups being computed on the previous commit, and wrong uniqueness statistics, which are now left empty when
exact_uniquenessis off. - API FRONTEND Fixed Ray jobs and the Ray clusters of Jupyter failing to start on OpenShift, because their pods couldn't read the project certificates.
- API FRONTEND Fixed the state of a Spark or Ray job execution switching between queued and running while one of its pods couldn't be scheduled.
- FRONTEND Fixed web terminals failing to start on OpenShift.
- HELM Fixed the KServe local model controller image (
kserve.kserve.localmodel.enabled) failing to pull. - Addressed vulnerabilities in the Hopsworks and Hopsworks CA images.
- Fixed Python jobs, notebooks, apps and agent tasks crashing with a segmentation fault when they list or change the owner of a HopsFS directory through pydoop.
Breaking changes#
- HELM Init containers now set CPU and memory requests and limits, which most of them used to leave unset, so a namespace
LimitRangedefault is no longer charged to the pod for its whole life; the RonDB and Consul charts are not covered yet. If a namespaceLimitRangehas aminormaxthey don't fit, setglobal._hopsworks.initContainerResourcesbefore you upgrade, or Kubernetes rejects the pods.
Upgraded components#
| Component | 5.0.8 | 5.0.9 |
|---|---|---|
| ArrowFlight server | 5.0.2 | 5.0.3 |
| Base environment images | 5.0.5 | 5.0.8 |
| Git image | 1.4.1 | 1.4.2 |
| Hive Metastore | 3.0.0.14.6-v1 | 3.0.0.14.7-v1 |
| HopsFS | 3.4.3.1-EE-RC4 | 3.4.3.1-EE-RC5 |
| Model serving webhook | 5.0.2 | 5.0.3 |
| RonDB | 26.02.8 | 26.02.9 |
| Spark history server | 3.5.5.2 | 3.5.5.3 |
| Toolbox image (hwutils) | 1.7.1 | 1.7.2 |
| Trino | 480-v6 | 480.1-v1 |
Configuration changes#
- HELM Changed
hopsworks.variables.docker_operations_timeout_listing_minutes,docker_operations_timeout_check_minutesanddocker_operations_timeout_export_minutesfrom 5 to 15 minutes, andmax_concurrent_base_sync_opsfrom 6 to 5, so large base images finish syncing. - HELM Fixed the chart failing to render with
hopsworks.dropDatabase: true. - HELM Added
global._hopsworks.initContainerResources(waiter,tool,runtime) to size the requests and limits that init containers now set.
Python client#
The release notes of hopsworks-api 5.0.6.
5.0.8#
Helm chart 5.0.8 · Released on 2026-08-21 · Changes since 5.0.6 · Python client 5.0.5 (5.0.4, 5.0.5)
What's changed#
- API FRONTEND HELM Added an upload policy,
hopsworks.variables.upload_policy, that allows file uploads to everyone (enabled), to administrators only (admins_only) or to nobody (disabled), from the web UI and from clients such as the Python SDK; the web UI disables its upload controls for blocked users, andupload(overwrite=True)in the Python client no longer deletes the existing file when the policy blocks the upload. The upgrade writes the value to the cluster, so a change made in the admin UI lasts until the next upgrade. - API FRONTEND Addressed vulnerabilities in feature views.
- API FRONTEND Added deleting rows from a feature group with
remove_rowsin the Python client andremoveRowsin the Java client, which delete from both stores of an online feature group unlessstorageis"offline"or"online"; online ingestion results and the ingestion activity in the UI show them as deleted rows. - API Added project member management (
Project.get_members,add_member,remove_member), feature group access for members with the Feature store restricted role (FeatureGroup.grant_restricted_access,revoke_restricted_access,get_restricted_access) and user administration (hopsworks.get_users_api()) to the Python client (users, members, sharing). - API Fixed
share,shared_withandunshareof feature groups and feature stores, andDatasetApi.unshare, failing in the Python client. - API Fixed Arrow Flight queries of partitioned DELTA feature groups failing once the feature group is older than
delta.logRetentionDuration. - API Fixed online feature vectors failing with a
ValueErroronTIMESTAMP(n)andDATETIME(n)features with fractional seconds, and similarity search results losing the milliseconds of timestamps. - API Fixed inserts with the
upsert_if_neweronline ingestion option failing for online feature groups with a composite primary key. - FRONTEND Fixed the SQL Runner returning a different number of rows on each run, ignoring the row limit for some queries and discarding the typed query when the limit changed; it now shows the row count of a result.
- FRONTEND Fixed project members with the Observer role being offered Superset actions that fail; the UI now disables them.
- HELM Fixed Kafka failing to start on clusters with many API groups, such as OpenShift, when the Vertical Pod Autoscaler (
global._hopsworks.vpaEnabled) is on, because pod creation stalled for about 20 seconds. - HELM Added
hopsworks.jupyter.notebookConfig.enableUploads; set it tofalseto block file uploads from the Jupyter UI and base64 uploads through the Jupyter Contents API. - HELM Fixed Superset queries through Trino logging
Access Denied: Cannot access catalog system, and project creation and new project members logging TrinoAccess Denied: Invalid credentialserrors before their Superset connection is ready. - Addressed vulnerabilities in the Hopsworks server dependencies, in the Payara, HopsFS, Hive Metastore, ArrowFlight, OnlineFS, Airflow, Git, toolbox, base environment, Filebeat, Grafana, OpenSearch, OpenSearch Dashboards, Logstash, remote shuffle service, Spark history server and Superset images, and in the MySQL database of Superset.
Breaking changes#
- HELM
vpa.image.tagis now a string, instead of a number, so an override such as1.2fails the values schema. If you override it, quote it and set it equal tovpa.imagesTagbefore you upgrade; with--reuse-valuesandglobal._hopsworks.vpaEnabled: true, use--reset-then-reuse-values.
Deprecations#
- API Deprecated
FeatureGroup.commit_delete_recordin the Python client forremove_rows, which also deletes the rows from the online store.
Upgraded components#
| Component | 5.0.6 | 5.0.8 |
|---|---|---|
| Airflow image | 5.0.1 | 5.0.2 |
| ArrowFlight server | 5.0.0 | 5.0.2 |
| Base environment images | 5.0.2 | 5.0.5 |
| Filebeat | 8.15.0 | 8.19.20 |
| Git image | 1.4 | 1.4.1 |
| Grafana | 10.2.2-h6 | 10.2.2-h7 |
| Hive Metastore | 3.0.0.14.5-v1 | 3.0.0.14.6-v1 |
| HopsFS | 3.4.3.1-EE-RC3 | 3.4.3.1-EE-RC4 |
| Logstash | 7.17.9.4 | 7.17.9.5 |
| OnlineFS | 2.3.2 | 2.3.4 |
| OpenSearch | 1.3.6.2 | 1.3.6.3 |
| OpenSearch Dashboards | 1.3.6.6 | 1.3.6.7 |
| Payara | 6.2024.12-jdk17.6 | 6.2024.12-jdk17.8 |
| Remote shuffle service (Apache Uniffle) | 0.10.7 | 0.10.8 |
| Spark | 3.5.5.1 | 3.5.5.2 |
| Spark history server | 3.5.5.1 | 3.5.5.2 |
| Superset | 6.0.0p2.4 | 6.0.0p3.4 |
| Superset MySQL | 8.4.5-debian-12-r0-h2 (MySQL 8.4.10) | 8.4.5-debian-12-r0-h3 (MySQL 8.4.11) |
| Toolbox image (hwutils) | 1.7 | 1.7.1 |
| Vertical Pod Autoscaler | 1.2.1 | 1.7.1 |
| Vertical Pod Autoscaler installer | 1.2 | 1.7.1 |
Configuration changes#
- HELM Changed the default Trino access rules,
trino.trino.accessControl.rules, to let every user read thesystem.metadatatables; if you override the rules, add the same grant.
Python client#
5.0.6#
Helm chart 5.0.6 · Released on 2026-07-29 · Changes since 5.0.5 · Python client 5.0.3, unchanged
What's changed#
- FRONTEND Added the full color palette, interface styles such as border radius, border width and shadows, a live preview, and a branding export, import and reset to the Branding page of the cluster settings, shown when the cluster variable
enable_custom_brandingistrue. - FRONTEND Fixed the create and edit forms of model and LLM deployments: a hidden tracing field could block saving, the vLLM image tag could stay blank, and editing a deployment reset its resources.
- FRONTEND Fixed feature monitoring charts not showing the standard deviation.
- HELM Fixed Airflow failing to start on OpenShift with
airflow: command not found. - Addressed vulnerabilities in the Hopsworks and Hopsworks CA images.
Upgraded components#
| Component | 5.0.5 | 5.0.6 |
|---|---|---|
| Airflow image | 5.0.0 | 5.0.1 |
Configuration changes#
- HELM Added
docker-registry.affinity,minio.affinityandhopsworks.dockerRegistry.preset.affinityfor the Docker registry, MinIO and the preset image push Job.
Python client#
The Python client is unchanged, 5.0.3.
5.0.5#
Helm chart 5.0.5 · Released on 2026-07-22 · Changes since 5.0.4 · Python client 5.0.3, unchanged
What's changed#
- HELM Added sequenced rollouts that restart the RonDB data nodes one node group at a time on clusters with more than one node group, turned on with
rondb.rondb.ndbmtdSequencedRollout.enabled(defaultfalse).
Upgraded components#
| Component | 5.0.4 | 5.0.5 |
|---|---|---|
| RonDB | 26.02.6 | 26.02.8 |
Configuration changes#
- HELM Added
rondb.rondb.timeoutsMinutes.ndbmtdStartupProbeandrondb.rondb.timeoutsMinutes.mysqldStartupProbe, the startup probe timeouts of the RonDB data nodes and MySQL servers, and raised them from 25 to 120 minutes and from about 17 to 20 minutes.
Python client#
The Python client is unchanged, 5.0.3.
5.0.4#
Helm chart 5.0.4 · Released on 2026-07-17 · Changes since 5.0.3 · Python client 5.0.3, unchanged
What's changed#
- API HELM Fixed online feature store ingestion skipping rows that failed with transient RonDB errors, such as
Rowid already allocated, during a RonDB upgrade; it now pauses and retries everyonlinefs.configmapOverrides.onlinefssite.service.pauseRetrySleepMsuntil they are written.
Upgraded components#
| Component | 5.0.3 | 5.0.4 |
|---|---|---|
| OnlineFS | 2.3.1 | 2.3.2 |
Configuration changes#
- HELM Added
hopsworks.service.worker.external.https.nodePortto pin the node port of the Hopsworks HTTPS service when itstypeisNodePort.
Python client#
The Python client is unchanged, 5.0.3.
5.0.3#
Helm chart 5.0.3 · Released on 2026-07-14 · Changes since 5.0.2 · Python client 5.0.3, unchanged
What's changed#
- HELM Fixed the Hopsworks admin pod getting stuck in CrashLoopBackOff when workers were slow to register; the admin sidecar now keeps retrying, restarts unregistered workers and redeploys Hopsworks after the admin container restarts.
- Addressed vulnerabilities in the Strimzi operator and Kafka images.
Breaking changes#
- HELM The Hopsworks admin container now has a liveness probe (
hopsworks.probs.admin.livenessProbe) that restarts it after about 10 minutes without a response and a startup probe (hopsworks.probs.admin.startupProbe) that gives it up to 30 minutes to start, instead of no probes, so a probe you set withhttpGetortcpSocketalso needsexec: null, or Kubernetes rejects the pod. This needs Helm 4 or Helm 3.17.1 or later, because older Helm 3 releases ignore anullfor a subchart value.
Deprecations#
- HELM Deprecated
hopsworks.envs.postInstall.DEPLOY_RETRIES, which has no effect now that the admin sidecar retries until the deployment succeeds.
Upgraded components#
| Component | 5.0.2 | 5.0.3 |
|---|---|---|
| HopsFS | 3.4.3.1-EE-RC1 | 3.4.3.1-EE-RC3 |
| RonDB | 26.02.5 | 26.02.6 |
| Strimzi | 0.45.1-h4 | 0.45.1-h5 |
Configuration changes#
- HELM Added
hopsfs.objectStorage.s3.disableCertCheckingandhopsfs.objectStorage.s3.disableChecksumValidationto turn off TLS certificate checks and client-side checksum validation for the HopsFS S3 endpoint. - HELM Added
hopsworks.envs.postInstall.DEPLOY_RETRY_INTERVAL_SEC,ASADMIN_TIMEOUT_SECandASADMIN_DEPLOY_TIMEOUT_SECto tune how the admin sidecar retries the Hopsworks deployment.
Python client#
The Python client is unchanged, 5.0.3.
5.0.2#
Helm chart 5.0.2 · Released on 2026-07-10 · Changes since 5.0.1 · Python client 5.0.3 (5.0.2, 5.0.3)
What's changed#
- API Fixed online feature store ingestion stalling after a feature group with pending records was deleted.
- API FRONTEND Added mandatory tags for models and deployments, and tags on deployments, which the Python client sets with
Deployment.add_tagand reports inmissing_mandatory_tagsof a model or deployment. Model tags move from HopsFS to the database the first time a model is read or tagged after the upgrade, and a tag that no longer matches its schema is dropped. - API FRONTEND HELM Fixed deleting a feature group failing after many online ingestions; Hopsworks now keeps the latest 1000 online ingestions of each feature group (cluster variable
online_ingestion_max_per_featuregroup). - API Fixed
get_tagandget_tagsof feature groups, feature views, training datasets, models and datasets in the Python client failing with aTypeErrorwhen a tag value is not a plain string, andget_tagof models always failing. - API Fixed random splits of training datasets with the Python engine ignoring
seed, so they were not reproducible. - API Fixed importing the Python client reseeding Python's global
randommodule. - FRONTEND Changed projects created without the
Usersdataset to get it, with a home folder for each member, automatically after the upgrade, instead of asking the data owner to enable private user directories. - FRONTEND Fixed saving the Alertmanager configuration in the admin UI silently failing when it sets a boolean or numeric option, such as
smtp_require_tlsormax_alerts. - FRONTEND Fixed the data preview of a feature view's logging feature group failing.
- FRONTEND HELM Fixed
pip installanduv pip installin the web terminal, anduv pip installin Jupyter and Ray, ignoring the index, mirror and proxy settings inhopsworks.dockerImage.pypi.global_parameters. - HELM Fixed a failed HopsFS schema migration being reported as successful, which let the NameNode start on a partly migrated schema.
- HELM Added post-delete Jobs that remove the Secrets, ConfigMaps and certificates
helm uninstallused to leave behind. - Changed LLM deployments to no longer get the inference logger sidecar, which they never used.
Breaking changes#
- HELM
helm uninstallnow deletes the data volumes of the HopsFS DataNodes, MinIO, OpenSearch, Kafka, Consul and the remote shuffle service, for good, instead of keeping them. To keep them, setglobal._hopsworks.wipeDataOnUninstall: falseor label the PVCshopsworks.ai/keep=truebefore you uninstall; the Superset MySQL volume is deleted regardless.
Upgraded components#
| Component | 5.0.1 | 5.0.2 |
|---|---|---|
| Base environment images | 5.0.1 | 5.0.2 |
| Model serving webhook | 5.0.1 | 5.0.2 |
| OnlineFS | 2.3 | 2.3.1 |
| RonDB | 26.02.4 | 26.02.5 |
Configuration changes#
- HELM Added
global._hopsworks.wipeDataOnUninstall(defaulttrue) to delete the data volumes onhelm uninstall. - HELM Added
cleanupOnUninstall.enabledto each component chart, such ashopsworks.cleanupOnUninstall.enabled, andcerts-operator.gracefulCertTeardown.enabled, to turn off the uninstall cleanup of that component.
Python client#
5.0.1#
Helm chart 5.0.1 · Released on 2026-07-03 · Changes since 5.0.0 · Python client 5.0.1
What's changed#
- API FRONTEND HELM Added model monitoring, which compares the inference data a deployment logs with the model's training dataset and shows the drift on the deployment page, and distribution comparison to feature monitoring, set up in the Python client with
create_model_monitoringof a feature view, model or deployment andcompare_on_distribution;hopsworks.variables.feature_monitoring_max_num_features(default15) caps the features of a configuration. - API FRONTEND Added chaining of on-demand transformation functions, where the output of one function feeds another, with a view of the chain on the feature group and feature view pages and from
visualize_transformations()in the Python client, andn_processesof a feature group'sinsertandsaveto run independent transformations in parallel. - API Added secondary indexes for online feature groups, declared with
secondary_indexesinOnlineConfigof the Python client, orsecondaryIndexesin the Java client, when the feature group is created. - API FRONTEND HELM Added Git repositories as a source for agent deployments (
git_url,git_providerandgit_branchofdeploy_agentin the Python client), token prices per deployment to estimate the LLM cost (input_token_price_per_million_tokensandoutput_token_price_per_million_tokensofDeploymentTracingConfig), and dashboards of traces, LLM calls, tokens, cost and tool calls. Agent deployments now mount HopsFS, which on clusters with Kyverno needshw-kyverno.policyExceptions.pythonDeployment.enabled(defaulttrue). - API FRONTEND HELM Added an app base path, a proxy routing mode and a readiness probe path to apps, set in the Python client with
app_base_pathandreadiness_probe_pathofcreate_app, so an app can be served from its root withoutAPP_BASE_URL_PATH; existing apps keep the prefix routing, and the App Metrics Grafana dashboard shows zero instead of "No data" for apps without traffic. - API FRONTEND Fixed model deployments with images from the managed Docker registry failing to start.
- API FRONTEND Fixed failed or partly deleted projects counting against the owner's maximum number of projects.
- API FRONTEND Fixed ingestion with dltHub and schema fetching from NoSQL data sources failing when the project, data source or table names are long.
- API FRONTEND Fixed adding a member to a project failing when feature groups are shared with that project.
- FRONTEND HELM Added the online feature store (RonDB) quotas and memory usage to the project settings, a banner on project pages near or over quota, and a Quotas and Rate Limits page in the cluster settings for the defaults of new projects; HopsFS quotas are now labelled GB instead of TB, the unit they always had. Default RonDB quotas in
hopsworks.variables.rondb_quotasnow apply to new projects; usage refreshes everyhopsworks.variables.rondb_usage_cache_ttl_seconds, and on a large cluster raiserondb_usage_query_timeout_secondsif usage stops showing. - FRONTEND Fixed environment variables set in an app's configuration not reaching the app, and not showing when you edit the app.
- FRONTEND Fixed web terminals shutting down after about 30 minutes in a background browser tab or on a sleeping laptop; a terminal now stops only when its session expires.
- FRONTEND Fixed giving project members access to Superset failing with HTTP 429 (Too Many Requests) errors.
- FRONTEND Fixed project membership changes being slow, and Airflow requests timing out or failing with server errors, when Airflow is turned off (
global._hopsworks.airflow.enabled: false). - FRONTEND Fixed project pages showing a "Feature not enabled: DATA_SCIENCE_PROFILE" error when the data science profile is off; the model registry, deployments and apps are now hidden from the menu.
- FRONTEND HELM Fixed Superset redirecting to its internal host behind a reverse proxy that rewrites the Host header; set
hopsworks.variables.hopsworks_public_proxy_urlto the publichost[:port]. - HELM Fixed database initialization and migrations starting while RonDB was still restarting; they now wait up to 30 minutes for each RonDB StatefulSet to roll out.
- HELM Added support for Kubernetes 1.35 and 1.36.
- HELM Added an external LoadBalancer for the Hive Metastore, turned on with
hive.externalLoadBalancer.enabled(defaultfalse), so that clients outside Kubernetes, such as external Spark applications, can reach it. - HELM Added a lifecycle webhook that posts user, project and membership events to
hopsworks.variables.lifecycle_webhook_url, tagged withlifecycle_webhook_cluster_idand signed with HMAC-SHA256 whenlifecycle_webhook_secretis set. - HELM Fixed environment builds against the managed Docker registry ignoring
hopsworks.variables.docker_operations_push_insecureand failing on a self-signed certificate; set the newhopsworks.variables.docker_operations_registry_httpto"true"for a registry served over plain HTTP. - Addressed vulnerabilities in the MySQL database of Superset.
- Changed the base environment images to Node.js 26.3.0, instead of 20.
- Fixed
npm install -gandcorepack enablefailing for the non-root user in jobs, notebooks, apps and deployments that run on the base environment images.
Breaking changes#
- API In the Python client,
create_feature_monitoringno longer takesfeature_nameandcreate_statistics_monitoringis nowcreate_scheduled_statistics, which takesfeature_names, on feature groups and feature views, because one configuration now monitors several features, each named withcompare_on(feature_name=...). Also replacewith_reference_value(value)withcompare_on(..., specific_value=value)andrun_job()withrun_once(), passstrictandrelativetocompare_onby name, and read the results of each feature fromfeature_statistics_results; see Feature monitoring. - HELM Feature monitoring is now on by default, instead of off, and the upgrade writes
hopsworks.variables.enable_feature_monitoringto the cluster, replacing a value set in the admin UI. To keep it off, set it to'false'before you upgrade.
Deprecations#
- API Deprecated the alert statuses
feature_monitor_shift_undetectedandfeature_monitor_shift_detectedin the Python client formonitoring_shift_undetectedandmonitoring_shift_detected. - API Deprecated
stddevofFeatureDescriptiveStatisticsandFeatureTransformationStatisticsin the Python client, replaced bystd_dev.
Upgraded components#
| Component | 5.0.0 | 5.0.1 |
|---|---|---|
| Base environment images | 5.0.0 | 5.0.1 |
| HopsFS | 3.4.3.1-EE-RC0 | 3.4.3.1-EE-RC1 |
| Model serving webhook | 5.0.0 | 5.0.1 |
| RonDB MySQL metrics exporter | 0.11.4 | 0.11.5 |
| Superset MySQL | 8.4.5-debian-12-r0-h1 | 8.4.5-debian-12-r0-h2 (MySQL 8.4.10) |
Configuration changes#
- HELM Added
rondb.rondb.mysql.exporter.maxOpenConnections(default1), the connections of the RonDB MySQL metrics exporter; the render fails if it exceedsrondb.rondb.mysql.exporter.maxUserConnections. - HELM Added
kserve.kserve.servingruntime.vllmopenai.imageRegistryandkserve.kserve.servingruntime.vllmomni.imageRegistryto pull the vLLM images from a mirror. - HELM Added
hopsworks.velero.backup.storageLocation.s3ForcePathStylefor S3-compatible backup stores that need path-style addressing. - HELM Added
rondb.rondb.rondbConfig.UseTcInRRGroupandrondb.rondb.rondbConfig.MaxRRGroupSizeto tune the RonDB round-robin groups.
Python client#
The release notes of hopsworks-api 5.0.1.
5.0.0#
Helm chart 5.0.0 · Released on 2026-06-11 · Changes since 4.8.2 · Python client 5.0.0
What's changed#
- API FRONTEND Addressed vulnerabilities in the feature store.
- API FRONTEND Fixed the Hopsworks REST API and UI stalling when many Jupyter, terminal or app sessions are open.
- API FRONTEND HELM Added Agent Deployments, the Python deployments without a model, listed under Agents and with optional OpenTelemetry tracing into project feature groups, created in the Python client with
ModelServing.deploy_agent; see Agent Deployments. Size the tracing sidecar withhopsworks.variables.agent_deployment_otel_cpuandagent_deployment_otel_memory_mb, or turn tracing off for the cluster withagent_deployment_otel_enabled: "false". - API FRONTEND HELM Added Apps, Streamlit dashboards and custom web apps such as Flask, FastAPI or Gradio that run as long-lived services in a project, on the new
python-app-pipelineenvironment, also managed in the Python client withProject.get_app_api(); see Apps. - API FRONTEND Added SAP HANA, Databricks Unity Catalog (on AWS, with a personal access token or OAuth machine-to-machine credentials), MongoDB and Oracle data sources, which the Python client can also create with
FeatureStore.create_data_source; see Data sources. - API FRONTEND Added a
Usersdataset with a private home directory per member, where Jupyter, Git and the web terminal start; a Data Owner can add it to an existing project, and it can't be shared;Project.home_pathin the Python client gives your home directory. - API FRONTEND Added logical dates and data intervals to job schedules, which jobs read from
HOPS_LOGICAL_DATE,HOPS_START_TIMEandHOPS_END_TIME, with catch-up of missed intervals, and backfill runs withJob.run(start_time=..., end_time=...)in the Python client; see Schedule a job. - API FRONTEND Added account-level environment variables, encrypted and injected into every job, deployment, app, Jupyter server and terminal you start, optionally from one of your secrets or shared with a project, and managed in the Python client with
hopsworks.get_env_vars_api(); see Account-level environment variables. - API FRONTEND HELM Added the
python-agent-pipelineenvironment, with FastAPI, LangChain, LlamaIndex and OpenTelemetry, for Python agents. - API FRONTEND HELM Added public links to Streamlit apps (
App.make_public()in the Python client), which open without a Hopsworks login, whenhopsworks.variables.streamlit_sharingistrue. - API FRONTEND HELM Added request metrics to apps: an Envoy sidecar measures requests and latency, shown with CPU, memory and Kubernetes status on the app page and in the new App Metrics Grafana dashboard.
- API FRONTEND Added the datasets shared with a project to the HopsFS mount of Jupyter, jobs, apps and terminals, under
/hopsfs/shared-datasets/<project>/<dataset>. - API FRONTEND Added the
hopsCLI to the Python client package, to work with feature groups, feature views, training datasets, models, deployments, agents, apps, jobs and data sources from a shell, with browser sign-in that creates an API key for the project you pick. - API FRONTEND HELM Added an optional transform script to dltHub ingestion jobs (
transform_script_pathofSinkJobConfigurationin the Python client), which now run in thedlthub-ingestion-pipelineenvironment; see Ingest data with dltHub. - API FRONTEND Added downloading models from Hugging Face into the Model Registry from the UI or with
ModelRegistry.hf_downloadin the Python client; see Import a model from Hugging Face. - API FRONTEND Added deleting a feature group together with the feature views that use it (
FeatureGroup.delete(delete_feature_views=True)in the Python client), or withforce=Truewhile keeping them, and removing a feature group or feature store shared with your project without deleting the original. - API Added a choice of a hash or an ordered index for the primary key of online feature groups (
primary_key_index_typeinOnlineConfig). - API Added lookback windows to point-in-time joins (
lookbackof feature view reads and training data) and extra filters to batch data reads of feature views (extra_filterofget_batch_data) (also in 4.8.10). - API FRONTEND HELM Added the
vllm-omniserving runtime and a choice of vLLM version for each deployment (vllm_image_tagin the Python client), and moved thevllm-openairuntime to thevllm/vllm-openaiimage (also in 4.8.7). - API Changed inserts into online feature groups to write only the latest row of each primary key, by event time, to the online store, and to skip rows whose TTL has already expired; pass
online_ingestion_options={"mark_online_rows": False}to write every row. - API Added
operation="insert"for DELTA feature groups, which appends the rows without merging them on the primary key, and stopped DELTA inserts from failing on rows with duplicate primary keys and event times. - API Added built-in model-dependent transformation functions:
log_transform,equal_width_binner,equal_frequency_binner,quantile_binner,top_k_categorical_binner,quantile_transformer,rank_normalizer,winsorize,impute_mean,impute_median,impute_constant,impute_modeandimpute_category. - API Added support for Great Expectations 1.x, up to 1.17.1, and Polars 1.x, up to 1.40.1, to the Python client.
- API Added Spark Connect support to the Python client, as used by Spark web terminals; there statistics are computed with pandas and HUDI feature groups can't be read or written.
- API Added a cache to
Model.download()in the Python client, which reuses a downloaded model version across sessions; free it withModel.clear_cache(). - API Added
Project.get_superset_api()to the Python client to manage Superset datasets, charts and dashboards. - API Added
namespacetohopsworks.create_projectto choose the Kubernetes namespace of a new project. - API Changed the Python client to stop sending usage data unless the environment variable
ENABLE_HOPSWORKS_USAGEistrue. - API FRONTEND Added environment variables to deployments (
env_varsin the Python client) (also in 4.8.6). - API FRONTEND Added uploading a file as a secret (
create_secret_from_filein the Python client) (also in 4.8.9). - API Added
Deployment.read_logs()andDeployment.tail_logs()to the Python client, which read the logs of stopped deployments from OpenSearch by default. - API Added the
TIMESTAMP(n)andDATETIME(n)online types with fractional seconds (also in 4.8.7). - API HELM Changed job runs to fail with HTTP 429 when the user already has 10 queued executions of the job (cluster variable
quotas_max_queued_executions_per_user_per_job,-1turns the limit off). - API Changed ArrowFlight queries to read only the partitions and files that match their filters (also in 4.8.3).
- API FRONTEND Changed Python deployments without a model to reject request batching and inference logging, which they don't support.
- API Fixed
hopsworks.login()from outside the cluster failing when model serving has no Istio load balancer (also in 4.8.20). - API Fixed dltHub ingestion jobs created from the Python client failing on source columns whose names the feature store changes, such as names with upper-case letters (also in 4.8.7).
- API Fixed OnlineFS stopping writes to an online feature group after a single "No such table existed" error, such as right after the table was created; it now retries first.
- API FRONTEND Fixed Python job logs being lost when the job is stopped, or when the first runs of a job end at the same time.
- API Fixed Spark writes to partitioned HUDI feature groups created with an older Hudi version failing (also in 4.8.7).
- API Fixed OnlineFS counting rows of an online ingestion more than once, so the progress showed more rows processed than were inserted.
- API Fixed a failed or concurrent feature group creation leaving a Hive table behind that blocked creating the feature group again.
- API Fixed new feature group and training dataset locations naming a NameNode pod IP (also in 4.8.7).
- API FRONTEND Fixed model deployments being rejected on OpenShift by the
restricted-v2security context constraint. - FRONTEND Changed the Hopsworks UI to a new design, with a regrouped project sidebar.
- FRONTEND HELM Added Agent Tasks, jobs that run Claude Code or OpenAI Codex headless on a prompt, in the new
agent-jobenvironment; turn them off withhopsworks.variables.agent_jobs_enabled: "false", see Agent Tasks. - FRONTEND HELM Added the Wizard, which opens on an empty project, asks what to build and from which data, and hands a kickoff prompt to Claude Code in the web terminal; it can import the feature groups of the
hopsworks_defaultproject (cluster variabledefault_featurestore_project_name). - FRONTEND HELM Added Spark and GPU web terminals, and Claude Code, OpenAI Codex, the
hopsCLI and akubectllimited to the project in every terminal; withhopsworks.terminal.enabled, the chart also pushes the terminal images. - FRONTEND HELM Added Platform Intelligence, which uses an LLM to suggest feature group metadata and ingestion schedules from a data source preview, generate vLLM configurations and fill in model deployments; set
hopsworks.variables.platform_intelligence_llm_api_key, and optionallyplatform_intelligence_llm_modelandplatform_intelligence_llm_base_url, to turn it on. - FRONTEND Added per-project DAG isolation and the last runs of each DAG on the Airflow page; see Airflow 3 in Hopsworks.
- FRONTEND Added an optional expiration date to API keys; see Create an API key.
- FRONTEND Added a Superset dashboards page to projects, to make dashboards public, share them with other projects, create permalinks and delete them; see Superset.
- FRONTEND HELM Added a Superset Public role to share dashboards and chart permalinks without a login, and enabled dashboard role-based access control. Only dashboards granted to the Public role are public; set
superset.superset.allowAnonymousAccess: falseto require a login for all. - FRONTEND HELM Changed starting a Jupyter server, terminal or app to fail with HTTP 503 when the cluster is at its session limit, and added session capacity badges to those pages and WebSocket proxy panels to the Hopsworks Grafana dashboard; see WebSocket proxy pool.
- FRONTEND HELM Changed web terminal sessions to end after 4 hours instead of 8 (cluster variable
terminal_session_hours). - FRONTEND Changed the error pages of the Hopsworks server from the Payara defaults to Hopsworks pages.
- FRONTEND Added drag-and-drop upload of files and folders to the file browser.
- FRONTEND Added memory and CPU recommendations for dltHub ingestion jobs (Estimate resources) to the feature group creation and ingestion job forms.
- FRONTEND HELM Fixed downloading Superset charts through Hopsworks, and the Hopsworks proxy passing only 5 Superset requests at a time; tune its connection pool and timeouts with
hopsworks.variables.superset_proxy_*. - FRONTEND Fixed BigQuery previews failing for SQL queries and for BigQuery projects with a hyphen in their name, previews scanning the whole table, and the Materialization Dataset error staying after BigQuery Project was filled.
- FRONTEND Fixed feature store metrics counting Hudi metadata columns as features (also in 4.8.9).
- FRONTEND Fixed the UI hanging when a web terminal failed to start.
- FRONTEND Fixed adding an expectation to an expectation suite in the UI.
- FRONTEND Fixed the pagination of the feature usage table (also in 4.8.9).
- FRONTEND Fixed libhdfs in Jupyter not finding HopsFS with a custom Consul domain (also in 4.8.7).
- FRONTEND Fixed web terminals failing to pull their image from a registry that needs credentials.
- HELM Fixed external LoadBalancer Services, such as those of ArrowFlight, HopsFS, OpenSearch and Trino, not being created with Helm 3.20.1 and later; a component without its own setting again follows
global._hopsworks.externalLoadBalancers. - HELM Fixed fresh installs failing and rolling back when the Knative Serving webhook was not ready yet.
- HELM Changed RonDB upgrades to roll the management server first, so data nodes no longer shut down with error 2305, and to fail when
rondb.rondb.clusterSize.numNodeGroupsdiffers from the running cluster, which RonDB can't change online (also in 4.8.6). - HELM Fixed
helm upgrade --forcefailing with a conflict on unchanged chart Jobs, which now run again on everyhelm upgrade(also in 4.8.3). - HELM Added
ddl-mysqld, a separate MySQL server for online feature store schema changes, enabled by default withrondb.rondb.meta.ddlMySQLd.enabled(also in 4.8.4). - HELM Added Kyverno policy exceptions so apps and web terminals start under Kyverno policies (
hw-kyverno.policyExceptions.pythonapp.enabled,hw-kyverno.policyExceptions.terminal.enabled). - HELM Added CPU and memory requests and limits to the initialization step of Spark and Ray jobs, tuned with
hopsworks.variables.kube_scheduling_jobinit_*, and to Git operation pods, so namespace quotas count them. - HELM Added asynchronous upload of HopsFS blocks to object storage (
hopsfs.objectStorage.asyncUpload.enabled, off by default). With it on, a stopping DataNode first uploads its pending blocks, which can take about an hour (hopsfs.datanode.gracefulDrain); turning that drain off can lose them. - HELM Added Grafana dashboards and Prometheus alerts for the MySQL and Redis of Superset, and capped the Superset Redis memory at 256 MB with
allkeys-lrueviction. - HELM Changed the HopsFS DataNode PodDisruptionBudget to evict one DataNode at a time, and HopsFS pods to restart when a
helm upgradechanges the HopsFS configuration. - HELM Changed the console logs of the HopsFS NameNode and DataNodes from JSON to plain text.
- HELM Fixed the image push Job not running again under Argo CD when only image versions or digests changed (also in 4.8.6).
- HELM Fixed Airflow pods failing to start when the HopsFS mount took longer than 30 seconds.
- Addressed vulnerabilities in the OpenSearch image.
- Addressed vulnerabilities in the Payara image (also in 4.8.10).
- Addressed vulnerabilities in the Strimzi images and the Redis image of Superset (also in 4.8.6).
- Addressed vulnerabilities in the Grafana, OpenSearch Dashboards and remote shuffle service images, and in the MySQL image of Superset (also in 4.8.11).
Breaking changes#
- API FRONTEND Hopsworks now deletes finished job executions and their logs 90 days after they end, instead of keeping them, and deletes the older ones as soon as it starts after the upgrade. Copy the logs you want to keep before you upgrade; the cluster variable
executions_ttl_dayssets the retention (0turns it off) and takes effect when Hopsworks restarts. - API
Model.savein the Python client now moves model files saved from a path under/mnt/hopsfsinto the model registry, instead of uploading a copy and keeping the originals; passkeep_original_files=Trueto keep them. - API In a job with a schedule,
read()of a feature group with an event time now reads only the rows of the run's data interval, fromHOPS_START_TIMEtoHOPS_END_TIME, instead of the whole feature group, when it's called withoutstart_time,end_timeorwallclock_time. Passstart_timeandend_timewhere a scheduled job must read more; see Schedule a job. - API
create_feature_groupin the Python client now creates a DELTA feature group by default, and fails when thedeltalakepackage is missing, instead of falling back to HUDI;time_travel_format=Nonenow creates a feature group without time travel, instead of choosing the default. Settime_travel_formatto"DELTA"or"HUDI"explicitly where you relied on the old behaviour. - API The Python client no longer supports Python 3.9; use Python 3.10 to 3.13, see the client installation guide.
- API The Python client now prefixes its internal functions and methods, those not in the API reference, with an underscore, such as
hopsworks_common.client.get_instance(), which is now_get_instance(), so code that calls them fails. Use the documented API instead. - API The
disable_online_ingestion_countwrite option of feature group inserts is now read fromonline_ingestion_optionsin the Python and Java clients, so a top-leveldisable_online_ingestion_countis ignored; move it intoonline_ingestion_options, or in Java rename the key toonline_ingestion_options.disable_online_ingestion_count. - FRONTEND HELM Upgraded Airflow from 1.10 to Airflow 3, and DAGs written for Airflow 1.10 don't run on it. The upgrade drops and recreates the Airflow metadata database, so DAG run history and the Variables and Connections created in Airflow are lost for good; see Airflow 3 in Hopsworks.
- HELM 5.0.0's Airflow migration Job connects through the round-robin MySQL service, so on a cluster with more than one RonDB MySQL server the upgrade to Airflow 3 splits the Airflow schema across servers and never completes; upgrade to 5.0.13 or later instead.
- HELM 5.0.0 supports Kubernetes up to 1.34 only, without the Kubernetes 1.35 and 1.36 support of 4.8.13; if you run 4.8.13 or later on Kubernetes 1.35 or 1.36, upgrade to 5.0.1 or later instead.
- HELM 5.0.0 doesn't have
kserve.kserve.servingruntime.vllmopenai.imageRegistryandkserve.kserve.servingruntime.vllmomni.imageRegistry, which 4.8.13 added, so the values schema rejects them; if you set them, upgrade to 5.0.1 or later instead. - HELM 5.0.0 doesn't have
hive.externalLoadBalancer,global.unmanagedLoadBalancers.metastore,hopsworks.variables.hopsworks_public_proxy_url,global._hopsworks.wipeDataOnUninstall,certs-operator.gracefulCertTeardownand thecleanupOnUninstallvalue of the charts, such ashopsworks.cleanupOnUninstall, which 4.8.14 added, so the values schema rejects them; if you set them, upgrade to 5.0.2 or later instead. - HELM 5.0.0 doesn't have
hopsworks.envs.postInstall.ASADMIN_TIMEOUT_SEC,ASADMIN_DEPLOY_TIMEOUT_SECandDEPLOY_RETRY_INTERVAL_SEC, which 4.8.17 added, so the values schema rejects them; if you set them, upgrade to 5.0.3 or later instead. - HELM 5.0.0 doesn't have
docker-registry.affinity,minio.affinityandhopsworks.dockerRegistry.preset.affinity, which 4.8.18 added, so the values schema rejects them; if you set them, upgrade to 5.0.6 or later instead. - HELM 5.0.0 doesn't have
global._hopsworks.initContainerResourcesandolk.filebeat.kubernetesMetadata, which 4.8.21 added, so the values schema rejects them; if you set them, upgrade to 5.0.12 or later instead. - HELM Removed
hopsworks.variables.dlthub_image_name, replaced by thedlthub-ingestion-pipelineenvironment, andhopsworks.payara.executorService, replaced byhopsworks.payara.websocketProxy. Remove them from your values before you upgrade, because the values schema rejects them. - HELM
global._hopsworks.superset.mysql.enabledandglobal._hopsworks.superset.redis.enabledmust matchsuperset.mysql.enabledandsuperset.superset.redis.enabled, which used to be enough on their own. If you disabled the MySQL or Redis of Superset, also set the matching global value tofalse, or the chart fails to render. - HELM The Spark operator pre-upgrade Job now pulls the
spark-operator-crdsimage (spark.sparkOperatorUpgradeJob.crdImage) on every upgrade, instead of the toolbox image (also in 4.8.17). Air-gapped installations must mirror it first, orhelm upgradefails. - HELM
hopsworks.variables.jupyter_shell_commandis now a JSON list of the command and its arguments, instead of a path. If you set it, rewrite it as a list, for example'["/bin/bash"]', because a plain path produces an invalid Jupyter configuration. - HELM Removed
VLLM_USE_FLASHINFER_SAMPLER=0from the vLLM serving runtimes (also in 4.8.7). If you serve vLLM models on GPUs older than compute capability 7.5, set it inkserve.kserve.servingruntime.vllmopenai.envorkserve.kserve.servingruntime.vllmomni.env. - The base environments now run Python 3.12, NumPy 2, CUDA 13, PyTorch 2.11, scikit-learn 1.8, TensorFlow 2.19 and Ray 2.55, instead of Python 3.11, NumPy 1.26, CUDA 12.8, PyTorch 2.8, scikit-learn 1.3, TensorFlow 2.17 and Ray 2.39, and the upgrade moves them to these versions, so jobs, notebooks and deployments on them can break. Test your code against the new versions before you upgrade; an environment you cloned is not upgraded, so if it fails afterwards, clone the new base environment and reinstall your libraries, see Concerning upgrades.
- The scikit-learn model server, which serves scikit-learn models deployed without a predictor script, now runs scikit-learn 1.8 instead of 1.3, so a deployment of a model saved with scikit-learn 1.3 can fail to start, as gradient boosting models do, or fail every request, as random forests do. Train such models again with scikit-learn 1.8, for example in the 5.0 base environments, and deploy the new model version (model server).
Deprecations#
- HELM Deprecated
airflow.reset_db_if_error, which Airflow 3 ignores. - HELM Deprecated
hopsfs.datanode.podDisruptionBudget.minAvailable, which the DataNode PodDisruptionBudget no longer reads.
Upgrade steps#
No upgrade steps are listed for this release.
Upgraded components#
| Component | 4.8.2 | 5.0.0 |
|---|---|---|
| Airflow image | 4.8.0 | 5.0.0 |
| ArrowFlight server | 4.8.0 | 5.0.0 |
| Base environment images | 4.8.1 | 5.0.0 |
| Brewer | 4.8.0 | 5.0.0 |
| Git image | 1.3 | 1.4 |
| Grafana | 10.2.2-h3 | 10.2.2-h6 (also in 4.8.11) |
| Hive Metastore | 3.0.0.13.15 | 3.0.0.14.5-v1 |
| HopsFS | 3.2.0.19-EE-RC0 | 3.4.3.1-EE-RC0 |
| Inference logger | 4.8.0 | 5.0.0 |
| Model serving authenticator | 4.8.0 | 5.0.0 |
| Model serving webhook | 4.8.0 | 5.0.0 |
| OnlineFS | 2.2 | 2.3 |
| OpenSearch | 1.3.6.1 | 1.3.6.2 |
| OpenSearch Dashboards | 1.3.6.3 | 1.3.6.6 (also in 4.8.11) |
| Payara | 6.2024.12-jdk17.2 | 6.2024.12-jdk17.6 |
| Python in the base environments | 3.11 | 3.12 |
| Ray | 2.39.0 | 2.55.1 |
| Remote shuffle service (Apache Uniffle) | 0.10.5 | 0.10.7 (also in 4.8.11) |
| RonDB | 26.02.2 | 26.02.4 (also in 4.8.11) |
| scikit-learn model server | 0.14.0 | 0.14.1 |
| Spark | 3.5.5 | 3.5.5.1 |
| Spark history server | 3.5.5 | 3.5.5.1 |
| Storage initializer | 4.8.0 | 5.0.0 |
| Strimzi | 0.45.1-h3 | 0.45.1-h4 (also in 4.8.6) |
| Superset | 6.0.0.0 | 6.0.0p2.4 |
| Superset MySQL | 8.4.5-debian-12-r0 | 8.4.5-debian-12-r0-h1 (also in 4.8.11) |
| Superset Redis | 7.0.10-debian-11-r4 | 7.4.9-bookworm (also in 4.8.6) |
| TensorFlow | 2.17.0 | 2.19.0 |
| TensorFlow Serving | 2.17.0 | 2.19.0 |
| Toolbox image (hwutils) | 1.4 | 1.7 |
| Trino | 477-v0 | 480-v6 |
| vLLM | v0.14.0 | v0.20.0 (also in 4.8.7) |
Configuration changes#
- HELM Changed the default HopsFS resources: 1024 MiB of heap instead of 500, a CPU request of 1 and a CPU limit of 4 instead of 500m and 1000m for the NameNode and DataNodes, a NameNode memory request of 1024Mi and limit of 2560Mi instead of 500Mi and 750Mi, a DataNode memory limit of 2048Mi instead of 750Mi, and 1024 MiB of NameNode direct memory instead of 500. Plan for the extra CPU requests of the 5 default DataNodes.
- HELM Fixed
hopsfs.namenode.auditLog.enableStatOperationandenableListOperationbeing ignored; the NameNode no longer audit-logs stat and list operations unless you set them totrue(also in 4.8.8). - HELM Changed
hopsfs.image.registry, when set, to overrideglobal._hopsworks.imageRegistryas the full registry and path prefix of the HopsFS image, ending in/. - HELM Removed
hopsworks.variables.dlthub_image_name, the image of dltHub ingestion jobs, which now run in thedlthub-ingestion-pipelineenvironment. - HELM Removed
hopsworks.payara.executorService, the thread pool of the Jupyter WebSocket proxy, replaced byhopsworks.payara.websocketProxy. - HELM Added
global._hopsworks.superset.mysql.enabledandglobal._hopsworks.superset.redis.enabled, which must matchsuperset.mysql.enabledandsuperset.superset.redis.enabled. - HELM Added
spark.sparkOperatorUpgradeJob.crdImage, the image of the Spark operator pre-upgrade Job (also in 4.8.17). - HELM Added the Superset, Trino and Kueue images to
values.airgap.yaml. - HELM Added
hopsworks.payara.websocketProxyto tune the WebSocket proxy of Jupyter, terminals and apps, such asmaxSessionsPerApp(default500per pod). - HELM Added
hopsworks.variables.kube_user_workload_tolerationsfor tolerations on user workloads such as Jupyter, jobs and deployments (also in 4.8.8). - HELM Added
hopsworks.dockerImage.packageAuth.secretNameandcaCertsConfigMapfor pip, conda and apt mirrors that need credentials or a private CA (also in 4.8.8). - HELM Added
global._hopsworks.kyverno.policies.addCertificatesVolume.initContainers.enabledto inject the custom CA certificates into the init containers of pods annotatedkyverno-inject-certs-init: enabled(also in 4.8.8). - HELM Added
onlinefs.configmapOverridesto tune the threads, caches, and RonDB, Kafka and logging settings of the online feature store service. - HELM Added
hopsworks.variables.kube_serving_vllm_versionsandkube_serving_vllm_omni_versions, the vLLM image tags a deployment can choose; update them when you change the vLLM runtime images (also in 4.8.7). - HELM Added
rondb.rondb.createPriorityClass, which you set tofalsewhen the RonDB PriorityClass already exists, for example on a satellite cluster (also in 4.8.5). - HELM Added RonDB settings such as
DataMemoryandTimeBetweenGlobalCheckpointstorondb.rondb.rondbConfig(also in 4.8.5). - HELM Added
hopsfs.namenode.blockSizeMiB(default128) to set the HopsFS block size. - HELM Added
arrowflight.deployment.server.hopsfs_query_modeto make the ArrowFlight server load feature group data into DuckDB tables (table) instead of views (view) (also in 4.8.3). - HELM Added
BackupLogBufferSizetorondb.rondb.rondbConfig(also in 4.8.6). - HELM Added
PartitionsPerNodetorondb.rondb.rondbConfig(also in 4.8.11).
Python client#
The release notes of hopsworks-api 5.0.0.