Skip to content
CCPEDIAby Unity Nodes
ReleasesCanton 2.8.9

Canton 2.8.9

This is a maintenance release that fixes a critical bug on Oracle, a regression of a critical bug, and provides minor logging improvements.

Canton 2.8.9 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 that fixes a critical bug on Oracle, a regression of a critical bug, and provides minor logging improvements.

Bugfixes

Fix Regression of 24-002

A regression of the bug fix for 24-002, which was released in 2.7.7, was introduced in 2.8.x where the bug 24-002 was not properly fixed. That regression is resolved as part of 2.8.9 and 24-002 properly fixed.

(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.

What’s New

Minor Improvements

Logging of Conflict Reason

When a command is rejected due to conflict (e.g. usage of an inactive contract), every participant detecting the conflict will now log the resource causing the conflict at INFO level. This change affects the following error codes: LOCAL_VERDICT_LOCKED_CONTRACTS, LOCAL_VERDICT_LOCKED_KEYS, LOCAL_VERDICT_INACTIVE_CONTRACTS, LOCAL_VERDICT_DUPLICATE_KEY, LOCAL_VERDICT_INCONSISTENT_KEY, LOCAL_VERDICT_CREATES_EXISTING_CONTRACTS

Compatibility

The following Canton protocol versions are supported:

DependencyVersion
Canton protocol versions3, 4, 5

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

DependencyVersion
Java RuntimeOpenJDK 64-Bit Server VM Zulu11.70+15-CA (build 11.0.22+7-LTS, mixed mode)
PostgresRecommended: PostgreSQL 12.19 (Debian 12.19-1.pgdg120+1) – Also tested: PostgreSQL 11.16 (Debian 11.16-1.pgdg90+1), PostgreSQL 13.15 (Debian 13.15-1.pgdg120+1), PostgreSQL 14.12 (Debian 14.12-1.pgdg120+1), PostgreSQL 15.7 (Debian 15.7-1.pgdg120+1)
Oracle19.20.0