Canton 2.7.6
This release contains minor bug fixes and added flexibility on how database connections can be configured.
- A newer release in the 2.7 line: Canton 2.7.9
- Newest Canton: Canton 3.6.4
Canton 2.7.6 has been released on November 29, 2023. 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 release contains minor bug fixes and added flexibility on how database connections can be configured.
Minor Improvements
DB connection checks don't contend with normal queries
Canton periodically checks the validity and health of its connection to the database. Those checks were previously competing with other database queries, sometimes leading to errors that would be retried but cause warnings. This is no longer the case.
Improved observability of ledger streams
The observability of the streams served over the ledger api has been improved in both logging and metrics.
- Most operations related to streams lifetime are now logged at
debuglevel rather thentrace - Metrics reporting number of active streams
metrics.daml.lapi.streams.activeare now collected always, independently of the rate limiting settings
Configuration Changes
Setting database connection pool sizes explicitly
The sizes of the connection pools used for interactions with the database storages inside the canton nodes are determined using a dedicated formula described in a documentation article on max connection settings:
The values obtained from that formula can now be overridden using explicit configuration settings for the read, write and ledger-api connection pools sizes:
canton.participants.participant.storage.parameters.connection-allocation.num-reads
canton.participants.participant.storage.parameters.connection-allocation.num-writes
canton.participants.participant.storage.parameters.connection-allocation.num-ledger-api
Similar parameters exist also for other canton node types:
canton.sequencers.sequencer.storage.parameters.connection-allocation...
canton.mediators.mediator.storage.parameters.connection-allocation...
canton.domain-managers.domain_manager.storage.parameters.connection-allocation...
The effective connection pool sizes are reported by the canton nodes at start-up
INFO c.d.c.r.DbStorageMulti$:participant=participant_b - Creating storage, num-reads: 5, num-writes: 4
Bugfixes
(23-033, Major): Mediator becomes non functional when encountering a database exception after HA failover
Issue Description
The mediator does not handle transient DB exceptions properly after it has transitioned from passive to active during an HA failover
Affected Deployments
Mediator
Affected Versions
2.5 to 2.7.5
Impact
Mediator becomes non functional when encountering a database exception after HA failover.
Symptom
After encountering an SQL exception, the application handler fails, and the mediator disconnects its sequencer client. After that the mediator stops processing messages.
Workaround
Restart the mediator node.
Likeliness
Needs a mediator to transition from active state to passive state and active state again, and then encounter a DB error. Not extremely likely but likelihood increases over time.
Recommendation
Upgrade to 2.7.6 or higher
Compatibility
The following Canton protocol and Ethereum sequencer contract 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.62+17-CA (build 11.0.18+10-LTS, mixed mode) |
| Postgres | postgres (PostgreSQL) 14.10 (Debian 14.10-1.pgdg120+1) |
| Oracle | 19.18.0 |