Version 1.4.0 of Eclipse Ditto, released on 28.10.2020
Edit this page

Ditto 1.4.0 is API and binary compatible to prior Eclipse Ditto 1.x versions.

Changelog

Compared to the latest release 1.3.0, the following changes, new features and bugfixes were added.

Changes

Status codes of live responses are no longer interpreted for acknowledgement requests

Senders of live responses may freely choose the status code, since it no longer affects the technical settlement and redelivery of the corresponding live commands.

The header response-required is always set to false for responses and events

Ditto sets the header response-required to false for signals that do not anticipate any responses, so that the header has a consistent meaning regardless of signal type.

OCSP is optional for connections

Ditto will establish a connection even if the broker has a revoked certificate according to OCSP. Failed revocation checks will generate warnings in the connection log. This is to guard against unavailability of OCSP servers.

Placeholder topic:entityId renamed to topic:entityName

The placeholder topic:entityId was not named correctly. It was resolved with the name of an entity and not the complete ID. Therefore, a new placeholder topic:entityName is introduced which reflects correctly what it means.

New features

Acknowledgement label declaration

Each subscriber of Ditto signals by Websocket or other connections is required to declare the labels of acknowledgements it may send. The labels should be unique to the subscriber. Labels of acknowledgements sent via a connection source or issued by a connection target must be prefixed by the connection ID followed by a colon. This is to prevent racing in fulfillment of acknowledgement requests and to detect misconfiguration early.

Acknowledgement label declaration is available in Ditto java client.

Bugfixes

Several bugs in Ditto 1.3.0 were fixed for 1.4.0.
This is a complete list of the merged pull requests, including the fixed bugs.
Here as well for the Ditto Java Client: merged pull requests

Thread-safe loggers added

Concurrency issues in Ditto loggers and logging adapters are addressed by introducing thread-safe variants.

Search via SSE enabled

Search via SSE was disabled due to incorrect initialization. It is enabled again.

Memory consumption of outgoing AMQP connections limited

AMQP 1.0 connections to a slow broker could accumulate indefinitely messages yet to be published. Now only a fixed number of messages are retained.

Java client: Message ordering fixed

There was a bug in Ditto Java client that may cause messages to be handled in a different order than when they are received. It made some search results look empty when they are not.

Migration notes

Acknowledgement labels need to be declared and unique

  • Websocket connections need to declare the labels of any acknowledgments they may send. The acknowledgement labels should be declared as comma-separated list in the query parameter declared-acks. Declared acknowledgement labels should be unique to the Websocket connection. Declaring a duplicate label causes the Websocket connection to close after an error in Ditto protocol.

  • AMQP and MQTT connection sources need to declare the labels of any acknowledgement they may send as a JSON array in the JSON field declaredAcks. The acknowledgement labels should be prefixed by the connection ID and a colon.

  • Connection targets of all protocols need to prefix their issued acknowledgements by the connection ID and a colon.

Details are in the documentation.