Canton 2.10.4
This maintenance release updates internal dependencies to address security vulnerabilities, fixes a race condition and performance limitations in hard domain migration, and improves the system under faulty network…
- A newer release in the 2.10 line: Canton 2.10.6
- Newest Canton: Canton 3.6.4
Canton 2.10.4 has been released on March 26, 2026. 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 maintenance release updates internal dependencies to address security vulnerabilities, fixes a race condition and performance limitations in hard domain migration, and improves the system under faulty network conditions.
We recommend upgrading during your next scheduled maintenance window.
What’s New
Domain Migration Performance Improvement
This implementation significantly reducing memory consumption while improving throughput for massive datasets.
The following configuration options allow for fine-tuning, throttling, and concurrency. Particular values are load and environment specific, and require thorough testing.
This is an example for 38 million active contracts:
canton.participants.par {
storage {
config.queueSize = 10000
parameters.max-connections = 20
}
parameters {
batching {
migration-read-batch-size = 25000
migration-write-batch-size = 250000
migration-max-nb-contracts-per-rc = 10000
repair-internal-batch-size = 2500
repair-store-parallelism = 10
acs-commitment-processor-replay-batch-size = 20000
}
}
}
Minor Improvements
- Set aggressive TCP keepalive settings on Postgres connections to enable a quick HA failover when a DB connection is stuck. The system-level default of 2h on Linux to trigger a TCP keep-alive results in a failing HA failover for 2h. The new TCP keep-alive setting of 10 seconds to initiate a TCP keep-alive enables quick failover.
- Calls to
SequencerAuthenticationService.Challengewill now timeout if incomplete afterparameters.timeouts.processing.network(defaults to 2 mins). This will cause the existing retry mechanism kick in.
Update dependencies
logback: 1.14.4 -> 1.5.24 jackson: 2.14.3 -> 2.15.4 commons-io: 2.11.0 -> 2.14.0 commons-lang3: 3.12.0 -> 3.18.0 log4j-core: 2.17.0 -> 2.25.3 bouncycastle: 1.70 -> 1.83
This addresses:
- CVE-2024-12798
- CVE-2025-11226
- CVE-2025-52999
- CVE-2023-3894
- CVE-2024-47554
- CVE-2025-48924
- CVE-2021-44832
- CVE-2025-68161
- CVE-2024-29857
- CVE-2024-34447
Bugfixes
(26-001, Major): Race condition during hard domain migration initialization
Issue Description
The command migrateDomain does not properly synchronize the topology state. As a result, hard migration may fail during migration with BROKEN_DOMAIN_MIGRATION, or it may silently corrupt the contract keys state.
Affected Deployments
Participant nodes
Affected Versions
< 2.10.4
Impact
Hard migration may either fail during the operational procedure, or the contract key state may become corrupt.
Symptom
The migrateDomain may fail either with BROKEN_DOMAIN_MIGRATION.
If the migration succeeded, subsequent updates to contracts with the given keys would fail with "Unknown keys are to be reassigned".
Workaround
A potential, not validated workaround would be to add another topology transaction to the source domain before attempting the migration.
Likeliness
Race condition that is only present in 1% of the cases, if the participant nodes topology state prior to migration is exactly a multiple of 100.
Recommendation
Upgrade to 2.10.4 before attempting a domain migration.
Compatibility
The following Canton protocol versions are supported:
| Dependency | Version |
|---|---|
| Canton protocol versions | 5, 7 |
Canton has been tested against the following versions of its dependencies:
| Dependency | Version |
|---|---|
| Java Runtime | OpenJDK 64-Bit Server VM Zulu11.72+19-CA (build 11.0.23+9-LTS, mixed mode) |
| Postgres | Recommended: PostgreSQL 12.22 (Debian 12.22-1.pgdg120+1) – Also tested: PostgreSQL 11.16 (Debian 11.16-1.pgdg90+1), PostgreSQL 13.23 (Debian 13.23-1.pgdg13+1), PostgreSQL 14.22 (Debian 14.22-1.pgdg13+1), PostgreSQL 15.17 (Debian 15.17-1.pgdg13+1) |
| Oracle | 19.20.0 |