Skip to content

Releases: eclipse-hono/hono

2.0.1

21 Jul 13:22
Compare
Choose a tag to compare

Fixes & Enhancements

  • The CoAP adapter did not properly consider the reduced minimum RAM requirements for starting up when running as a
    native executable on a SubstrateVM. This could have resulted in the adapter not starting up at all, if configured
    with less than ~150MB of RAM. This has been fixed.
  • The HTTP protocol adapter and Device Registry now support a configuration property for explicitly setting the idle timeout.
    The timeout is configured with the property idleTimeout. This determines if a connection will timeout and be closed
    if no data is received or sent within the idle timeout period. The idle timeout is in seconds.
    A zero value means no timeout is used.
  • The MQTT adapter skipped command or error (the first one) subscription if both are requested for the same device. This has been fixed.
  • On startup, Hono components could get into a state that caused certain Kafka client metrics to not get reported.
    This has been fixed.
  • The native executable based Lora adapter container image failed to forward Lora meta information in messages being
    sent downstream. This has been fixed.
  • Default messaging type changed to Kafka. Changed related documentation pages.
  • The Command Router component possibly did not reach the "ready" state in case the Kafka broker got restarted during
    Command Router startup. This has been fixed.
  • The CoAP protocol adapter now uses Eclipse Californium 3.6.0.
  • Upgraded to JJWT 0.11.5 which contains additional security guards against an ECDSA bug in Java SE versions
    15-15.0.6, 17-17.0.2, and 18 (CVE-2022-21449).
    Note: if your application does not use these JVM versions, you are not exposed to the JVM vulnerability.
    The CVE is not a bug within JJWT itself - it is a bug within the above listed JVM versions, and the JJWT 0.11.5 release
    adds additional precautions within JJWT in case an application team is not able to upgrade their JVM in a timely manner.
  • The Auth server failed to create a token when configured with an ECC based private key that does not use the P-256 curve.
    This has been fixed.

1.12.3

21 Jul 15:38
Compare
Choose a tag to compare

1.12.3

Fixes & Enhancements

  • The mechanism to delete obsolete hono.command_internal.* Kafka topics could have deleted still used topics in
    case the Kubernetes API server gave information about the running containers with a delay of several seconds. This has
    been fixed.
  • The CoAP adapter did not properly consider the reduced minimum RAM requirements for starting up when running as a
    native executable on a SubstrateVM. This could have resulted in the adapter not starting up at all, if configured
    with less than ~150MB of RAM. This has been fixed.
  • The HTTP protocol adapter and Device Registry now support a configuration property for explicitly setting the idle timeout.
    The timeout is configured with the property idleTimeout. This determines if a connection will timeout and be closed
    if no data is received or sent within the idle timeout period. The idle timeout is in seconds.
    A zero value means no timeout is used.
  • The MQTT adapter skipped command or error (the first one) subscription if both are requested for the same device. This has been fixed.
  • The native executable based Lora adapter container image failed to forward Lora meta information in messages being
    sent downstream. This has been fixed.
  • Upgraded to JJWT 0.11.5 which contains additional security guards against an ECDSA bug in Java SE versions
    15-15.0.6, 17-17.0.2, and 18 (CVE-2022-21449).
    Note: if your application does not use these JVM versions, you are not exposed to the JVM vulnerability.
    The CVE is not a bug within JJWT itself - it is a bug within the above listed JVM versions, and the JJWT 0.11.5 release
    adds additional precautions within JJWT in case an application team is not able to upgrade their JVM in a timely manner.
  • The Auth server failed to create a token when configured with an ECC based private key that does not use the P-256 curve.
    This has been fixed.
  • The CoAP protocol adapter now uses Eclipse Californium 2.7.3.

2.0.0

13 Jul 09:19
Compare
Choose a tag to compare

New features

  • The HTTP protocol adapter now allows authenticated gateway devices to omit the tenant ID from the URI of requests
    used to upload telemetry, event or command response messages.
  • The CoAP protocol adapter now allows authenticated gateway devices to omit the tenant ID from the URI of requests
    used to upload telemetry, event or command response messages.
  • The AMQP protocol adapter now allows authenticated gateway devices to omit the tenant ID from the address of
    messages used to upload telemetry or event messages.
  • The MQTT protocol adapter now allows authenticated gateway devices to omit the tenant ID from the topic of
    messages used to upload telemetry or event messages.
  • The CoAP adapter now exposes its resources using short endpoint name alternatives to the existing resources.
    Using the short endpoint names, devices can save a few bytes per request.
  • The protocol adapters now support a configuration property for explicitly setting the percentage of the heap memory
    not to be used for maintaining device connections. This can be used to tune the adapter's memory utilization with
    regard to the overall amount of memory available to the JVM and the characteristics of the garbage collector being
    used.

