Skip to content

HiveMQ Edge 2026.14 is Released

by HiveMQ TeamSEP 15, 2026

What's New in HiveMQ Edge 2026.14

HiveMQ Edge 2026.14 is a maintenance release. It fixes message loss in MQTT bridge queues, makes writes to config.xml atomic, moves to Data Hub 3.4.0, fixes a native memory leak in the HiveMQ Pulse agent, and upgrades Netty to clear a critical security finding. There are no new protocol adapters or API changes. All deployments should upgrade.

Bridge Message Queues

An MQTT bridge queues messages while the remote broker is unreachable. In 2026.10 through 2026.13, the periodic clean-up that reclaims abandoned queues could misidentify a live bridge queue and delete it together with its queued messages. Queued messages could also be lost at node start-up and shutdown, on a bridge restart, when a bridge failed to start, when another subscription on the same bridge was edited, and on a hot reload triggered by a whitespace-only change to config.xml.

2026.14 fixes all of these. A queue is deleted only when it is known to be abandoned; in every ambiguous case the messages are kept and the next clean start reclaims what is genuinely unused. A regular MQTT client can no longer subscribe with a bridge's client identifier and receive the messages queued for the bridge.

Configuration File Writes

Three changes to how HiveMQ Edge writes and watches config.xml:

  • Writes are atomic. The file is built completely, validated, and moved into place in one operation, keeping its owner, permissions, and ACL. A rejected value no longer leaves the file empty or partially written.
  • Environment variable references are preserved. ${ENV:...} references such as ${ENV:BRIDGE_PASSWORD} survive every rewrite. If a secret cannot be kept out of the file, the write is refused, the node keeps running on its current configuration, and the file on disk is not modified.
  • The hot-reload watcher survives an invalid file. A file that cannot be parsed or read is rejected with an error stating that the previous configuration is kept, and the watcher applies the next correction. Rolling backups rotate only over the five slots Edge owns, never over other files in the configuration directory, and a refused write consumes no backup slot.

Data Hub 3.4.0

HiveMQ Edge 2026.13 shipped Data Hub 3.1.0. This release moves to 3.4.0, which includes three Data Hub releases:

  • Scripting engine pool exhaustion is fixed. Under load the pool could lose engines permanently, after which script execution failed with Could not acquire scripting engine from the engine pool. Every path that borrows an engine now returns it, and a slot lost inside the engine library is detected and recovered. Periodic V8 garbage collection is no longer tied to console logging.
  • V8 sandbox. The JavaScript engine runs with pointer compression and the V8 sandbox enabled on Linux, macOS, and Windows, with one memory cage per engine, so engines no longer share a single 4 GB address space. Also fixes the undefined symbol: exp2 crash on OpenJ9 and IBM Semeru JVMs on Linux.
  • Faster shutdown. Closing a script engine pool no longer waits out a one-second daemon sleep.

Upgrade Notes

Check the following before upgrading:

  1. Bridge subscriptions with overlapping topic-filter lists. Two subscriptions on the same bridge whose filter lists differ only in where one filter ends and the next begins share an internal fingerprint. From this release the node refuses to start that bridge and logs a message naming both subscriptions. Give one of them a distinct topic filter or destination and restart. A configuration that starts today is unaffected: the property depends only on the filters themselves, so a bridge that has never collided cannot begin colliding on upgrade.
  2. Environment variable credentials written to disk. If you supply bridge passwords through ${ENV:...} references and changed configuration through the REST API or the UI on 2026.10 through 2026.13, the rewritten file may hold those values in resolved form. 2026.14 keeps the reference in every future write. For files already on disk, review config.xml and its rolling backups, rotate any resolved secret, and restore the reference.
  3. Data Hub scripting pool sizing. The settings are data-hub.script-runtime.min-engine-count and data-hub.script-runtime.max-engine-count under <internal>. A node without them runs with one engine per CPU. data-hub.scripting.engine-pool-size is not a setting and has no effect.

Bridges configured with a username and no password are omitted from config.xml when it is rewritten, because the file format requires both. Configure both, or neither.

Additional Improvements

Bug Fixes

  • The HiveMQ Pulse agent no longer leaks native memory. A node running Data Intelligence computations on file persistence leaked about 7 KB of native memory per datapoint, because the stored-topic persistence opened a RocksDB iterator on every read and did not close it. The growth was outside the Java heap, so the process grew until the container memory limit was reached with no OutOfMemoryError and no heap dump. Every read path now closes what it opens.
  • Topic-preview sampling is bounded and self-releasing. Sampling holds a fixed ten messages per topic in both persistence modes, rotation is not counted as a dropped message, and a sampled topic is released ten minutes after its last read.
  • Rejected southbound writes always reach the <failed> topic, including messages with no expiry set.
  • Resource leaks on shutdown are closed. Five places held a per-instance object past stop() — a JVM shutdown hook, the JAX-RS server, the shutdown-hook registry, Xodus job processors, and the Data Hub script runtime — so their threads survived the node they belonged to. A persistence writer was also waiting 500 seconds to drain rather than the 500 milliseconds its constant named; it now waits 2 seconds and force-terminates after that.
  • A core upgraded ahead of the commercial persistence module keeps running and logs the version mismatch, instead of failing on the first queued message.
  • Helm chart settings for topic filters and LDAP now reach HiveMQ Edge. Topic filters declared in the values file are loaded, LDAP without a base DN starts, and up to three LDAP servers are accepted for round-robin authentication. The matching chart release sets the MQTTS client-authentication and LDAP truststore gates.
  • TLS listeners in Kubernetes use the private-key password. The listener enabled by HIVEMQ_MQTTS_ENABLED read the keystore password for the private key as well, so a keystore whose key password differs from the store password could not be opened.
  • Helm chart Data Hub watcher timings now reach HiveMQ Edge. modules.dataHub.watcher.interval and modules.dataHub.watcher.initialDelay in the values file set the preset watcher's check interval and initial delay. The chart has exported both since 2025.5; the container configuration template did not read them. The matching chart release adds a readiness probe, ships a default Data Hub preset that HiveMQ Edge accepts, and fixes nine further chart defects.
  • The Data Hub preset watcher honors its initial delay setting. The first check of the preset file runs 30 seconds after startup, as set by data-hub.preset.watcher-initial-delay-millis, instead of after the check interval.

Improvements

  • Security: Netty upgraded to 4.2.17.Final, clearing critical finding SNYK-JAVA-IONETTY-19005879 (CVSS 9.1).
  • HiveMQ Pulse agent updated to 3.2.10.
  • Dependency updates including Jackson 2.22.2 and Guava 33.7.1, aligned with the versions Data Hub 3.4.0 requires.

Get Started Today

Use the download link to get HiveMQ Edge 2026.14, or find us on GitHub and Docker:

Get started by running

docker run --name hivemq-edge --pull=always -d -p 1883:1883 -p 8080:8080 hivemq/hivemq-edge

Or clone our repository

git clone git@github.com:hivemq/hivemq-edge.git

You may also try out our Helm Chart

helm repo add hivemq https://hivemq.github.io/helm-charts && helm repo update