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.
- A newer release in the 2.8 line: Canton 2.8.12
- Newest Canton: Canton 3.6.4
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:
| Dependency | Version |
|---|---|
| Canton protocol versions | 3, 4, 5 |
Canton has been tested against the following versions of its dependencies:
| Dependency | Version |
|---|---|
| Java Runtime | OpenJDK 64-Bit Server VM Zulu11.70+15-CA (build 11.0.22+7-LTS, mixed mode) |
| Postgres | Recommended: 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) |
| Oracle | 19.20.0 |