Skip to content

Commit 36fe119

Browse files
authored
Merge pull request #1286 from bosch-io/doc/ditto-230-release-notes
prepare Ditto 2.3.0 release and release notes, blogpost, etc.
2 parents 60fe109 + e998b1a commit 36fe119

File tree

10 files changed

+276
-34
lines changed

10 files changed

+276
-34
lines changed

SECURITY.md

+3-3
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,10 @@
55
These versions of Eclipse Ditto are currently being supported with security updates.
66

77
| Version | Supported |
8-
| ------- | ------------------ |
8+
|---------| ------------------ |
9+
| 2.3.x | :white_check_mark: |
910
| 2.2.x | :white_check_mark: |
10-
| 2.1.x | :white_check_mark: |
11-
| < 2.1.0 | :x: |
11+
| < 2.2.0 | :x: |
1212

1313
## Reporting a Vulnerability
1414

documentation/src/main/resources/_config.yml

+2
Original file line numberDiff line numberDiff line change
@@ -114,6 +114,8 @@ plugins:
114114
docVersions:
115115
- label: "development"
116116
basePath: ""
117+
- label: "2.3"
118+
basePath: "2.3"
117119
- label: "2.2"
118120
basePath: "2.2"
119121
- label: "2.1"

documentation/src/main/resources/_data/sidebars/ditto_sidebar.yml

