Canton 2.3.20
This is a maintenance release, fixing critical issue which can occur if overly large transactions are submitted to the participant.
- The latest release in the 2.3 line.
- Newest Canton: Canton 3.6.4
Canton 2.3.20 has been released on July 10, 2024. You can download the Daml Open Source edition from the Daml Connect Github Release Section. The Enterprise edition is available on Artifactory. Please also consult the full documentation of this release.
Summary
This is a maintenance release, fixing critical issue which can occur if overly large transactions are submitted to the participant.
Bugfixes
(24-016, Critical): Incorrect key updates for transactions with many key updates on Oracle
Issue Description
If a very large transaction with more than 1000 contract key updates is submitted to the participant, the Oracle SQL query to update the contract keys table will fail. The error fails to be correctly propagated and the participant continues processing. As a result, the contract keys uniqueness check table will contain invalid entries, leading to key uniqueness not being checked correctly.
Affected Deployments
Participant on Oracle
Affected Versions
2.3.0-2.3.19 2.4-2.6, 2.7.0-2.7.9 2.8.0-2.8.8
Impact
Key uniqueness check will not work for keys that are updated by very large transactions.
Symptom
Participant logs the warning "java.sql.SQLSyntaxErrorException: ORA-01795: maximum number of expressions in a list is 1000"
Workaround
Ensure you do not submit large transactions that create and archive more than 999 contracts that use contract keys.
Likeliness
Deterministic with very large transactions that yield more than 1000 key updates.
Recommendation
Upgrade during the next maintenance window. If you are submitting very large transactions with many contract key updates, update immediately.
Compatibility
The following Canton protocol and Ethereum sequencer contract versions are supported:
| Dependency | Version |
|---|---|
| Canton protocol versions | 2.0.0, 3.0.0 |
| Ethereum contract versions | 1.0.0, 1.0.1 |
Canton has been tested against the following versions of its dependencies:
| Dependency | Version |
|---|---|
| Java Runtime | OpenJDK 64-Bit Server VM 18.9 (build 11.0.16+8, mixed mode, sharing) |
| Postgres | postgres (PostgreSQL) 14.12 (Debian 14.12-1.pgdg120+1) |
| Oracle | 19.15.0 |
| Besu | besu/v21.10.9/linux-x86_64/openjdk-java-11 |
| Fabric | 2.2.2 |