The second minor release of Ditto 3.x, Eclipse Ditto version 3.2.0 is here.
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.”
Eclipse Ditto 3.2.0 focuses on the following areas:
- New History API in order to be able to:
- access historical state of things/policies/connections (with either given revision number or timestamp)
- stream persisted events of things/policies via async APIs (WebSocket, Connections) and things also via existing SSE (Server-Sent-Events) API
- configure deletion retention of events in the database for each entity
- Addition of new Eclipse Hono connection type for Ditto managed connections
- Option to do case-insensitive searches and addition of a new RQL operator to declare case-insensitive like:
- UI enhancements:
- Push notifications on the Ditto UI using SSE (Server-Sent-Events), e.g. on thing updates
- Autocomplete functionality for the search slot
- Added configuring
Bearerauth type for the “devops” authentication
- Support for “merge” / “patch” functionality in the JS client
The following non-functional work is also included:
None in this release.
The following notable fixes are included:
- Undo creating implicitly created policy as part of thing creation if creation of thing failed
Starting with this release, Eclipse Ditto is now able to provide historical values via its APIs.
Ditto makes use of the Event Sourcing persistence pattern in order to persist the different managed entities:
As a result of this persistence pattern, the history therefore was “always there” (as delta events in the database), it was just not yet provided as API.
This gap has now been closed, see the added documentation for “History capabilities”.
A configurable cleanup retention time lets the operator of
Ditto decide how much of history to keep, differently configured for “things”, “policies” and “connections”.
For policies and connections it might even make sense to never clean up any events (if only few updates are expected to be done) and as a result get audit log capabilities for those entities (to find out “who” did “what” changes “when”) - or to e.g. undo configuration changes to connections or compare between different revisions.
Possible is also streaming all events from a thing or policy in order to e.g. show the change of a thing’s state (or a particular property value) over time.
A new connection type Hono was added which takes some configuration from static Ditto configuration (e.g. the Kafka endpoint and credentials) in order to better abstract from potential changes to Eclipse Hono™, e.g. regarding Kafka topic structure.
Ditto’s search API did not yet provide the option to perform a search (or apply an RQL filter) ignoring
the upper/lower case of words.
This option has been added as new
ilike function, both to the search and to all places where
RQL filter can be used.
This was a contribution from Abhijeet Mishra - many thanks for that.
Enhancements in Ditto explorer UI
You can use it in order to e.g. connect to your Ditto installation to manage things, policies and even connections.
Contributions in this release:
- UI activate Server Sent Events
- Explorer UI - autocomplete for search
- UI - removed old dropdown for searchfilters
- UI: Provide Bearer authentication for devops user
Enhancements in Ditto Clients
This was a contribution from Pieter-Jan Lanneer - many thanks for that.
None in this release.
Some bugs in Ditto 3.1.x were also fixed for 3.2.0.
This is a complete list of the
Here as well for the Ditto Clients: merged pull requests for milestone 3.2.0
Fixes providing atomic behaviour while creating a thing and an implicit policy as result of the thing creation.
In the rare case of failing to create a thing, its policy will be rolled back (deleted) in order to not fail create retry.
Looking forward, the (current) ideas for Ditto 3.3.0 are:
- Support replacing certain json objects in a merge/patch command instead of merging their fields
- UI: Enhance Ditto-UI to configure log levels of Ditto
- Provide CoAP endpoint in Ditto’s gateway, providing the Ditto HTTP API via CoAP
- Maybe - as no-one declared interest yet in this
- Perform a benchmark of Ditto and provide a “tuning” chapter in the documentation as a reference to the commonly
- how many Things Ditto can manage
- how many updates/second can be done
- whether Ditto can scale horizontally
- how many resources (e.g. machines) are required at which scale