Version 0.9.0 of Eclipse Ditto, released on 10.07.2019
Edit this page

During several very hot summer days the Eclipse Ditto team worked on that last issues which were blocking our next release: 0.9.0.

The successor release of 0.8.0 will most likely be the last “0.” incubation release as Ditto is moving forward for a 1.0.0 and a project graduation in Eclipse IoT.

Same as for 0.8.0 this release is completely IP (intellectual property) checked by the Eclipse Foundation meaning that project code as well as all used dependencies were “[…] reviewed to ensure that the copyrights expressed are correct, licensing is valid and compatible, and that other issues have been uncovered and properly investigated.”

What’s in this release?

Eclipse Ditto 0.9.0 focuses on the following areas:

  • Memory improvements for huge amounts (multi million) of digital twins which are held in memory
  • Adding metrics and logging around the connectivity feature in order to enable being able to operate connections to foreign systems/brokers via APIs
  • Enhancing Ditto’s connectivity feature by additionally being able to connect to Apache Kafka
  • Performance improvements of Ditto’s search functionality
  • Stabilization of cluster bootstrapping
  • Refactoring of how the services configurations are determined
  • Addition of a Helm template in order to simplify Kubernetes based deployments
  • Contributions from Microsoft in order to ease operating Eclipse Ditto on Microsoft Azure

Changelog

Compared to the latest milestone release 0.9.0-M2, the following changes, new features and bugfixes were added.

Changes

Streamline configuration

In this release, we changed how internally the configuration is determined in Ditto’s microservices. This should not have any impact on a user of Eclipse Ditto. As however some configuration keys were remanded or restructured, some adjustments when manually configuring Ditto could be required.

New features

Introduce cursor-based paging for search requests

In order to provide a constant performance for using pagination for the things-search miscroservice across even large result sets (100s of thousands or more) of digital twins, a new cursor-based approach was added in addition to the old offset/limit approach which gets slower for each page.

Simple throttling for amqp 1.0 consumers

Added a simple throttling mechanism for amqp 1.0 consumers. The throttling is configurable by defining the number of messages allowed per time interval.

Collect connectivity log entries and provide via devops command

In order to let a user analyze failures / unexpected behavior in his connections (e.g. to an MQTT or AMQP broker) without giving him full access to the log-files of Ditto, a connection scoped mechanism for retrieving connectivity logs was added.

Bugfixes

Memory and performance fixes in concierge, gateway

Ditto’s concierge service did use a sharding approach for enforcing authorization information which lead to huge amounts of memory required when managing multi million of digital twins.

That, in addition to some memory fixes in the gateway and addition of metrics, was fixed in this PR.

Ensure ordering for processed commands

In previous versions of Ditto the order in which command were processed not guaranteed to be maintained. As maintaining the order however is the expected behavior, we decided to treat that as bug and added to the concierge service (where the order could be lost) to sequentially process commands issues via HTTP/WebSocket and connections.

This release contains several bugfixes, this is a complete list of the merged pull requests.

API stability

As you noticed, Ditto is not yet released as 1.x version, it is still an incubating Eclipse project.

That means that the project could choose to break APIs at any time without prior deprecation.

We however can already guarantee that at the HTTP API for API version 1 and 2 the API stability is already ensured for the core functionality of managing things and policies.

As the commercial product based on Eclipse Ditto, Bosch IoT Things, is already used productive and in various projects, the API stability has to be and will be ensured moving forward towards a 1.0.0 release.

Roadmap

The Ditto project plans on releasing (non-milestone releases) twice per year, once every 6 months.

In late 2019 we expect to graduate (exit the Eclipse incubation phase) with a 1.0.0 release.