Fixes & Enhancements

  • The Quarkus variant of the MongoDB based device registry failed to start up if the hono.mongodb.dbName property
    was not set. However, the DB name should not be required if a connection string is set using the
    hono.mongodb.connectionString property. This has been fixed.
  • When a tenant or device gets disabled or deleted, any open AMQP or MQTT connections from clients having authenticated
    themselves as belonging to that tenant or device are getting closed now.
  • Using OpenSSL with the Quarkus based variant of Hono components did not work as described in the Secure Communication
    guide. This has been fixed.
  • The connection pool configuration for the HotRod client in the Quarkus variant of the Command Router component
    didn't support using property names in camel-case. This has been fixed.
  • HonoConnectionImpl instances failed to release/close the underlying TCP/TLS connection when its disconnect or
    shutdown method had been invoked. This has been fixed.
  • The LoraWAN protocol adapter has been extended with support for Live Objects provider.
  • In the Quarkus variants of the MongoDB device registry and the Hono auth component, the provided metrics did not
    contain the default set of tags, as used in the other Hono components (e.g. host or component-name). This has been
    fixed.
  • The device registry components now support the reporting of Kafka client metrics.
  • The Java source code level of the Hono code has been raised from 11 to 17. This also means that a JDK version 17 or
    later is required for building and running Hono.
  • The mechanism to delete obsolete hono.command_internal.* Kafka topics could have deleted still used topics in
    case the Kubernetes API server gave information about the running containers with a delay of several seconds. This has
    been fixed.
  • The native executable based images of protocol adapters failed to deserialize a registration assertion if it included command
    endpoint information that had been configured for the device. This has been fixed.

