Skip to content

Commit 175fdc1

Browse files
authored
chore: Add decision record concerning downward compatibiity (#1797)
* chore: Add decision record concerning downward compatibiity Signed-off-by: Lars Geyer-Blaumeiser <lars.blaumeiser@cofinity-x.com> * rewrite dr based on review comments Signed-off-by: Lars Geyer-Blaumeiser <lars.blaumeiser@cofinity-x.com> * Add review comments Signed-off-by: Lars Geyer-Blaumeiser <lars.blaumeiser@cofinity-x.com> * dependencies Signed-off-by: Lars Geyer-Blaumeiser <lars.blaumeiser@cofinity-x.com> * review comments Signed-off-by: Lars Geyer-Blaumeiser <lars.blaumeiser@cofinity-x.com> * dependencies Signed-off-by: Lars Geyer-Blaumeiser <lars.blaumeiser@cofinity-x.com> --------- Signed-off-by: Lars Geyer-Blaumeiser <lars.blaumeiser@cofinity-x.com>
1 parent d383b30 commit 175fdc1

File tree

2 files changed

+85
-35
lines changed

2 files changed

+85
-35
lines changed

DEPENDENCIES

Lines changed: 43 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -60,8 +60,11 @@ maven/mavencentral/com.fasterxml.jackson/jackson-bom/2.18.2, Apache-2.0, approve
6060
maven/mavencentral/com.fasterxml.uuid/java-uuid-generator/4.1.0, Apache-2.0, approved, clearlydefined
6161
maven/mavencentral/com.github.cliftonlabs/json-simple/3.0.2, Apache-2.0, approved, clearlydefined
6262
maven/mavencentral/com.github.docker-java/docker-java-api/3.4.0, Apache-2.0, approved, clearlydefined
63+
maven/mavencentral/com.github.docker-java/docker-java-api/3.4.1, Apache-2.0, approved, clearlydefined
6364
maven/mavencentral/com.github.docker-java/docker-java-transport-zerodep/3.4.0, Apache-2.0 AND (Apache-2.0 AND BSD-3-Clause), approved, #15745
65+
maven/mavencentral/com.github.docker-java/docker-java-transport-zerodep/3.4.1, Apache-2.0 AND (Apache-2.0 AND BSD-3-Clause), approved, #15745
6466
maven/mavencentral/com.github.docker-java/docker-java-transport/3.4.0, Apache-2.0, approved, clearlydefined
67+
maven/mavencentral/com.github.docker-java/docker-java-transport/3.4.1, Apache-2.0, approved, clearlydefined
6568
maven/mavencentral/com.github.java-json-tools/btf/1.3, Apache-2.0 OR LGPL-3.0-only, approved, #15201
6669
maven/mavencentral/com.github.java-json-tools/jackson-coreutils-equivalence/1.0, LGPL-3.0 OR Apache-2.0, approved, clearlydefined
6770
maven/mavencentral/com.github.java-json-tools/jackson-coreutils/2.0, Apache-2.0 OR LGPL-3.0-or-later, approved, #15186
@@ -207,11 +210,11 @@ maven/mavencentral/io.prometheus/simpleclient_httpserver/0.16.0, Apache-2.0, app
207210
maven/mavencentral/io.prometheus/simpleclient_tracer_common/0.16.0, Apache-2.0, approved, clearlydefined
208211
maven/mavencentral/io.prometheus/simpleclient_tracer_otel/0.16.0, Apache-2.0, approved, clearlydefined
209212
maven/mavencentral/io.prometheus/simpleclient_tracer_otel_agent/0.16.0, Apache-2.0, approved, clearlydefined
210-
maven/mavencentral/io.rest-assured/json-path/5.5.1, , restricted, clearlydefined
211-
maven/mavencentral/io.rest-assured/rest-assured-common/5.5.1, , restricted, clearlydefined
213+
maven/mavencentral/io.rest-assured/json-path/5.5.1, Apache-2.0, approved, #19524
214+
maven/mavencentral/io.rest-assured/rest-assured-common/5.5.1, Apache-2.0, approved, #19522
212215
maven/mavencentral/io.rest-assured/rest-assured/5.5.0, Apache-2.0, approved, #15676
213216
maven/mavencentral/io.rest-assured/rest-assured/5.5.1, Apache-2.0, approved, #15676
214-
maven/mavencentral/io.rest-assured/xml-path/5.5.1, , restricted, clearlydefined
217+
maven/mavencentral/io.rest-assured/xml-path/5.5.1, Apache-2.0, approved, #19523
215218
maven/mavencentral/io.setl/rdf-urdna/1.1, Apache-2.0, approved, clearlydefined
216219
maven/mavencentral/io.swagger.core.v3/swagger-annotations-jakarta/2.2.22, Apache-2.0, approved, #5947
217220
maven/mavencentral/io.swagger.core.v3/swagger-annotations-jakarta/2.2.25, Apache-2.0, approved, #5947
@@ -570,8 +573,8 @@ maven/mavencentral/org.eclipse.jetty/jetty-util/11.0.24, EPL-2.0 OR Apache-2.0,
570573
maven/mavencentral/org.eclipse.jetty/jetty-webapp/11.0.24, EPL-2.0 OR Apache-2.0, approved, rt.jetty
571574
maven/mavencentral/org.eclipse.jetty/jetty-xml/11.0.24, EPL-2.0 OR Apache-2.0, approved, rt.jetty
572575
maven/mavencentral/org.eclipse.parsson/parsson/1.1.7, EPL-2.0, approved, ee4j.parsson
573-
maven/mavencentral/org.flywaydb/flyway-core/11.3.2, Apache-2.0, approved, clearlydefined
574-
maven/mavencentral/org.flywaydb/flyway-database-postgresql/11.3.2, , restricted, clearlydefined
576+
maven/mavencentral/org.flywaydb/flyway-core/11.3.3, Apache-2.0, approved, clearlydefined
577+
maven/mavencentral/org.flywaydb/flyway-database-postgresql/11.3.3, NOASSERTION, restricted, clearlydefined
575578
maven/mavencentral/org.glassfish.hk2.external/aopalliance-repackaged/3.0.6, EPL-2.0 OR GPL-2.0-only with Classpath-exception-2.0, approved, ee4j.glassfish
576579
maven/mavencentral/org.glassfish.hk2/hk2-api/3.0.6, EPL-2.0 OR GPL-2.0-only with Classpath-exception-2.0, approved, ee4j.glassfish
577580
maven/mavencentral/org.glassfish.hk2/hk2-locator/3.0.6, EPL-2.0 OR GPL-2.0-only with Classpath-exception-2.0, approved, ee4j.glassfish
@@ -646,10 +649,15 @@ maven/mavencentral/org.slf4j/slf4j-api/2.0.16, MIT, approved, #5915
646649
maven/mavencentral/org.slf4j/slf4j-api/2.0.6, MIT, approved, #5915
647650
maven/mavencentral/org.slf4j/slf4j-api/2.0.9, MIT, approved, #5915
648651
maven/mavencentral/org.testcontainers/database-commons/1.20.4, Apache-2.0, approved, #16630
652+
maven/mavencentral/org.testcontainers/database-commons/1.20.5, Apache-2.0, approved, #16630
649653
maven/mavencentral/org.testcontainers/jdbc/1.20.4, Apache-2.0, approved, #16621
654+
maven/mavencentral/org.testcontainers/jdbc/1.20.5, Apache-2.0, approved, #16621
650655
maven/mavencentral/org.testcontainers/junit-jupiter/1.20.4, MIT, approved, #16552
656+
maven/mavencentral/org.testcontainers/junit-jupiter/1.20.5, MIT, approved, #16552
651657
maven/mavencentral/org.testcontainers/postgresql/1.20.4, MIT, approved, #16627
658+
maven/mavencentral/org.testcontainers/postgresql/1.20.5, MIT, approved, #16627
652659
maven/mavencentral/org.testcontainers/testcontainers/1.20.4, MIT, approved, #15747
660+
maven/mavencentral/org.testcontainers/testcontainers/1.20.5, MIT, approved, #15747
653661
maven/mavencentral/org.xmlresolver/xmlresolver/5.2.2, Apache-2.0, approved, clearlydefined
654662
maven/mavencentral/org.xmlunit/xmlunit-core/2.9.1, Apache-2.0, approved, #6272
655663
maven/mavencentral/org.xmlunit/xmlunit-placeholders/2.9.1, Apache-2.0, approved, clearlydefined
@@ -658,64 +666,64 @@ maven/mavencentral/org.yaml/snakeyaml/2.2, Apache-2.0 AND (Apache-2.0 OR BSD-3-C
658666
maven/mavencentral/org.yaml/snakeyaml/2.3, Apache-2.0 AND (Apache-2.0 OR BSD-3-Clause OR EPL-1.0 OR GPL-2.0-or-later OR LGPL-2.1-or-later), approved, #16046
659667
maven/mavencentral/org.yaml/snakeyaml/2.4, Apache-2.0, approved, #19469
660668
maven/mavencentral/software.amazon.awssdk/annotations/2.29.50, Apache-2.0, approved, #17015
661-
maven/mavencentral/software.amazon.awssdk/annotations/2.30.21, Apache-2.0, approved, #19166
669+
maven/mavencentral/software.amazon.awssdk/annotations/2.30.26, Apache-2.0, approved, #19166
662670
maven/mavencentral/software.amazon.awssdk/apache-client/2.29.50, Apache-2.0, approved, #17627
663-
maven/mavencentral/software.amazon.awssdk/apache-client/2.30.21, Apache-2.0, approved, clearlydefined
671+
maven/mavencentral/software.amazon.awssdk/apache-client/2.30.26, Apache-2.0, approved, clearlydefined
664672
maven/mavencentral/software.amazon.awssdk/arns/2.29.50, Apache-2.0, approved, #16994
665-
maven/mavencentral/software.amazon.awssdk/arns/2.30.21, , restricted, clearlydefined
673+
maven/mavencentral/software.amazon.awssdk/arns/2.30.26, Apache-2.0, approved, clearlydefined
666674
maven/mavencentral/software.amazon.awssdk/auth/2.29.50, Apache-2.0, approved, #17626
667-
maven/mavencentral/software.amazon.awssdk/auth/2.30.21, , restricted, clearlydefined
675+
maven/mavencentral/software.amazon.awssdk/auth/2.30.26, Apache-2.0, approved, clearlydefined
668676
maven/mavencentral/software.amazon.awssdk/aws-core/2.29.50, Apache-2.0, approved, #17095
669-
maven/mavencentral/software.amazon.awssdk/aws-core/2.30.21, , restricted, clearlydefined
677+
maven/mavencentral/software.amazon.awssdk/aws-core/2.30.26, Apache-2.0, approved, clearlydefined
670678
maven/mavencentral/software.amazon.awssdk/aws-query-protocol/2.29.50, Apache-2.0, approved, #16999
671-
maven/mavencentral/software.amazon.awssdk/aws-query-protocol/2.30.21, Apache-2.0, approved, #19170
679+
maven/mavencentral/software.amazon.awssdk/aws-query-protocol/2.30.26, Apache-2.0, approved, #19170
672680
maven/mavencentral/software.amazon.awssdk/aws-xml-protocol/2.29.50, Apache-2.0, approved, #17004
673-
maven/mavencentral/software.amazon.awssdk/aws-xml-protocol/2.30.21, , restricted, clearlydefined
681+
maven/mavencentral/software.amazon.awssdk/aws-xml-protocol/2.30.26, Apache-2.0, approved, clearlydefined
674682
maven/mavencentral/software.amazon.awssdk/checksums-spi/2.29.50, Apache-2.0, approved, #17010
675-
maven/mavencentral/software.amazon.awssdk/checksums-spi/2.30.21, Apache-2.0, approved, clearlydefined
683+
maven/mavencentral/software.amazon.awssdk/checksums-spi/2.30.26, Apache-2.0, approved, clearlydefined
676684
maven/mavencentral/software.amazon.awssdk/checksums/2.29.50, Apache-2.0, approved, #17003
677-
maven/mavencentral/software.amazon.awssdk/checksums/2.30.21, , restricted, clearlydefined
685+
maven/mavencentral/software.amazon.awssdk/checksums/2.30.26, Apache-2.0, approved, clearlydefined
678686
maven/mavencentral/software.amazon.awssdk/crt-core/2.29.50, Apache-2.0, approved, #17002
679-
maven/mavencentral/software.amazon.awssdk/crt-core/2.30.21, , restricted, clearlydefined
687+
maven/mavencentral/software.amazon.awssdk/crt-core/2.30.26, Apache-2.0, approved, clearlydefined
680688
maven/mavencentral/software.amazon.awssdk/endpoints-spi/2.29.50, Apache-2.0, approved, #16996
681-
maven/mavencentral/software.amazon.awssdk/endpoints-spi/2.30.21, , restricted, clearlydefined
689+
maven/mavencentral/software.amazon.awssdk/endpoints-spi/2.30.26, Apache-2.0, approved, clearlydefined
682690
maven/mavencentral/software.amazon.awssdk/http-auth-aws-eventstream/2.29.50, Apache-2.0, approved, #16995
683-
maven/mavencentral/software.amazon.awssdk/http-auth-aws-eventstream/2.30.21, Apache-2.0, approved, clearlydefined
691+
maven/mavencentral/software.amazon.awssdk/http-auth-aws-eventstream/2.30.26, Apache-2.0, approved, clearlydefined
684692
maven/mavencentral/software.amazon.awssdk/http-auth-aws/2.29.50, Apache-2.0, approved, #17001
685-
maven/mavencentral/software.amazon.awssdk/http-auth-aws/2.30.21, Apache-2.0, approved, clearlydefined
693+
maven/mavencentral/software.amazon.awssdk/http-auth-aws/2.30.26, Apache-2.0, approved, clearlydefined
686694
maven/mavencentral/software.amazon.awssdk/http-auth-spi/2.29.50, Apache-2.0, approved, #17005
687-
maven/mavencentral/software.amazon.awssdk/http-auth-spi/2.30.21, , restricted, clearlydefined
695+
maven/mavencentral/software.amazon.awssdk/http-auth-spi/2.30.26, Apache-2.0, approved, clearlydefined
688696
maven/mavencentral/software.amazon.awssdk/http-auth/2.29.50, Apache-2.0, approved, #16998
689-
maven/mavencentral/software.amazon.awssdk/http-auth/2.30.21, , restricted, clearlydefined
697+
maven/mavencentral/software.amazon.awssdk/http-auth/2.30.26, Apache-2.0, approved, clearlydefined
690698
maven/mavencentral/software.amazon.awssdk/http-client-spi/2.29.50, Apache-2.0, approved, #17014
691-
maven/mavencentral/software.amazon.awssdk/http-client-spi/2.30.21, Apache-2.0, approved, #19169
699+
maven/mavencentral/software.amazon.awssdk/http-client-spi/2.30.26, Apache-2.0, approved, #19169
692700
maven/mavencentral/software.amazon.awssdk/iam/2.29.50, Apache-2.0, approved, #16993
693701
maven/mavencentral/software.amazon.awssdk/identity-spi/2.29.50, Apache-2.0, approved, #17007
694-
maven/mavencentral/software.amazon.awssdk/identity-spi/2.30.21, , restricted, clearlydefined
702+
maven/mavencentral/software.amazon.awssdk/identity-spi/2.30.26, Apache-2.0, approved, clearlydefined
695703
maven/mavencentral/software.amazon.awssdk/json-utils/2.29.50, Apache-2.0, approved, #17013
696-
maven/mavencentral/software.amazon.awssdk/json-utils/2.30.21, , restricted, clearlydefined
704+
maven/mavencentral/software.amazon.awssdk/json-utils/2.30.26, Apache-2.0, approved, clearlydefined
697705
maven/mavencentral/software.amazon.awssdk/metrics-spi/2.29.50, Apache-2.0, approved, #17006
698-
maven/mavencentral/software.amazon.awssdk/metrics-spi/2.30.21, , restricted, clearlydefined
706+
maven/mavencentral/software.amazon.awssdk/metrics-spi/2.30.26, Apache-2.0, approved, clearlydefined
699707
maven/mavencentral/software.amazon.awssdk/netty-nio-client/2.29.50, Apache-2.0, approved, #17094
700-
maven/mavencentral/software.amazon.awssdk/netty-nio-client/2.30.21, Apache-2.0, approved, #19163
708+
maven/mavencentral/software.amazon.awssdk/netty-nio-client/2.30.26, Apache-2.0, approved, #19163
701709
maven/mavencentral/software.amazon.awssdk/profiles/2.29.50, Apache-2.0, approved, #17012
702-
maven/mavencentral/software.amazon.awssdk/profiles/2.30.21, Apache-2.0, approved, #19171
710+
maven/mavencentral/software.amazon.awssdk/profiles/2.30.26, Apache-2.0, approved, #19171
703711
maven/mavencentral/software.amazon.awssdk/protocol-core/2.29.50, Apache-2.0, approved, #17000
704-
maven/mavencentral/software.amazon.awssdk/protocol-core/2.30.21, Apache-2.0, approved, #19168
712+
maven/mavencentral/software.amazon.awssdk/protocol-core/2.30.26, Apache-2.0, approved, #19168
705713
maven/mavencentral/software.amazon.awssdk/regions/2.29.50, Apache-2.0, approved, #17631
706-
maven/mavencentral/software.amazon.awssdk/regions/2.30.21, Apache-2.0, approved, #19164
714+
maven/mavencentral/software.amazon.awssdk/regions/2.30.26, Apache-2.0, approved, #19164
707715
maven/mavencentral/software.amazon.awssdk/retries-spi/2.29.50, Apache-2.0, approved, #16997
708-
maven/mavencentral/software.amazon.awssdk/retries-spi/2.30.21, , restricted, clearlydefined
716+
maven/mavencentral/software.amazon.awssdk/retries-spi/2.30.26, Apache-2.0, approved, clearlydefined
709717
maven/mavencentral/software.amazon.awssdk/retries/2.29.50, Apache-2.0, approved, #17009
710-
maven/mavencentral/software.amazon.awssdk/retries/2.30.21, , restricted, clearlydefined
711-
maven/mavencentral/software.amazon.awssdk/s3-transfer-manager/2.30.21, , restricted, clearlydefined
718+
maven/mavencentral/software.amazon.awssdk/retries/2.30.26, Apache-2.0, approved, clearlydefined
719+
maven/mavencentral/software.amazon.awssdk/s3-transfer-manager/2.30.26, , restricted, clearlydefined
712720
maven/mavencentral/software.amazon.awssdk/s3/2.29.50, Apache-2.0, approved, #17629
713-
maven/mavencentral/software.amazon.awssdk/s3/2.30.21, , restricted, clearlydefined
721+
maven/mavencentral/software.amazon.awssdk/s3/2.30.26, Apache-2.0, approved, clearlydefined
714722
maven/mavencentral/software.amazon.awssdk/sdk-core/2.29.50, Apache-2.0, approved, #17016
715-
maven/mavencentral/software.amazon.awssdk/sdk-core/2.30.21, Apache-2.0, approved, #19167
723+
maven/mavencentral/software.amazon.awssdk/sdk-core/2.30.26, Apache-2.0, approved, #19167
716724
maven/mavencentral/software.amazon.awssdk/sts/2.29.50, Apache-2.0, approved, #17630
717725
maven/mavencentral/software.amazon.awssdk/third-party-jackson-core/2.29.50, Apache-2.0, approved, #17008
718-
maven/mavencentral/software.amazon.awssdk/third-party-jackson-core/2.30.21, , restricted, clearlydefined
726+
maven/mavencentral/software.amazon.awssdk/third-party-jackson-core/2.30.26, Apache-2.0, approved, clearlydefined
719727
maven/mavencentral/software.amazon.awssdk/utils/2.29.50, Apache-2.0, approved, #17625
720-
maven/mavencentral/software.amazon.awssdk/utils/2.30.21, Apache-2.0, approved, clearlydefined
728+
maven/mavencentral/software.amazon.awssdk/utils/2.30.26, Apache-2.0, approved, clearlydefined
721729
maven/mavencentral/software.amazon.eventstream/eventstream/1.0.1, Apache-2.0, approved, clearlydefined
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
# Handling of downward compatibility for a DSP version
2+
3+
## Decision
4+
5+
For a given DSP protocol version *N*, there is no restriction concerning backward compatibility towards the previous
6+
versions (*N-1*) implementation of the DSP protocol.
7+
8+
During the support of a certain DSP version *N*, the implementation has to be strictly backward compatible, i.e.,
9+
for two successive connector versions *X-1* and *X* that support both the DSP version *N*, if one participant changes
10+
from connector version *X-1* to version *X*, any interaction with connector version *X-1* is kept intact and has no
11+
breaking behavior. Additions to exchanged data models are in general not seen as breaking changes.
12+
13+
## Rationale
14+
15+
In general, the breaking change requirement of Catena-X has to be fulfilled as expressed in the
16+
[Operating model](https://catenax-ev.github.io/docs/operating-model/how-life-cycle-management). The requirement states
17+
that a dataspace participant can continuously exchange data with another participant without the need to be forced to
18+
update his system due to a change of the other participants service stack. This requires that data sent between
19+
consumer and provider must not change in a breaking fashion.
20+
21+
A backward compatibility contraint between DSP versions is neither needed nor possible over time, as
22+
23+
1. a dataspace participant should be able to control the connector version to use in his stack independently
24+
from other participants, as long as that version implements the DSP version(s) required by the dataspace
25+
at that point. If all required DSP version(s) are supported, there is no need for a backward compatibility
26+
constraint. Communication is still possible through previous DSP version(s).
27+
2. the DSP protocol and its upstream implementation does not support such a backward compatibility. To weaken the
28+
impact of a missing upstream backward compatibility would require a substantial effort with a high risk of not
29+
being able to compensate breaking changes. In summary, that is not a valid option.
30+
31+
## Approach
32+
33+
- The compatibility tests are enriched by tests that ensure the detection of breaking changes in relevant data models
34+
defined by the DSP protocol.
35+
This is achieved by tests which compare the returned data models to an expected result of the data model. There are
36+
two options to use for the comparison of exchanged data models:
37+
- For simpler data models, the expected data model is a handcrafted instance of the model that contains the minimum
38+
properties expected and the comparison checks that the returned data model is a superset of the expected model.
39+
- For more complex data models that are build deterministically, the expected result is recorded in an initial test
40+
run and later test executions are compared to the recorded model. If a mismatch occurs, the returned data model
41+
is compared to the expectation and if the change is reasonable the expected data model is recorded again to reflect
42+
the now relevant changes.

0 commit comments

Comments
 (0)