+3
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,9 @@ entries:
2323
- title: Release Notes
2424
output: web
2525
folderitems:
26+
- title: 2.3.0
27+
url: /release_notes_230.html
28+
output: web
2629
- title: 2.2.2
2730
url: /release_notes_222.html
2831
output: web
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,89 @@
1+
---
2+
title: "Announcing Eclipse Ditto Release 2.3.0"
3+
published: true
4+
permalink: 2022-01-21-release-announcement-230.html
5+
layout: post
6+
author: thomas_jaeckle
7+
tags: [blog]
8+
hide_sidebar: true
9+
sidebar: false
10+
toc: false
11+
---
12+
13+
The Eclipse Ditto teams announces availability of Eclipse Ditto [2.3.0](https://projects.eclipse.org/projects/iot.ditto/releases/2.3.0).
14+
15+
It contains mainly new features around the Ditto ["live" channel](protocol-twinlive.html#live) which can be used to
16+
directly interact with devices.
17+
18+
Such live commands may now be easily [created via the HTTP API](2021-12-20-http-live-channel.html) - and in addition
19+
a conventional API call targeting the persisted [twin](protocol-twinlive.html#twin) may now be automatically converted
20+
to a live command, based on a passed [live channel condition](2021-12-22-live-channel-condition.html).
21+
22+
With that, we are proud that we now can provide a really powerful addition to Ditto's "Digital Twin pattern":
23+
* requesting data from an actual device e.g. when it is currently connected/online (based on a [live channel condition](basic-conditional-requests.html#live-channel-condition) targeting the online status)
24+
* fall back to its last known persisted state
25+
* if it is currently not online (the condition did not match)
26+
* or also as a fallback, if the device does not answer within e.g. 10 seconds
27+
* all that within one single API call, including information from which source the data was reported back
28+
* the "live" device or the persisted "twin"
29+
30+
## Adoption
31+
32+
Companies are willing to show their adoption of Eclipse Ditto publicly: [https://iot.eclipse.org/adopters/?#iot.ditto](https://iot.eclipse.org/adopters/?#iot.ditto)
33+
34+
From our various [feedback channels](feedback.html) we however know of more adoption.
35+
If you are making use of Eclipse Ditto, it would be great to show this by adding your company name to that list of
36+
known adopters.
37+
In the end, that's one main way of measuring the success of the project.
38+
39+
40+
## Changelog
41+
42+
The main improvements and additions of Ditto 2.3.0 are:
43+
44+
* HTTP API for "live" commands
45+
* Smart channel strategy for live/twin read access
46+
* Configurable allowing creation of entities (policies/things) based on namespace and authenticated subjects
47+
* Allow using `*` as a placeholder for the feature id in selected fields
48+
49+
The following notable fixes are included:
50+
51+
* Fix potential concurrent modification errors when using JavaScript payload mapping and global variables
52+
* Fix reconnect backoff for Kafka connections with authentication failures
53+
* Fix caching of JWTs in HTTP push connections
54+
* Fix potentially unreachable client actors in connections with `clientCount > 1`
55+
* Fix search inconsistencies for very active things during shard relocation (e.g. on rolling updates)
56+
* Fix that a Kafka connection with only targets remains "open" even if Kafka broker is not available
57+
* Allow usage of absolute domain paths ending with a "." as Kafka bootstrap servers
58+
* Ensure that Ditto pub/sub state is eventually consistent with a guaranteed upper time limit
59+
60+
The following non-functional work is also included:
61+
62+
* Update of several used dependencies
63+
64+
Please have a look at the [2.3.0 release notes](release_notes_230.html) for a more detailed information on the release.
65+
66+
67+
## Artifacts
68+
69+
The new Java artifacts have been published at the [Eclipse Maven repository](https://repo.eclipse.org/content/repositories/ditto/)
70+
as well as [Maven central](https://repo1.maven.org/maven2/org/eclipse/ditto/).
71+
72+
The Ditto JavaScript client release was published on [npmjs.com](https://www.npmjs.com/~eclipse_ditto):
73+
* [@eclipse-ditto/ditto-javascript-client-dom](https://www.npmjs.com/package/@eclipse-ditto/ditto-javascript-client-dom)
74+
* [@eclipse-ditto/ditto-javascript-client-node](https://www.npmjs.com/package/@eclipse-ditto/ditto-javascript-client-node)
75+
76+
77+
The Docker images have been pushed to Docker Hub:
78+
* [eclipse/ditto-policies](https://hub.docker.com/r/eclipse/ditto-policies/)
79+
* [eclipse/ditto-things](https://hub.docker.com/r/eclipse/ditto-things/)
80+
* [eclipse/ditto-things-search](https://hub.docker.com/r/eclipse/ditto-things-search/)
81+
* [eclipse/ditto-gateway](https://hub.docker.com/r/eclipse/ditto-gateway/)
82+
* [eclipse/ditto-connectivity](https://hub.docker.com/r/eclipse/ditto-connectivity/)
83+
* [eclipse/ditto-concierge](https://hub.docker.com/r/eclipse/ditto-concierge/)
84+
85+
<br/>
86+
<br/>
87+
{% include image.html file="ditto.svg" alt="Ditto" max-width=500 %}
88+
--<br/>
89+
The Eclipse Ditto team

documentation/src/main/resources/pages/ditto/basic-placeholders.md

+3-3
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ or subscriptions for live messages, the following placeholders are available in
4141

4242
| Placeholder | Description |
4343
|-----------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
44-
| `topic:full` | full [Ditto Protocol topic path](protocol-specification-topic.html)<br/>in the form `{namespace}/{entityId}/{group}/`<br/>`{channel}/{criterion}/{action-subject}` |
44+
| `topic:full` | full [Ditto Protocol topic path](protocol-specification-topic.html)<br/>in the form `{namespace}/{entityName}/{group}/`<br/>`{channel}/{criterion}/{action-subject}` |
4545
| `topic:namespace` | Ditto Protocol [topic namespace](protocol-specification-topic.html#namespace) |
4646
| `topic:entityName` | Ditto Protocol [topic entity name](protocol-specification-topic.html#entity-name) |
4747
| `topic:group` | Ditto Protocol [topic group](protocol-specification-topic.html#group) |
@@ -70,7 +70,7 @@ In [connections](basic-connections.html), the following placeholders are availab
7070
| `{%raw%}{{ feature:id }}{%endraw%}` | the ID of the feature (only available if the processed signal was related to a feature) |
7171
| `{%raw%}{{ header:<header-name> }}{%endraw%}` | external header value for connection sources, or Ditto protocol header value for targets and reply-targets (both case-insensitive) |
7272
| `{%raw%}{{ request:subjectId }}{%endraw%}` | primary authorization subject of a command, or primary authorization subject that caused an event |
73-
| `{%raw%}{{ topic:full }}{%endraw%}` | full [Ditto Protocol topic path](protocol-specification-topic.html)<br/>in the form `{namespace}/{entityId}/{group}/`<br/>`{channel}/{criterion}/{action-subject}` |
73+
| `{%raw%}{{ topic:full }}{%endraw%}` | full [Ditto Protocol topic path](protocol-specification-topic.html)<br/>in the form `{namespace}/{entityName}/{group}/`<br/>`{channel}/{criterion}/{action-subject}` |
7474
| `{%raw%}{{ topic:namespace }}{%endraw%}` | Ditto Protocol [topic namespace](protocol-specification-topic.html#namespace) |
7575
| `{%raw%}{{ topic:entityName }}{%endraw%}` | Ditto Protocol [topic entity name](protocol-specification-topic.html#entity-name) |
7676
| `{%raw%}{{ topic:group }}{%endraw%}` | Ditto Protocol [topic group](protocol-specification-topic.html#group) |
@@ -81,7 +81,7 @@ In [connections](basic-connections.html), the following placeholders are availab
8181
| `{%raw%}{{ topic:action-subject }}{%endraw%}` | either Ditto Protocol [topic action](protocol-specification-topic.html#action-optional) or [topic subject](protocol-specification-topic.html#messages-criterion-actions) (for message commands) |
8282
| `{%raw%}{{ resource:type }}{%endraw%}` | the type of the Ditto Protocol [path](protocol-specification.html#path) , one of: `thing`, `policy`, `message` or `connection` |
8383
| `{%raw%}{{ resource:path }}{%endraw%}` | the affected resource's path being the Ditto Protocol [path](protocol-specification.html#path) in JsonPointer notation, e.g. `/` when a complete thing was created/modified/deleted |
84-
| `{%raw%}{{ time:now }}{%endraw%}` | the current timestamp in ISO-8601 format as string in UTC timezone |
84+
| `{%raw%}{{ time:now }}{%endraw%}` | the current timestamp in ISO-8601 format as string in UTC timezone |
8585
| `{%raw%}{{ time:now_epoch_millis }}{%endraw%}` | the current timestamp in "milliseconds since epoch" formatted as string |
8686

8787

documentation/src/main/resources/pages/ditto/basic-thing.md

+2-2
Original file line numberDiff line numberDiff line change
@@ -76,8 +76,8 @@ semantics of the data or adding other useful information about the data points o
7676

7777
```json
7878
{
79-
"thingId": "the.namespace:theId",
80-
"policyId": "the.namespace:thePolicyId",
79+
"thingId": "the.namespace:theName",
80+
"policyId": "the.namespace:thePolicyName",
8181
"definition": "org.eclipse.ditto:HeatingDevice:2.1.0",
8282
"attributes": {
8383
"someAttr": 32,

documentation/src/main/resources/pages/ditto/release_notes_220.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ The following non-functional work is also included:
3333
<br/>
3434

3535
For a complete list of all merged PRs, inspect the following milestones:
36-
* [merged pull requests for milestone 2.1.0](https://github.com/eclipse/ditto/pulls?q=is:pr+milestone:2.2.0)
36+
* [merged pull requests for milestone 2.2.0](https://github.com/eclipse/ditto/pulls?q=is:pr+milestone:2.2.0)
3737

3838
<br/>
3939
<br/>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,127 @@
1+
---
2+
title: Release notes 2.3.0
3+
tags: [release_notes]
4+
published: true
5+
keywords: release notes, announcements, changelog
6+
summary: "Version 2.3.0 of Eclipse Ditto, released on 21.01.2022"
7+
permalink: release_notes_230.html
8+
---
9+
10+
Ditto **2.3.0** is API and [binary compatible](https://github.com/eclipse/ditto/blob/master/documentation/src/main/resources/architecture/DADR-0005-semantic-versioning.md)
11+
to prior Eclipse Ditto 2.x versions.
12+
13+
## Changelog
14+
15+
Eclipse Ditto 2.3.0 includes the following topics/enhancements:
16+
17+
* HTTP API for "live" commands
18+
* Smart channel strategy for live/twin read access
19+
* Configurable allowing creation of entities (policies/things) based on namespace and authenticated subjects
20+
* Allow using `*` as a placeholder for the feature id in selected fields
21+
22+
The following notable fixes are included:
23+
24+
* Fix potential concurrent modification errors when using JavaScript payload mapping and global variables
25+
* Fix reconnect backoff for Kafka connections with authentication failures
26+
* Fix caching of JWTs in HTTP push connections
27+
* Fix potentially unreachable client actors in connections with `clientCount > 1`
28+
* Fix search inconsistencies for very active things during shard relocation (e.g. on rolling updates)
29+
* Fix that a Kafka connection with only targets remains "open" even if Kafka broker is not available
30+
* Allow usage of absolute domain paths ending with a "." as Kafka bootstrap servers
31+
* Ensure that Ditto pub/sub state is eventually consistent with a guaranteed upper time limit
32+
33+
The following non-functional work is also included:
34+
35+
* Update of several used dependencies:
36+
* Akka: `2.6.18`
37+
* Akka Management: `1.1.2`
38+
* Caffeine: `3.0.5`
39+
* Classindex: `3.11`
40+
* Cloudevents: `2.3.0`
41+
* HiveMQ MQTT client: `1.3.0`
42+
* Jackson: `2.12.6`
43+
* Logback: `1.2.10`
44+
* SLF4J: `1.7.32`
45+
* SSL config core: `0.4.3`
46+
* Typesafe config: `1.4.1`
47+
* Rhino JS engine: `1.7.14`
48+
49+
<br/>
50+
51+
For a complete list of all merged PRs, inspect the following milestones:
52+
* [merged pull requests for milestone 2.3.0](https://github.com/eclipse/ditto/pulls?q=is:pr+milestone:2.3.0)
53+
54+
<br/>
55+
<br/>
56+
57+
Compared to the latest release [2.2.0](release_notes_220.html), the following most notable changes, new features and
58+
bugfixes were added.
59+
60+
61+
### New features
62+
63+
#### [HTTP API for "live" commands](https://github.com/eclipse/ditto/issues/106)
64+
65+
Ditto's ["live" channel](protocol-twinlive.html#live) is now also available for commands invoked via HTTP API.
66+
See also the [blogpost covering that topic](2021-12-20-http-live-channel.html).
67+
68+
To qualify a command (e.g. "modify thing" or "retrieve feature property") as a "live" command, the header or
69+
query parameter `channel=live` has to be specified.
70+
71+
Live commands bypass the twin and go directly to the devices.
72+
However, an existing twin is still required for policy enforcement.
73+
74+
75+
#### [Smart channel strategy for live/twin read access](https://github.com/eclipse/ditto/issues/1228)
76+
77+
Ditto adds support for selecting the "twin" or the "live" channel for thing query commands based on an
78+
[RQL condition](basic-rql.html) of a newly added parameter
79+
[live channel condition](basic-conditional-requests.html#live-channel-condition).
80+
See also the [blogpost covering that topic](2021-12-22-live-channel-condition.html).
81+
82+
In addition, a new [payload mapper](connectivity-mapping.html#updatetwinwithliveresponse-mapper) automatically updating
83+
the twin based on received live data from devices was added.
84+
85+
#### [Configurable allowing creation of entities based on namespace and authenticated subjects](https://github.com/eclipse/ditto/pull/1251)
86+
87+
This added feature allows configuring restrictions, which [authenticated subjects](basic-auth.html#authenticated-subjects)
88+
may create new entities (things / policies) in which namespaces.
89+
90+
#### [Allow using `*` as a placeholder for the feature id in selected fields](https://github.com/eclipse/ditto/pull/1277)
91+
92+
When selecting for certain [`fields` of a thing](httpapi-concepts.html#field-selector-with-wildcard) or when using
93+
[signal enrichment (extraFields)](basic-enrichment.html) in order to add more (unchanged) data from a twin to e.g. events
94+
the wildcard `*` can now be used in order to select all features of a thing without the need to know their feature names.
95+
96+
97+
### Bugfixes
98+
99+
Several bugs in Ditto 2.2.x were fixed for 2.3.0.
100+
This is a complete list of the
101+
[merged pull requests](https://github.com/eclipse/ditto/pulls?q=is%3Apr+milestone%3A2.3.0), including the fixed bugs.
102+
103+
104+
## Migration notes
105+
106+
No migrations required updating from Ditto 2.2.x
107+
108+
## Ditto clients
109+
110+
For a complete list of all merged client PRs, inspect the following milestones:
111+
* [merged pull requests for milestone 2.3.0](https://github.com/eclipse/ditto-clients/pulls?q=is:pr+milestone:2.3.0)
112+
113+
### Ditto Java SDK
114+
115+
No mentionable changes/enhancements/bugfixes.
116+
117+
### Ditto JavaScript SDK
118+
119+
See separate [Changelog](https://github.com/eclipse/ditto-clients/blob/master/javascript/CHANGELOG.md) of JS client.
120+
121+
122+
## Roadmap
123+
124+
Looking forward, the current plans for Ditto 2.4.0 are:
125+
126+
* Update service code to Java 17 (APIs stay at Java 8) + run Ditto containers with Java 17 runtime
127+
* Continue work on the started [WoT (Web of Things) integration](https://github.com/eclipse/ditto/pull/1270)

legal/3rd-party-dependencies/compile.txt

+7-6
Original file line numberDiff line numberDiff line change
@@ -29,11 +29,12 @@ com.google.j2objc:j2objc-annotations:jar:1.3:compile
2929
com.google.protobuf:protobuf-java:jar:3.14.0:compile
3030
com.hierynomus:asn-one:jar:0.5.0:compile
3131
com.hivemq:hivemq-mqtt-client:jar:1.3.0:compile
32-
com.lightbend.akka.discovery:akka-discovery-kubernetes-api_2.13:jar:1.0.10:compile
33-
com.lightbend.akka.management:akka-lease-kubernetes_2.13:jar:1.0.10:compile
34-
com.lightbend.akka.management:akka-management_2.13:jar:1.0.10:compile
35-
com.lightbend.akka.management:akka-management-cluster-bootstrap_2.13:jar:1.0.10:compile
36-
com.lightbend.akka.management:akka-management-cluster-http_2.13:jar:1.0.10:compile
32+
com.lightbend.akka.discovery:akka-discovery-kubernetes-api_2.13:jar:1.1.2:compile
33+
com.lightbend.akka.management:akka-lease-kubernetes_2.13:jar:1.1.2:compile
34+
com.lightbend.akka.management:akka-management_2.13:jar:1.1.2:compile
35+
com.lightbend.akka.management:akka-management-cluster-bootstrap_2.13:jar:1.1.2:compile
36+
com.lightbend.akka.management:akka-management-cluster-http_2.13:jar:1.1.2:compile
37+
com.lightbend.akka.management:akka-management-pki_2.13:jar:1.1.2:compile
3738
commons-net:commons-net:jar:3.8.0:compile
3839
com.newmotion:akka-rabbitmq_2.13:jar:5.1.2:compile
3940
com.rabbitmq:amqp-client:jar:5.7.3:compile
@@ -114,7 +115,7 @@ org.mongodb:mongodb-driver-core:jar:4.1.2:compile
114115
org.mongodb:mongodb-driver-reactivestreams:jar:4.1.2:compile
115116
org.mongodb.scala:mongo-scala-bson_2.13:jar:4.1.1:compile
116117
org.mongodb.scala:mongo-scala-driver_2.13:jar:4.1.1:compile
117-
org.mozilla:rhino-runtime:jar:1.7.13:compile
118+
org.mozilla:rhino-runtime:jar:1.7.14:compile
118119
org.ow2.asm:asm-analysis:jar:7.2:compile
119120
org.ow2.asm:asm-commons:jar:7.2:compile
120121
org.ow2.asm:asm:jar:7.2:compile

0 commit comments

Comments
 (0)