API Changes

  • The MQTT adapter no longer accepts the + wild card character for the tenant ID in a topic filter used for
    subscribing to commands.
  • Support for configuration properties that had been marked as deprecated in Hono versions before 2.0.0 has been
    removed.
  • The Kura protocol adapter has been removed. Eclipse Kura gateways starting with version 4 can still connect to Hono
    using Hono's standard MQTT adapter.
  • The file based device registry has been removed.
  • The Spring Boot based variant of the AMQP protocol adapter has been removed.
  • The Spring Boot based variant of the HTTP protocol adapter has been removed.
  • The Spring Boot based variant of the MQTT protocol adapter has been removed.
  • Usage and implementations of the Device Connection API have been removed.
  • The Spring Boot based variant of the Command Router has been removed.
  • The amqp-device client has been moved from the client module to the new client-device-amqp module. The
    org.eclipse.hono.client.device.amqp.AmqpAdapterClientFactory class is superseded by the new
    org.eclipse.hono.client.device.amqp.AmqpAdapterClient class.
  • Removed deprecated startServiceClient, stopServiceClient and updateLastGateway methods of class
    org.eclipse.hono.adapter.AbstractProtocolAdapterBase.
  • Removed deprecated org.eclipse.hono.util.BufferResult class.
  • Removed deprecated org.eclipse.hono.service.http.AbstractEventBusHttpEndpoint class.
  • The client module has been removed. Its deprecated classes have been removed and the remaining classes have been
    moved to the client-common, amqp-connection and amqp-common modules. The classes for configuring AMQP client
    connections have been moved from the core to the amqp-connection module.
  • The core module no longer supports Java 8 but has been changed to require at least Java 17 as all the other modules.
  • The core module is no longer an OSGi bundle.
  • The org.eclipse.hono.service.auth.AuthenticationService's method signatures have been changed to return a Future
    instead of accepting a Handler<AsyncResult>.
  • The org.eclipse.hono.client.amqp.connection.ConnectionFactory's method signatures have been changed to return a Future
    instead of accepting a Handler<AsyncResult>.
  • Removed unused classes org.eclipse.hono.util.EventBusMessage and org.eclipse.hono.util.MessageTap.
  • Moved org.eclipse.hono.util.BaseMessageFilter to service-base module.
  • Moved org.eclipse.hono.util.AmqpErrorException to amqp-connection client module.
  • Moved org.eclipse.hono.util.TimeUntilDisconnectNotification to application client module.
  • The org.eclipse.hono.util.RequestResponseResult class hierarchy's dependency on the Proton-J ApplicationProperties class
    has been removed. Instead, the constructors now accept a standard Map containing the properties.
  • Moved several AMQP 1.0 specific constants from org.eclipse.hono.util.Constants to
    org.eclipse.hono.client.amqp.connection.AmqpConstants in the amqp-connection client module.
  • Moved the code for injecting and extracting a tracing context to/from AMQP 1.0 messages to the amqp-connection
    client module.
  • Moved org.eclipse.hono.util.TelemetryExecutionContext to adapter-base module.
  • The amqp-device client module no longer supports including arbitrary properties in telemetry, event and command
    response messages because it was undefined how these properties would be processed by the AMQP protocol adapter.
  • The application client module no longer supports including arbitrary properties in command messages
    because it was undefined how these properties would be processed by the Hono components.
  • The order of the method parameters of the org.eclipse.hono.application.client.CommandSender interface have been changed
    so that mandatory parameters come first.
  • The hono-service-base-quarkus module has been removed. Its content has been integrated in the hono-service-base module.
  • The hono-adapter-base-quarkus module has been removed. Its content has been integrated in the hono-adapter-base module.
  • The amqp-device client no longer requires supplying a tenant ID when creating a client or invoking any of its
    methods.
  • The Hono components now export tracing data using the OpenTelemetry Protocol (OTLP). See the
    Monitoring & Tracing guide for details on how to configure the trace sampling and the OpenTelemetry Collector
    endpoint to send the traces to. The jaeger Maven build profile used for including the Jaeger client in the Hono images has
    been removed. In order to forward Hono traces to a Jaeger back-end, the OpenTelemetry Collector should be configured accordingly.
  • The Hono components now support reading and writing trace context information from and to messages exchanged with
    other applications in the format defined by the W3C Trace Context and the
    W3C Baggage specifications. The Jaeger native propagation format used in earlier Hono
    versions is not supported any more.
  • The Hono command line client has been re-implemented using the Picocli framework. The synopsis of the client has been
    changed to provide for a richer user experience. The Getting Started guide has been updated to use the new command
    line client as well.
  • The Hono protocol adapter, command router and device registry Maven modules and Docker images have been renamed,
    removing the -vertx and -quarkus parts from the names.
  • The hono-adapters-quarkus and hono-services-quarkus Maven modules, used as parent modules for protocol adapter
    and service implementations, have been renamed to hono-adapters-parent and hono-services-parent, respectively.
  • The hono.messages metrics have been renamed to hono.telemetry and hono.messages.received has been renamed to
    hono.telemetry.processing.duration.
  • The hono.commands metrics have been renamed to hono.command.
  • The hono.downstream metrics have been renamed to hono.amqp, hono.downstream.sent has been renamed to
    hono.amqp.delivery.duration and hono.downstream.full has been renamed to hono.amqp.nocredit.
  • Hono’s service components and protocol adapters now use the Quarkus SmallRye Health extension to implement the health
    check and metrics endpoints. That means the health check server configuration is now done via the corresponding Quarkus
    configuration properties and not via hono.healthCheck properties any more. See the Monitoring & Tracing guide for details on...
Read more

1.11.3

06 Apr 07:42
Compare
Choose a tag to compare

Fixes & Enhancements

  • HonoConnectionImpl instances failed to release/close the underlying TCP/TLS connection when its disconnect or
    shutdown method had been invoked. This has been fixed.
  • In the Quarkus variant of the Hono auth component, the provided metrics did not contain the default set of tags, as
    used in the other Hono components (e.g. host or component-name). This has been fixed.

1.12.2

01 Apr 09:08
Compare
Choose a tag to compare

Fixes & Enhancements

  • The Quarkus variant of the MongoDB device registry did not accept HTTP endpoint credentials that worked with the
    Spring Boot based variant because password hashes were created in lower case instead of upper case. This has been fixed.
  • In some cases, invalid HTTP requests to the HTTP adapter or the Device Registry caused a response
    with a 500 status code instead of the corresponding 4xx status code. This has been fixed.
  • HonoConnectionImpl instances failed to release/close the underlying TCP/TLS connection when its disconnect or
    shutdown method had been invoked. This has been fixed.
  • In the Quarkus variants of the MongoDB device registry and the Hono auth component, the provided metrics did not
    contain the default set of tags, as used in the other Hono components (e.g. host or component-name). This has been
    fixed.

