Summary
This is a maintenance release that addresses several issues.
What’s New
Canton
The view reinterpretation of an exercise of a retroactive interface could possibly fail because the engine does not explicitly request the interface package. This has been fixed.
A participant now handles unauthenticated contract IDs in PV5 when upgraded from PV3.
Since 2.9.0, the Hard Synchronization Domain Migration command repair.migrate_domain aborted when it detected in-flight submissions on the participant. It now also checks for in-flight transactions.
A bug was fixed where a participant replica failed to become active when a blocked database connection health check occurs. This prevented the other replica to transition from passive to active.
A very rare bug was fixed that could happen when a participant replica becomes active and it does not refresh its package service cache. If a vetting attempt is made on the participant that fails because the package is not uploaded, the "missing package" response is cached. If the package is then uploaded to another replica, and we switch to the original participant, this package service cache will still record the package as nonexistent. When the package is used in a transaction, there will be a local model conformance error as the transaction validator cannot find the package, whereas other parts of the participant that don't use the package service can successfully locate it.
A participant could fail to start if quickly acquiring and then losing DB connection during the bootstrap step where a passive node would not successfully transition but waited indefinitely. This is now handled.
The current commands for single key rotation with sequencer and mediator nodes (rotate_node_key and rotate_kms_node_key) were failing because they do not have the necessary domain manager reference needed to find the old key and export the new key. This is fixed.
The bootstrap of a domain failed if the mediator or sequencer shared the same key as the domain manager. A KeyAlreadyExists error when the signing key is shared between the mediator/sequencer and the domain manager.
Daml Language
Added package IDs in some warnings to make debugging easier.
PQS
Reverted a Netty dependency update which could stall connections under specific network traffic circumstances.
Archive event handling was enhanced which results in the read API having a more precise FQN scheme for exercises changes from
select * from exercises('package:module:choice');
into
select * from exercises('package:module:template:choice');
Download and Installation
The Daml 2.9.5 SDK has been released. You can install it using the command: daml install 2.9.5.
The table below lists how you can download Daml Enterprise or individual components.
If you are using Oracle JVM and testing security provider signatures, note that the Canton JAR file embeds the Bouncy Castle provider as a dependency. To enable the JVM to verify the signature, put the bcprov JAR on the classpath before the Canton standalone JAR. For example:
java -cp bcprov-jdk15on-1.70.jar:canton-with-drivers-2.9.5-all.jar com.digitalasset.canton.CantonEnterpriseApp
Note: These Docker images are designed to be suitable for production use, with minimal size and attack surface. Minimal images can sometimes make debugging difficult (e.g. no shell in the containers). For convenience, we provide “debug” versions of each of the above images, which you can access by appending “-debug” to the image tag (e.g. digitalasset-docker.jfrog.io/http-json:2.9.5-debug).