Skip to content
CCPEDIAby Unity Nodes
ReleasesCanton 2.3.20

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:

DependencyVersion
Canton protocol versions2.0.0, 3.0.0
Ethereum contract versions1.0.0, 1.0.1

Canton has been tested against the following versions of its dependencies:

DependencyVersion
Java RuntimeOpenJDK 64-Bit Server VM 18.9 (build 11.0.16+8, mixed mode, sharing)
Postgrespostgres (PostgreSQL) 14.12 (Debian 14.12-1.pgdg120+1)
Oracle19.15.0
Besubesu/v21.10.9/linux-x86_64/openjdk-java-11
Fabric2.2.2