1.12.1

24 Feb 15:46
Compare
Choose a tag to compare

Fixes & Enhancements

  • The Quarkus variant of the MongoDB based device registry failed to start up if the hono.mongodb.dbName property
    was not set. However, the DB name should not be required if a connection string is set using the
    hono.mongodb.connectionString property. This has been fixed.
  • Using OpenSSL with the Quarkus based variant of Hono components did not work as described in the Secure Communication
    guide. This has been fixed.
  • The connection pool configuration for the HotRod client in the Quarkus variant of the Command Router component
    didn't support using property names in camel-case. This has been fixed.

1.12.0

09 Feb 07:25
Compare
Choose a tag to compare

New Features

  • The Mongo DB based device registry now supports multiple tenants to use the same trust anchors for authenticating
    devices based on client certificates. The devices belonging to such tenants need to indicate the tenant identifier
    using the Server Name Indication extension during their TLS handshake with a protocol adapter. Please refer to the
    Device Registry Management API for details on how to configure tenants accordingly. Please refer to the protocol
    adapter user guides and the Device Identity concept page for details regarding device authentication based on client
    certificates.
  • A Quarkus based variant of the MongoDB device registry has been added.

Fixes & Enhancements

  • The device registry containers might not have started up properly when used with Kafka as the messaging
    infrastructure. This has been fixed.
  • The MongoDB device registry did not accept HTTP endpoint credentials that worked with Hono <= 1.10 because
    password hashes were created in lower case instead of upper case. This has been fixed.
  • The native executable of the Command Router component did not start when configured with an embedded cache.
    This has been fixed.
  • There was an issue trying to send connection events concerning unauthenticated MQTT/AMQP devices. This has been fixed.

Deprecations

  • The Spring Boot based variant of the MongoDB device registry has been deprecated and marked for removal in Hono 2.0.0.

1.11.2

07 Feb 13:15
Compare
Choose a tag to compare

Fixes & Enhancements

  • The MongoDB device registry did not accept HTTP endpoint credentials that worked with Hono <= 1.10 because
    password hashes were created in lower case instead of upper case. This has been fixed.
  • The native executable of the Command Router component did not start when configured with an embedded cache.
    This has been fixed.
  • There was an issue trying to send connection events concerning unauthenticated MQTT/AMQP devices. This has been fixed.

1.11.0

24 Jan 12:58
Compare
Choose a tag to compare

New Features

  • The Authentication Server now also reports the hono.connections.attempts metric which counts the number of authentication
    attempts made by clients.
  • The JDBC DB based registry now also supports enforcement of registration limits configured at the tenant level.
    In particular, the maximum number of devices and the maximum number of credentials per device can be set in
    a tenant's registration-limits property. Please refer to the User Guide for details.
  • Kafka clients used by a component can now be configured individually instead of all clients of a type using the same
    configuration. The prefixes that are prepended to the configuration properties of the native Kafka client have
    changed. For existing configuration properties prefixed with hono.kafka.commonClientConfig properties, no change is
    needed. Other configurations with specific consumer/producer/admin client properties have to be adapted. Please refer
    to the Hono Kafka Client Configuration Guide for details.
  • The protocol adapters now include a ttl header/property in every message being forwarded, regardless of message
    type. This allows a consumer of a message to easily determine if the message should be processed or considered
    expired already. The device registry supports the definition of default ttl values for the different types of
    messages at both the tenant and device level. Please refer to the Tenant API for details regarding the
    corresponding default property names to use.

