Version 1.0.0-M2 of Eclipse Ditto, released on 04.11.2019

The second milestone is one last stop preparing for the upcoming “1.0.0” release.


Don’t allow double slashes in JSON pointers and REST

Ditto allowed to have double slashed in JSON pointers (e.g.: features//foo/properties) and HTTP endpoints. Allowing those did not always result the API behave like expected, so this is now handled more strictly. From now on, a JsonPointerInvalidException will be thrown whenever double slashes are encountered, e.g. resulting in a status code 400 (Bad request) at the HTTP API.

Connection JSON format was adjusted

As a result of the newly added feature “Map Hono device connection status to Thing feature” (see below), the JSON format of connections was adjusted.

The new format is documented here: connections payload mapping configuration.

The good news however is that previously created connections will automatically be migrated to that format (e.g. when querying) the API, so the old format is still supported.

New features

Enhance Ditto’s connectivity by invoking HTTP endpoints

One of the bigger feature enhancements since the last milestone release is connections to existing HTTP endpoints/servers.
By adding the “connection type” HTTP to Ditto’s connectivity feature Ditto can now perform HTTP calls for the configured “targets”, e.g. for twin events.

That may be used in order to integrate with other public HTTP APIs. See also the published blog post about that.

Map Hono device connection status to Thing feature

The integration with Eclipse Hono was improved by adding the possibility tp extract creation-time and ttd headers from consumed Hono telemetry and event messages and automatically updating the targeted thing with a ConnectionStatus feature.

This feature was added by enhancing and generalizing the overall payload mapping feature, as a result now multiple payload mappings may be defined and selectively applied to sources/targets in connections.

Support for OAuth based authentication in Ditto Java client

In 1.0.0-M1a support for arbitrary OpenID Connect providers was added to Ditto.
Now the Ditto Java client can authenticate itself by either providing “client-id” and “client-secret” or by supplying JWT tokens via a custom callback.

Throttle max. processed inbound websocket per time interval

It is not always desirable that a single websocket connection may “flood” a Ditto backend with a massive amount of commands.
This makes it possible to configure the amount of websocket commands limit per duration interval.
The defaults configuration is: 100 / 1second


When things were deleted, they were still available and findable in the search index (as the search index was cleared via a TTL index). This is now fixed.

Failed connections AMQP 1.0 target didn’t back-off

When an AMQP 1.0 endpoint did not allow to open a link to an address, Ditto tried to reconnect in a high frequency. As such errors are most likely configuration errors, that almost never is a good solution. The aggressive reconnect produced a lot of load both to Ditto and the AMQP 1.0 endpoint.
This fix introduces an exponential back-off mechanism.

Various smaller bugfixes

This is a complete list of the merged pull requests.