Fixes & Enhancements

  • The number of credits that the Mongo DB based registry would flow to a newly connected client could not be set using
    the documented environment variable HONO_CREDENTIALS_SVC_RECEIVERLINKCREDIT. Instead, the initial link credit can be
    configured using environment variable HONO_REGISTRY_AMQP_RECEIVERLINKCREDIT. The Mongo DB based registry's admin guide
    has been updated accordingly.
  • When using Kafka messaging, there could possibly be an exception during startup of the Command Router component,
    meaning the component was potentially only available after a number of startup attempts. This has been fixed.
  • The Quarkus based variant of the Lora protocol adapter did not start up unless the HONO_LORA_COMMANDENABLEDTENANTS
    environment variable had been set. This has been fixed by removing this (unused) variable from the Lora adapter
    altogether.
  • All downstream messages that can be consumed via Hono's north bound APIs now include a creation-time header
    which indicates the point in time at which the message has been created.
  • The error messages returned by protocol adapters when sending commands received via Kafka now include a reasonable
    error description.
  • The tenant's configuration property auto-provisioning-device-id-template is now extended to support more
    subjectDN's attributes namely Organizational Unit Name (OU) and Organization Name (O). For more information
    please refer to the Device Registry Management API.
  • The container images published by the Hono project are now built on top of Java 17 base images provided by the
    Eclipse Temurin project.
  • The Hono container images released with tag 1.10.0 failed to start up when not running as user root because the
    Java process was lacking authority to create a temporary directory in the file system's root folder (/).
    This has been fixed.
  • Command response messages published via Kafka did not contain the tenant_id header. This has been fixed.
  • Hono's components now support configuring the ciphers used in the TLS handshake when connecting to Infinispan servers.
    For the Command Router component remote data grid configuration this can be done by setting the hono.commandRouter.cache.remote.sslCiphers property.
  • When using Kafka messaging, the Hono components will now retry creating the Kafka clients in case the Kafka bootstrap
    server URLs are not yet resolvable. This will prevent unnecessary restarts of the Hono components during initial
    deployment.
  • The native image variant of the Command Router component failed to connect to an Infinispan server using SASL
    SCRAM. This has been fixed.
  • The lora adapter supports unconfirmed uplink data for the firefly provider.
  • The poll timeout used by the Kafka consumer clients in the Hono components can now be configured individually.
    Please refer to the Hono Kafka Client Configuration Guide for details.

Deprecations

  • The Spring Boot based variant of the protocol adapters has been deprecated and marked for removal in Hono 2.0.0.
  • The Kura 3 protocol adapter has been deprecated and marked for removal in Hono 2.0.0. Support for Kura version 4 and
    later is still available by means of Hono's standard MQTT adapter.

API Changes

  • The hono.kafka.defaultClientIdPrefix configuration property needs to be removed from existing configurations.
    Configuring parts of the created Kafka client identifiers should usually not be needed any more. To still set a custom
    part, the client.id property value may be used instead. It is adopted as prefix for created client identifiers.
  • A new API for notifications among Hono components has been introduced. For Hono deployments using an AMQP messaging
    network, it has to be made sure that addresses with the notification/ prefix are configured to use multicast.
    See the tests/src/test/resources/qpid/qdrouterd-with-broker.json file for an example Qpid Dispatch Router
    configuration.

1.10.1

18 Jan 08:45
Compare
Choose a tag to compare

1.10.1

Fixes & Enhancements

  • The number of credits that the Mongo DB based registry would flow to a newly connected client could not be set using
    the documented environment variable HONO_CREDENTIALS_SVC_RECEIVERLINKCREDIT. Instead, the initial link credit can be
    configured using environment variable HONO_REGISTRY_AMQP_RECEIVERLINKCREDIT. The Mongo DB based registry's admin guide
    has been updated accordingly.
  • When using Kafka messaging, there could possibly be an exception during startup of the Command Router component,
    meaning the component was potentially only available after a number of startup attempts. This has been fixed.
  • The Quarkus based variant of the Lora protocol adapter did not start up unless the HONO_LORA_COMMANDENABLEDTENANTS
    environment variable had been set. This has been fixed by removing this (unused) variable from the Lora adapter
    altogether.
  • The Hono container images released with tag 1.10.0 failed to start up when not running as user root because the
    Java process was lacking authority to create a temporary directory in the file system's root folder (/).
    This has been fixed.
  • Command response messages published via Kafka did not contain the tenant_id header. This has been fixed.
  • Hono's components now support configuring the ciphers used in the TLS handshake when connecting to Infinispan servers.
    For the Command Router component remote data grid configuration this can be done by setting the
    hono.commandRouter.cache.remote.sslCiphers property.
  • When using Kafka messaging, protocol adapters may have shown a prolonged delay in processing command & control messages
    in certain situations in which one Kafka cluster node was shortly unavailable. This has been fixed.
  • The native image variant of the Command Router component failed to connect to an Infinispan server using SASL
    SCRAM. This has been fixed.
  • The lora adapter supports unconfirmed uplink data for the firefly provider.